import os from django.contrib.auth import get_user_model from django.db import models from dbsynce.models.company import Company from dbsynce.models.resource import Resource from tickets.models import Ticket from dbsynce.docs.database.documents import Documents as HelpTexts from dbsynce.docs.verbose_names.documents import Documents as VerboseName from core.settings_vars import METASERVICE_ID from dbsynce.lib import dicts 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, verbose_name = VerboseName.id_metaservice, help_text=HelpTexts.id_metaservice ) # DATA check_date = models.DateTimeField( auto_now_add=True, verbose_name = VerboseName.check_date, help_text=HelpTexts.check_date, ) check_level = models.IntegerField( null=True, blank=True, verbose_name = VerboseName.check_level, help_text=HelpTexts.check_level, ) expire_date = models.DateField( null=True, blank=True, verbose_name = VerboseName.expire_date, help_text=HelpTexts.expire_date, ) # FIXME: status должен иметь другое значение поумолчанию status = models.CharField( max_length=1, default="1", verbose_name = VerboseName.status, help_text=HelpTexts.status, ) data_path = models.CharField( max_length=1024, verbose_name = VerboseName.data_path, help_text=HelpTexts.data_path, ) doc_type = models.CharField( max_length=2, choices = list(dicts.doc_type_by_code.items()), #choices=DOC_TYPES, verbose_name = VerboseName.doc_type, help_text=HelpTexts.doc_type, ) # OTHER is_global = models.CharField( max_length=1, default="f", choices = list(dicts.is_global_by_code.items()), verbose_name = VerboseName.is_global, help_text=HelpTexts.is_global, ) is_visible = models.CharField( max_length=1, default="f", choices = list(dicts.is_visible_by_code.items()), verbose_name = VerboseName.is_visible, help_text=HelpTexts.is_visible, ) # FK company = models.ForeignKey( Company, on_delete=models.DO_NOTHING, null=True, verbose_name = VerboseName.company, help_text=HelpTexts.company, ) resource = models.ForeignKey( Resource, on_delete=models.DO_NOTHING, null=True, verbose_name = VerboseName.resource, help_text=HelpTexts.resource, ) # service_category = models.ForeignKey( # ServiceCategory, # on_delete=models.DO_NOTHING, # null=True, # #help_text=HelpTexts.service_category # ) # service = models.ForeignKey( # Service, # on_delete=models.DO_NOTHING, # null=True, # #help_text=HelpTexts.service # ) user = models.ForeignKey( get_user_model(), related_name="user_doc", on_delete=models.DO_NOTHING, verbose_name = VerboseName.user, help_text=HelpTexts.user, ) ticket_status = models.ForeignKey( Ticket, null=True, blank=True, on_delete=models.SET_NULL, verbose_name = VerboseName.ticket_status, 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, verbose_name = VerboseName.checked_by, 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)