Advertisement
Mochinov

Untitled

Apr 8th, 2022
987
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.22 KB | None | 0 0
  1. from django.db import models
  2. from django.utils import timezone
  3.  
  4. from crm.models import Project
  5. from crm.models import get_base_record_for_project
  6.  
  7. from .user import User
  8. from misc.generic_models.meta_mixin import MetaMixin
  9.  
  10.  
  11. class Property(models.Model, MetaMixin):
  12.     """Имущество  (материальные ценности)"""
  13.  
  14.     _id_meta = [MetaMixin.FieldTags.PKField, MetaMixin.FieldTags.NotForLog]
  15.  
  16.     name = models.CharField(verbose_name='Название имущества', max_length=255, null=False, blank=False)
  17.     declared_value = models.PositiveIntegerField(verbose_name='Объявленная стоимость', null=True, blank=True)
  18.     comment = models.TextField(verbose_name='Комментарий', null=True, blank=True)
  19.     serial_number = models.CharField(verbose_name='Серийный номер', max_length=255, null=True, blank=True)
  20.  
  21.     project = models.ForeignKey(
  22.         Project, verbose_name='проект',
  23.         on_delete=models.PROTECT,
  24.         default=get_base_record_for_project,
  25.         blank=True,
  26.     )
  27.     _project_meta = [MetaMixin.FieldTags.ProjectField]
  28.  
  29.     def __str__(self):
  30.         return self.name
  31.  
  32.     __repr__ = __str__
  33.  
  34.     class Meta:
  35.         verbose_name = 'Имущество'
  36.         verbose_name_plural = 'Имущество'
  37.  
  38.  
  39. class UserProperty(models.Model, MetaMixin):
  40.     """Имущество у сотрудника"""
  41.  
  42.     meta_tags = [MetaMixin.ModelTags.UserData]
  43.  
  44.     transfer_date = models.DateTimeField(verbose_name='Дата передачи', null=False, blank=False, default=timezone.now)
  45.     declared_value = models.PositiveIntegerField(verbose_name='Количество', null=True, blank=True)
  46.     return_date = models.DateTimeField(verbose_name='Дата возврата', null=True, blank=True)
  47.  
  48.     user_property = models.ForeignKey(
  49.         Property,
  50.         verbose_name='Имущество выданное сотруднику',
  51.         related_name='property',
  52.         on_delete=models.CASCADE,
  53.         null=False,
  54.         blank=False,
  55.     )
  56.  
  57.  
  58.     _id_meta = [MetaMixin.FieldTags.PKField, MetaMixin.FieldTags.NotForLog]# Мета данные поля id
  59.  
  60.     user = models.ForeignKey(
  61.         User,
  62.         verbose_name='Ответственный сотрудник по возврату данных',
  63.         related_name='employee_property',
  64.         on_delete=models.CASCADE,
  65.         null=False,
  66.         blank=False,
  67.     )
  68.  
  69.     _user_meta = [MetaMixin.FieldTags.UserField]
  70.  
  71.     project = models.ForeignKey(
  72.         Project, verbose_name='проект',
  73.         on_delete=models.PROTECT,
  74.         default=get_base_record_for_project,
  75.         blank=True,
  76.     )
  77.     _project_meta = [MetaMixin.FieldTags.ProjectField]
  78.  
  79.  
  80.     def check_employee_property(self) -> bool:
  81.         """Проверка на сохранённое имущество у сотрудника"""
  82.  
  83.         if self.return_date:
  84.             return False
  85.  
  86.         return True
  87.    
  88.     def __str__(self):
  89.         return self.employee
  90.  
  91.     __repr__ = __str__
  92.  
  93.  
  94.     class Meta:
  95.         verbose_name = 'Имущество у сотрудника'
  96.         verbose_name_plural = 'Имущество у сотрудника'
  97.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement