From 838d6926fc43987d0060c8e91304125a72365bf8 Mon Sep 17 00:00:00 2001 From: Timofey Mazurov Date: Wed, 17 Mar 2021 16:00:55 +0300 Subject: [PATCH] Fixed userprofile.custom_role_id updating issue in update_role, fixed userprofile.changed_by logging --- main/extra_func.py | 61 +++++++++++++++++++++++++++++----------------- 1 file changed, 39 insertions(+), 22 deletions(-) diff --git a/main/extra_func.py b/main/extra_func.py index 3829e64..7f0d2e8 100644 --- a/main/extra_func.py +++ b/main/extra_func.py @@ -119,14 +119,16 @@ class ZendeskAdmin: raise ValueError('invalid access_controller`s login data') -def update_role(user_profile: UserProfile, role: str) -> UserProfile: +def update_role(user_profile: UserProfile, role: int) -> UserProfile: """ Функция **update_role** меняет роль пользователя. """ zendesk = ZendeskAdmin() user = zendesk.get_user(user_profile.user.email) user.custom_role_id = role + user_profile.custom_role_id = role zendesk.admin.users.update(user) + user_profile.save() def make_engineer(user_profile: UserProfile) -> UserProfile: @@ -390,19 +392,25 @@ class StatisticData: class DatabaseHandler(logging.Handler): def __init__(self): logging.Handler.__init__(self) - self.database = RoleChangeLogs() def emit(self, record): - user = record.msg - self.database.name = user.name - self.database.user = user.user - self.database.changed_by = user.user + database = RoleChangeLogs() + users = record.msg + if users[1]: + user = users[0] + admin = users[1] + elif not users[1]: + user = users[0] + admin = users[0] + database.name = user.name + database.user = user.user + database.changed_by = admin.user if user.custom_role_id == ROLES['engineer']: - self.database.old_role = ROLES['light_agent'] + database.old_role = ROLES['light_agent'] elif user.custom_role_id == ROLES['light_agent']: - self.database.old_role = ROLES['engineer'] - self.database.new_role = user.custom_role_id - self.database.save() + database.old_role = ROLES['engineer'] + database.new_role = user.custom_role_id + database.save() class CsvFormatter(logging.Formatter): @@ -410,32 +418,41 @@ class CsvFormatter(logging.Formatter): logging.Formatter.__init__(self) def format(self, record): - user = record.msg + users = record.msg + if users[1]: + user = users[0] + admin = users[1] + elif not users[1]: + user = users[0] + admin = users[0] msg = '' msg += user.name if user.custom_role_id == ROLES['engineer']: msg += ',engineer,' elif user.custom_role_id == ROLES['light_agent']: - msg.append('light_agent') + msg += ',light_agent,' time = str(timezone.now().today()) msg += time[:16] msg += ',' - msg += user.name + msg += admin.name return msg -def log(user): +def log(user, admin=0): """ Осуществляет запись логов в базу данных и csv файл - :param user: request.user.userprofile + :param admin: + :param user: :return: """ - dbhandler = DatabaseHandler() - csvformatter = CsvFormatter() - csvhandler = logging.FileHandler('logs.csv', "a") - csvhandler.setFormatter(csvformatter) + users = [user, admin] logger = logging.getLogger('MY_LOGGER') - logger.addHandler(dbhandler) - logger.addHandler(csvhandler) + if not logger.hasHandlers(): + dbhandler = DatabaseHandler() + csvformatter = CsvFormatter() + csvhandler = logging.FileHandler('logs.csv', "a") + csvhandler.setFormatter(csvformatter) + logger.addHandler(dbhandler) + logger.addHandler(csvhandler) logger.setLevel('INFO') - logger.info(user) + logger.info(users)