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 # FIXME: id_metaservice должно принимать текущий идентификатор метасервиса, на котором происходит создание записи id_metaservice = models.PositiveIntegerField( default=METASERVICE_ID, help_text=HelpTexts.id_metaservice ) # DATA 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 ) # FIXME: status должен иметь другое значение поумолчанию 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 ) # OTHER 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 ) # FK 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)