Explorar o código

Added auxiliary methods

- Model "Documents" parse_requirements()
- Model "Company" deactivate()
TonyKurts hai 6 meses
pai
achega
616792d8b4
Modificáronse 2 ficheiros con 29 adicións e 1 borrados
  1. 4 0
      models/company.py
  2. 25 1
      models/documents.py

+ 4 - 0
models/company.py

@@ -42,6 +42,10 @@ class Company(models.Model):
         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,))
 
+    def deactivate(self):
+        self.status = "deactivated"
+        self.save()
+
     class Meta:
         db_table = "company"
         verbose_name = "Компания"

+ 25 - 1
models/documents.py

@@ -1,3 +1,5 @@
+import re
+
 from django.db import models
 from django.contrib.auth import get_user_model
 
@@ -12,6 +14,22 @@ class Documents(models.Model):
     То есть отдельно таблица с паспортами, отдельно с правами, отдельно с какими-нибудь разрешениями и так далее. 
     Что пока непонятно - документов может быть много разных.
     """
+    DOC_TYPES = [
+        ("01", "Паспорт"),
+        ("02", "ИНН"),
+        ("03", "СНИЛС"),
+        ("04", "Cвидетельство о регистрации компании"),
+        ("05", "Cистема налогообложения"),
+        ("06", "Документ, подтверждающий полномочия представлять компанию (доверенность, приказ)"),
+        ("07", "Документ, подтверждающий право совершать действия (права, лицензия)"),
+        ("08", "Документ, подтверждающий собственность"),
+        ("09", "Документ об образовании"),
+        ("10", "Медицинская книжка"),
+        ("11", "Cправка об отсутствии судимости"),
+        ("12", "Договор (в том числе о трудоустройстве)"),
+        ("13", "Фотография"),
+        ("99", "Иное"),
+    ]
 
     check_date = models.DateTimeField(help_text="timestamp проверки")
     check_level = models.IntegerField(help_text="информация об уровне проверки. Документ может быть проверен как платформой, так и мета-сервисом, так и партнером мета-сервиса, а может быть и никем (просто загружен). Указывается, так как достоверность проверки разная. Документ, проверенный только на низком уровне, не принимается во внимание как имеющийся до прохождения более высокоуровневой проверки. Информацию об уровнях проверки можно посмотреть по словарю Requirements. В данной таблице хранится информация о наиболее высоком уровне проверки.")
@@ -21,13 +39,19 @@ class Documents(models.Model):
     status = models.CharField(max_length=150, help_text="активность на основе системы заявок")
     ticket_status = models.ForeignKey(Ticket, on_delete=models.DO_NOTHING, help_text="id последнего актуального тикета, касающийся статуса. Если он меняет статус на закрытый - вызывается проверка, которая смотрит, нет ли другого открытого по пользователю.")
     datalink = models.TextField(blank=True, help_text="адрес фактического размещения на физическом носителе, если информация настолько велика, что не может храниться внутри БД.")
-    doc_type = models.CharField(max_length=150, help_text="тип документа (паспорт/паспорт 1 страница и т д) в соответствии с классификатором типов документов (см описание в Requirements)")
+    doc_type = models.CharField(max_length=2, choices=DOC_TYPES, help_text="тип документа (паспорт/паспорт 1 страница и т д) в соответствии с классификатором типов документов (см описание в Requirements)")
     user_id = models.ForeignKey(get_user_model(), related_name="user_id_doc", on_delete=models.DO_NOTHING, help_text="уникальный идентификатор пользователя (конкретного клиентского аккаунта) являющегося владельцем данного документа")
     company_id = models.ForeignKey(Company, on_delete=models.DO_NOTHING, null=True, help_text="идентификатор компании, к которой относится документ, если таковая есть (может не быть)")
     is_global = models.BooleanField(default=False, help_text="доступны ли документы для хранения в глобальном сервисе/нужна синхронизация")
     is_visible = models.BooleanField(default=False, help_text="доступна ли информация о наличии документов для планирования в цепочке с другими услугами в глобальном сервисе")
     checked_by = models.ForeignKey(get_user_model(), related_name="checked_by_doc", on_delete=models.DO_NOTHING, null=True, help_text="userid проверившего")
 
+    @staticmethod
+    def parse_requirements(requirements: str):
+        """
+        Метод позволяет разобрать строку requirements в удобочитаемый вид.
+        """
+        return re.findall(r'\d{2}', requirements)
 
     class Meta:
         db_table = "documents"