55 lines
2.2 KiB
Python
55 lines
2.2 KiB
Python
from django.contrib.auth.models import User
|
|
from django.db import models
|
|
from django.db.models.signals import post_save
|
|
from django.dispatch import receiver
|
|
|
|
|
|
class UserProfile(models.Model):
|
|
"""
|
|
Модель профиля пользователя
|
|
|
|
:param user: OneToOneField к модели :class:`django.contrib.auth.models.User`
|
|
:param role: Код роли пользователя
|
|
:type role: :class:`integer`
|
|
:param image: Аватарка
|
|
:type image: :class:`img`
|
|
:param name: Имя пользователя на нашем сайте
|
|
:type name: :class:`str`
|
|
"""
|
|
|
|
user = models.OneToOneField(to=User, on_delete=models.CASCADE)
|
|
role = models.CharField(default='None', max_length=100)
|
|
image = models.URLField(null=True, blank=True)
|
|
name = models.CharField(default='None', max_length=100)
|
|
|
|
|
|
@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):
|
|
"""
|
|
Модель для логирования изменений ролей пользователя
|
|
|
|
:param user: Пользователь, которому присвоили другую роль, ForeignKey к модели :class:`django.contrib.auth.models.User`
|
|
:param name: Имя пользователя
|
|
:type name: :class:`str`
|
|
:param new_role: Присвоенная роль
|
|
:type new_role: :class:`str`
|
|
:param change_time: Дата изменения роли`
|
|
:type change_time: :class:`datetime.datetime`
|
|
:param changed_by: Кем была изменена роль, ForeignKey к модели :class:`django.contrib.auth.models.User`
|
|
"""
|
|
user = models.ForeignKey(to=User, on_delete=models.CASCADE)
|
|
name = models.TextField()
|
|
new_role = models.TextField()
|
|
change_time = models.DateTimeField()
|
|
changed_by = models.ForeignKey(to=User, on_delete=models.CASCADE, related_name='changed_by')
|