Fixed userprofile.custom_role_id updating issue in update_role, fixed userprofile.changed_by logging

This commit is contained in:
Timofey Mazurov 2021-03-17 16:00:55 +03:00
parent 67da8681e5
commit 838d6926fc

View File

@ -119,14 +119,16 @@ class ZendeskAdmin:
raise ValueError('invalid access_controller`s login data') 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** меняет роль пользователя. Функция **update_role** меняет роль пользователя.
""" """
zendesk = ZendeskAdmin() zendesk = ZendeskAdmin()
user = zendesk.get_user(user_profile.user.email) user = zendesk.get_user(user_profile.user.email)
user.custom_role_id = role user.custom_role_id = role
user_profile.custom_role_id = role
zendesk.admin.users.update(user) zendesk.admin.users.update(user)
user_profile.save()
def make_engineer(user_profile: UserProfile) -> UserProfile: def make_engineer(user_profile: UserProfile) -> UserProfile:
@ -390,19 +392,25 @@ class StatisticData:
class DatabaseHandler(logging.Handler): class DatabaseHandler(logging.Handler):
def __init__(self): def __init__(self):
logging.Handler.__init__(self) logging.Handler.__init__(self)
self.database = RoleChangeLogs()
def emit(self, record): def emit(self, record):
user = record.msg database = RoleChangeLogs()
self.database.name = user.name users = record.msg
self.database.user = user.user if users[1]:
self.database.changed_by = user.user 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']: 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']: elif user.custom_role_id == ROLES['light_agent']:
self.database.old_role = ROLES['engineer'] database.old_role = ROLES['engineer']
self.database.new_role = user.custom_role_id database.new_role = user.custom_role_id
self.database.save() database.save()
class CsvFormatter(logging.Formatter): class CsvFormatter(logging.Formatter):
@ -410,32 +418,41 @@ class CsvFormatter(logging.Formatter):
logging.Formatter.__init__(self) logging.Formatter.__init__(self)
def format(self, record): 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 = ''
msg += user.name msg += user.name
if user.custom_role_id == ROLES['engineer']: if user.custom_role_id == ROLES['engineer']:
msg += ',engineer,' msg += ',engineer,'
elif user.custom_role_id == ROLES['light_agent']: elif user.custom_role_id == ROLES['light_agent']:
msg.append('light_agent') msg += ',light_agent,'
time = str(timezone.now().today()) time = str(timezone.now().today())
msg += time[:16] msg += time[:16]
msg += ',' msg += ','
msg += user.name msg += admin.name
return msg return msg
def log(user): def log(user, admin=0):
""" """
Осуществляет запись логов в базу данных и csv файл Осуществляет запись логов в базу данных и csv файл
:param user: request.user.userprofile :param admin:
:param user:
:return: :return:
""" """
users = [user, admin]
logger = logging.getLogger('MY_LOGGER')
if not logger.hasHandlers():
dbhandler = DatabaseHandler() dbhandler = DatabaseHandler()
csvformatter = CsvFormatter() csvformatter = CsvFormatter()
csvhandler = logging.FileHandler('logs.csv', "a") csvhandler = logging.FileHandler('logs.csv', "a")
csvhandler.setFormatter(csvformatter) csvhandler.setFormatter(csvformatter)
logger = logging.getLogger('MY_LOGGER')
logger.addHandler(dbhandler) logger.addHandler(dbhandler)
logger.addHandler(csvhandler) logger.addHandler(csvhandler)
logger.setLevel('INFO') logger.setLevel('INFO')
logger.info(user) logger.info(users)