Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class ConnectingUserToAccess(models.Model, MetaMixin):
- """Подключение сотрудника к доступам"""
- class ErrorHandler:
- """Статусы ошибок"""
- FAIL_TO_FIND_OBJ = 'Объект не найден.'
- class Status(models.TextChoices):
- """Статус набора данных."""
- REQUEST_COMPLETED = 'request_completed', 'Запрос выполнен'
- IN_PROCESS = 'in_process', 'В процессе'
- ARCHIVE = 'archive', 'В архиве'
- NOT_SET = '', 'Отсутствует'
- meta_tags = [MetaMixin.ModelTags.UserData]
- transfer_date = models.DateTimeField('Дата передачи', null=False, blank=False, default=timezone.now)
- return_date = models.DateTimeField('Дата возврата', null=True, blank=True)
- comment = models.TextField(verbose_name='Комментарий', null=True, blank=True)
- status = models.CharField('Статус данных', max_length=18, choices=Status.choices, default=Status.IN_PROCESS)
- user_access = models.ForeignKey(
- UserAccess,
- verbose_name='Назначение доступа сотруднику',
- related_name='access',
- on_delete=models.CASCADE,
- null=False,
- blank=False,
- )
- _id_meta = [MetaMixin.FieldTags.PKField, MetaMixin.FieldTags.NotForLog]# Мета данные поля id
- supervisor = models.ForeignKey(
- User,
- verbose_name='Ответственный',
- related_name='supervisor_access',
- on_delete=models.CASCADE,
- null=True,
- blank=True,
- )
- user = models.ForeignKey(
- User,
- verbose_name='Ответственный по возврату данных',
- related_name='user_access',
- on_delete=models.CASCADE,
- null=False,
- blank=False,
- )
- _user_meta = [MetaMixin.FieldTags.UserField]
- project = models.ForeignKey(
- Project, verbose_name='проект',
- on_delete=models.PROTECT,
- default=get_base_record_for_project,
- blank=True,
- )
- _project_meta = [MetaMixin.FieldTags.ProjectField]
- objects = ConnectingUserToAccessManager()
- def check_accesses_are_open(self) -> bool:
- """Проверка на открытые доступы у сотрудника"""
- if self.return_date:
- return False
- return True
- def __str__(self):
- return str(self.user_access)
- __repr__ = __str__
- class Meta:
- verbose_name = 'Доступы сотрудника'
- verbose_name_plural = 'Доступы сотрудника'
- ordering = ['-id']
- class UserProperty(models.Model, MetaMixin):
- """Имущество у сотрудника"""
- class ErrorHandler:
- """Статусы ошибок"""
- FAIL_TO_FIND_OBJ = 'Объект не найден.'
- class Status(models.TextChoices):
- """Статус набора данных."""
- REQUEST_COMPLETED = 'request_completed', 'Запрос выполнен'
- ARCHIVE = 'archive', 'В архиве'
- NOT_SET = '', 'Отсутствует'
- IN_PROCESS = 'in_process', 'В процессе'
- meta_tags = [MetaMixin.ModelTags.UserData]
- transfer_date = models.DateTimeField(verbose_name='Дата передачи', null=False, blank=False, default=timezone.now)
- quantity = models.PositiveIntegerField(verbose_name='Количество', null=True, blank=True)
- return_date = models.DateTimeField(verbose_name='Дата возврата', null=True, blank=True)
- status = models.CharField('Статус данных', max_length=18, choices=Status.choices, default=Status.IN_PROCESS)
- user_property = models.ForeignKey(
- Property,
- verbose_name='Имущество выданное сотруднику',
- related_name='property',
- on_delete=models.CASCADE,
- null=False,
- blank=False,
- )
- _id_meta = [MetaMixin.FieldTags.PKField, MetaMixin.FieldTags.NotForLog]
- supervisor = models.ForeignKey(
- User,
- verbose_name='Ответственный',
- related_name='supervisor_property',
- on_delete=models.CASCADE,
- null=True,
- blank=True,
- )
- user = models.ForeignKey(
- User,
- verbose_name='Ответственный по возврату данных',
- related_name='user_property',
- on_delete=models.CASCADE,
- null=False,
- blank=False,
- )
- _user_meta = [MetaMixin.FieldTags.UserField]
- project = models.ForeignKey(
- Project, verbose_name='проект',
- on_delete=models.PROTECT,
- default=get_base_record_for_project,
- blank=True,
- )
- _project_meta = [MetaMixin.FieldTags.ProjectField]
- objects = UserPropertyManager()
- def check_employee_property(self) -> bool:
- """Проверка на сохранённое имущество у сотрудника"""
- if self.return_date:
- return False
- return True
- def __str__(self):
- return str(self.user_property.name)
- __repr__ = __str__
- class Meta:
- verbose_name = 'Имущество у сотрудника'
- verbose_name_plural = 'Имущество у сотрудника'
- ordering = ['-id']
Add Comment
Please, Sign In to add comment