Advertisement
Mochinov

Untitled

Apr 7th, 2022 (edited)
930
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.29 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 EmployeeProperty(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.     _project_meta = [MetaMixin.FieldTags.ProjectField]
  49.  
  50.     employee_property = models.ForeignKey(
  51.         Property,
  52.         verbose_name='Имущество выданное сотруднику',
  53.         related_name='property',
  54.         on_delete=models.CASCADE,
  55.         null=False,
  56.         blank=False,
  57.     )
  58.  
  59.  
  60.     _id_meta = [MetaMixin.FieldTags.PKField, MetaMixin.FieldTags.NotForLog]# Мета данные поля id
  61.  
  62.     user = models.ForeignKey(
  63.         User,
  64.         verbose_name='Ответственный сотрудник по возврату данных',
  65.         related_name='employee_property',
  66.         on_delete=models.CASCADE,
  67.         null=False,
  68.         blank=False,
  69.     )
  70.  
  71.     _user_meta = [MetaMixin.FieldTags.UserField]
  72.  
  73.     project = models.ForeignKey(
  74.         Project, verbose_name='проект',
  75.         on_delete=models.PROTECT,
  76.         default=get_base_record_for_project,
  77.         blank=True,
  78.     )
  79.     _project_meta = [MetaMixin.FieldTags.ProjectField]
  80.  
  81.  
  82.     def check_employee_property(self) -> bool:
  83.         """Проверка на сохранённое имущество у сотрудника"""
  84.  
  85.         if self.return_date:
  86.             return False
  87.  
  88.         return True
  89.    
  90.     def __str__(self):
  91.         return self.employee
  92.  
  93.     __repr__ = __str__
  94.  
  95.  
  96.     class Meta:
  97.         verbose_name = 'Имущество у сотрудника'
  98.         verbose_name_plural = 'Имущество у сотрудника'
  99.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement