123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 |
- import os
- from django.contrib.auth import get_user_model
- from django.db import models
- from dbsynce.models.company import Company
- from tickets.models import Ticket
- from dbsynce.docs.database.documents import Documents as HelpTexts
- from core.settings_vars import METASERVICE_ID
- class Documents(models.Model):
- """
- Documents - это одна таблица со всеми документами.
- Вообще в концепции предполагалось, что таких таблиц должно быть много под каждый тип для удобства поиска.
- То есть отдельно таблица с паспортами, отдельно с правами, отдельно с какими-нибудь разрешениями и так далее.
- Что пока непонятно - документов может быть много разных.
- """
- DOC_TYPES = [
- ("01", "Паспорт"),
- ("02", "ИНН"),
- ("03", "СНИЛС"),
- ("04", "Cвидетельство о регистрации компании"),
- ("05", "Cистема налогообложения"),
- ("06", "Доверенность / Приказ"),
- ("07", "Права / Лицензия"),
- ("08", "Документ, подтверждающий собственность"),
- ("09", "Документ об образовании"),
- ("10", "Медицинская книжка"),
- ("11", "Cправка об отсутствии судимости"),
- ("12", "Договор (в том числе о трудоустройстве)"),
- ("13", "Фотография"),
- ("99", "Иное"),
- ]
- DOC_TYPES_DICT = dict(DOC_TYPES)
-
-
- id_metaservice = models.PositiveIntegerField(
- default=METASERVICE_ID,
- help_text=HelpTexts.id_metaservice
- )
-
- check_date = models.DateTimeField(
- auto_now_add=True,
- help_text="timestamp проверки"
- )
- check_level = models.IntegerField(
- null=True,
- blank=True,
- help_text=HelpTexts.check_level
- )
- expire_date = models.DateField(
- null=True,
- blank=True,
- help_text=HelpTexts.expire_date
- )
-
- status = models.CharField(
- max_length=150,
- default="deactivated",
- help_text="активность на основе системы заявок"
- )
- data_path = models.CharField(
- max_length=1024,
- help_text=HelpTexts.data_path
- )
- doc_type = models.CharField(
- max_length=2,
- choices=DOC_TYPES,
- help_text=HelpTexts.doc_type
- )
-
- is_global = models.CharField(
- max_length=1,
- default="f",
- help_text=HelpTexts.is_global
- )
- is_visible = models.CharField(
- max_length=1,
- default="f",
- help_text=HelpTexts.is_visible
- )
-
- company = models.ForeignKey(
- Company,
- on_delete=models.DO_NOTHING,
- null=True,
- help_text=HelpTexts.company
- )
- user = models.ForeignKey(
- get_user_model(),
- related_name="user_doc",
- on_delete=models.DO_NOTHING,
- help_text=HelpTexts.user
- )
- ticket_status = models.ForeignKey(
- Ticket,
- null=True,
- blank=True,
- on_delete=models.SET_NULL,
- help_text=HelpTexts.ticket_status
- )
- checked_by = models.ForeignKey(
- get_user_model(),
- null=True,
- blank=True,
- related_name="checked_by_doc",
- on_delete=models.DO_NOTHING,
- help_text=HelpTexts.checked_by
- )
- class Meta:
- db_table = "documents"
- verbose_name = "Документ"
- verbose_name_plural = "Документы"
- class DocumentFile(models.Model):
- document = models.ForeignKey(Documents, related_name='files', on_delete=models.CASCADE)
- file = models.FileField(upload_to=f'uploads/partners_docs/')
- def __str__(self):
- return os.path.basename(self.file.name)
|