Browse Source

add methods and FIXME from metasynced

blezz-tech 2 tháng trước cách đây
mục cha
commit
b66a7a05cc
1 tập tin đã thay đổi với 47 bổ sung2 xóa
  1. 47 2
      models/documents.py

+ 47 - 2
models/documents.py

@@ -1,5 +1,11 @@
+import re
+import os
+
 from django.db import models
+from django.urls import reverse
 from django.contrib.auth import get_user_model
+from django.contrib.contenttypes.models import ContentType
+
 from dbsynce.models.company import Company
 from tickets.models import Ticket
 
@@ -11,7 +17,25 @@ class Documents(models.Model):
     То есть отдельно таблица с паспортами, отдельно с правами, отдельно с какими-нибудь разрешениями и так далее. 
     Что пока непонятно - документов может быть много разных.
     """
+    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)
 
+    # FIXME: id_metaservice должно принимать текущий идентификатор метасервиса, на котором происходит создание записи
     id_metaservice = models.BigIntegerField(
         null=True,
         help_text="уникальный идентификатор мета-сервиса, необходимый для синхронизации данных. Если при синхронизации возникает конфликт (несовместимость) с другим сервисом, предлагается или форсировать изменения везде (если возможно), либо is_global выставляется как false."
@@ -26,11 +50,11 @@ class Documents(models.Model):
         null=True,
         help_text="срок окончания действия документа."
     )
-
+    # FIXME: requirements должно иметь другое значение поумолчанию
     requirements = models.CharField(
         max_length=150
     )
-
+    # FIXME: status должен иметь другое значение поумолчанию
     status = models.CharField(
         max_length=150,
         help_text="активность на основе системы заявок"
@@ -76,11 +100,32 @@ class Documents(models.Model):
         help_text="адрес фактического размещения на физическом носителе, если информация настолько велика, что не может храниться внутри БД."
     )
 
+    @staticmethod
+    def parse_requirements(requirements: str):
+        """
+        Метод позволяет разобрать строку requirements в удобочитаемый вид.
+        """
+        return sorted(set(re.findall(r'\d{2}', requirements)))
 
+    def get_admin_url(self):
+        """
+        Возвращает URL-адрес текущего объекта в административной панели Django.
 
+        Returns:
+            str: URL-адрес текущего объекта в административной панели Django
+        """
+        content_type = ContentType.objects.get_for_model(self.__class__)
+        return reverse("admin:%s_%s_change" % (content_type.app_label, content_type.model), args=(self.id,))
 
     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)