34 lines
1.6 KiB
Python
34 lines
1.6 KiB
Python
from django.db import models
|
|
from django.contrib.auth.models import User
|
|
from django.db.models.signals import post_save
|
|
from django.dispatch import receiver
|
|
|
|
|
|
class UserProfile(models.Model):
|
|
"""Модель профиля пользователя"""
|
|
|
|
user = models.OneToOneField(to=User, on_delete=models.CASCADE, help_text='Пользователь')
|
|
role = models.CharField(default='None', max_length=100, help_text='Код роли пользователя')
|
|
image = models.URLField(null=True, blank=True, help_text='Аватарка')
|
|
name = models.CharField(default='None', max_length=100, help_text='Имя пользователя на нашем сайте')
|
|
|
|
|
|
@receiver(post_save, sender=User)
|
|
def create_user_profile(sender, instance, created, **kwargs):
|
|
if created:
|
|
UserProfile.objects.create(user=instance)
|
|
|
|
|
|
@receiver(post_save, sender=User)
|
|
def save_user_profile(sender, instance, **kwargs):
|
|
instance.userprofile.save()
|
|
|
|
|
|
class RoleChangeLogs(models.Model):
|
|
"""Модель для логирования изменений ролей пользователя"""
|
|
user = models.ForeignKey(to=User, on_delete=models.CASCADE, help_text='Пользователь, которому присвоили другую роль')
|
|
name = models.TextField(help_text='Имя пользователя')
|
|
new_role = models.TextField(help_text='Присвоенная роль')
|
|
change_time = models.DateTimeField(help_text='Дата и время изменения роли')
|
|
changed_by = models.ForeignKey(to=User, on_delete=models.CASCADE, related_name='changed_by', help_text='Кем была изменена роль')
|