Files
Rasadyar_Hamedan/authentication/log.py
2026-01-18 11:42:00 +03:30

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