83 lines
2.7 KiB
Python
83 lines
2.7 KiB
Python
import time
|
|
from functools import wraps
|
|
|
|
from authentication.models import Log, SystemUserProfile
|
|
import requests
|
|
|
|
|
|
def log_function_info(func):
|
|
@wraps(func)
|
|
def wrapper(request, *args, **kwargs):
|
|
start_time = time.time()
|
|
response = func(request, *args, **kwargs)
|
|
duration = time.time() - start_time
|
|
log = Log(
|
|
user=request.user,
|
|
function_name=func.__name__,
|
|
request=request,
|
|
response=response,
|
|
request_body=request.data,
|
|
response_body=response.data,
|
|
duration=duration,
|
|
status=response.status_code
|
|
)
|
|
log.save()
|
|
return response
|
|
|
|
return wrapper
|
|
|
|
|
|
def log_viewset_info(func):
|
|
@wraps(func)
|
|
def wrapper(viewset, request, *args, **kwargs):
|
|
start_time = time.time()
|
|
response = func(viewset, request, *args, **kwargs)
|
|
duration = time.time() - start_time
|
|
log = Log(
|
|
user=request.user,
|
|
function_name=func.__name__,
|
|
request=request,
|
|
response=response,
|
|
request_body=request.data,
|
|
response_body=response.data,
|
|
duration=duration,
|
|
status=response.status_code
|
|
)
|
|
log.save()
|
|
return response
|
|
|
|
return wrapper
|
|
|
|
|
|
def log_sms(func):
|
|
@wraps(func)
|
|
def wrapper(request, *args, **kwargs):
|
|
response = func(request, *args, **kwargs)
|
|
operator = SystemUserProfile.objects.get(user=request.user)
|
|
roles = None
|
|
users = None
|
|
message = request.data['message']
|
|
if 'role' in request.data.keys():
|
|
roles = request.data['role']
|
|
if 'user' in request.data.keys():
|
|
users = request.data['user']
|
|
|
|
if roles != None and users != None:
|
|
users = SystemUserProfile.objects.filter(role__name__in=roles, key__in=users,
|
|
province=operator.province).order_by('id')
|
|
elif roles != None:
|
|
users = SystemUserProfile.objects.filter(role__name__in=roles, province=operator.province).order_by('id')
|
|
else:
|
|
users = SystemUserProfile.objects.filter(key__in=users, province=operator.province).order_by('id')
|
|
|
|
for user in users:
|
|
u = "http://webservice.sahandsms.com/newsmswebservice.asmx/SendPostUrl?username=hamedan&password=ha123456&from=30002501&to={}&message={}".format(
|
|
user.mobile, message)
|
|
url = u.format()
|
|
payload = {}
|
|
headers = {"Content-Type": "application/x-www-form-urlencoded"}
|
|
r = requests.request("GET", url, headers=headers, data=payload)
|
|
return response
|
|
|
|
return wrapper
|