diff --git a/main/extra_func.py b/main/extra_func.py index 691bd37..5fe7edf 100644 --- a/main/extra_func.py +++ b/main/extra_func.py @@ -1,13 +1,18 @@ +import logging import os +from django.utils import timezone from zenpy import Zenpy from zenpy.lib.exception import APIException -from main.models import UserProfile +from main.models import UserProfile, RoleChangeLogs from access_controller.settings import ZENDESK_ROLES as ROLES +# from access_controller.main.models import RoleChangeLogs + + class ZendeskAdmin: """ Класс **ZendeskAdmin** существует, чтобы в каждой фунциии отдельно не проверять аккаунт администратора @@ -28,7 +33,7 @@ class ZendeskAdmin: email: str = os.getenv('ACCESS_CONTROLLER_API_EMAIL') token: str = os.getenv('ACCESS_CONTROLLER_API_TOKEN') password: str = os.getenv('ACCESS_CONTROLLER_API_PASSWORD') - _instance=None + _instance = None def __new__(cls, *args, **kwargs): if cls._instance is None: @@ -191,3 +196,27 @@ def check_user_auth(email: str, password: str) -> bool: except APIException: return False return True + + +class DatabaseHandler(logging.Handler): + def __init__(self): + logging.Handler.__init__(self) + self.database = RoleChangeLogs() + + def emit(self, record): + # admin = ZendeskAdmin() + user = record.msg + # data = UserProfile.objects.filter(user=user.user) + self.database.name = user.name + self.database.new_role = user.role + self.database.user = user.user + self.database.changed_by = user.user + self.database.save() + + +def log(user): + dbhandler = DatabaseHandler() + logging.getLogger('MY_LOGGER').addHandler(dbhandler) + logger = logging.getLogger('MY_LOGGER') + logger.setLevel('INFO') + logger.info(user)