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')
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)