Эх сурвалжийг харах

Merge branch 'unstable' of blezz-tech/sharix-open-backend into unstable

+ 8 - 7
models/client.py

@@ -3,6 +3,7 @@ from django.db import models
 
 from tickets.models import Ticket
 
+from dbsynce.docs.database.client import Client as HelpTexts
 
 class Client(models.Model):
     """
@@ -17,41 +18,41 @@ class Client(models.Model):
     # ID METASERVICE
     id_metaservice = models.PositiveIntegerField(
         null=True,
-        help_text="уникальный идентификатор мета-сервиса, необходимый для синхронизации данных. Если при синхронизации возникает конфликт (несовместимость) с другим сервисом, предлагается или форсировать изменения везде (если возможно), либо is_global выставляется как false."
+        help_text=HelpTexts.id_metaservice
     )
 
     # DATA
     requirements = models.CharField(
         max_length=150,
-        help_text="требования для того, чтобы можно было получать услуги как клиент"
+        help_text=HelpTexts.requirements
     )
     status = models.CharField(
         max_length=150,
-        help_text="активность на основе системы заявок"
+        help_text=HelpTexts.status
     )
 
     # OTHER
     is_global = models.CharField(
         max_length=1,
         default=False,
-        help_text="доступно ли для хранения в глобальном сервисе/необходима синхронизация"
+        help_text=HelpTexts.is_global
     )
     is_visible = models.CharField(
         max_length=1,
         default="f",
-        help_text="доступно ли для планирования в цепочке с другими услугами в глобальном сервисе"
+        help_text=HelpTexts.is_visible
     )
 
     # FK
     ticket_status = models.ForeignKey(
         Ticket,
         on_delete=models.DO_NOTHING,
-        help_text="id последнего актуального тикета, касающийся статуса. Если он меняет статус на закрытый - вызывается проверка, которая смотрит, нет ли другого открытого по пользователю."
+        help_text=HelpTexts.ticket_status
     )
     user = models.ForeignKey(
         get_user_model(),
         on_delete=models.DO_NOTHING,
-        help_text="пользователь, которому соответствует роль клиента"
+        help_text=HelpTexts.user
     )
 
     class Meta:

+ 20 - 13
models/company.py

@@ -3,6 +3,7 @@ from django.db import models
 
 from tickets.models import Ticket
 
+from dbsynce.docs.database.company import Company as HelpTexts
 
 class Company(models.Model):
     """
@@ -21,7 +22,7 @@ class Company(models.Model):
     # FIXME: id_metaservice должно принимать текущий идентификатор метасервиса, на котором происходит создание записи
     id_metaservice = models.PositiveIntegerField(
         default=1,
-        help_text="Уникальный идентификатор метасервиса, необходимый для синхронизации данных. Один и тот же провайдер может быть для нескольких метасервисов, соответственно если происходят изменения в одном, то либо форсируется изменение во всех (если возможно), либо снимается is_global. Соответственно при изменении is_global в true должно происходить согласование с остальными копиями в других сервисах. Нужен в том числе для того, чтобы выяснять, в каких еще сервисах есть этот провайдер."
+        help_text=HelpTexts.id_metaservice
     )
 
     # DATA
@@ -29,56 +30,62 @@ class Company(models.Model):
         "Ограничения",
         max_length=150,
         default="DS01y04y05y06y07yMPUCS13MPUB",
-        help_text="Код необходимый для того, чтобы ресурс мог стать активным"
+        help_text=HelpTexts.requirements
     )
     status = models.CharField(
         "Статус",
         max_length=150,
         default="deactivated",
-        help_text="Cтатус обработки заявки"
+        help_text=HelpTexts.status
     )
     legal_name = models.CharField(
         "Название организации",
         max_length=150,
-        help_text="Настоящее имя юридического лица"
+        help_text=HelpTexts.legal_name
     )
     address = models.CharField(
         "Юридический адрес",
-        max_length=150
+        max_length=150,
+        help_text=HelpTexts.address
     )
     inn = models.CharField(
         "ИНН компании",
         max_length=12,
-        unique=True
+        unique=True,
+        help_text=HelpTexts.inn
     )
     kpp = models.CharField(
         "КПП компании",
-        max_length=9
+        max_length=9,
+        help_text=HelpTexts.kpp
     )
     ogrn = models.CharField(
         "ОГРН компании",
-        max_length=15
+        max_length=15,
+        help_text=HelpTexts.ogrn
     )
     bank_name = models.CharField(
         "Название банка",
         max_length=150,
-        help_text="Название банка с расчетным счетом"
+        help_text=HelpTexts.bank_name
     )
     bik = models.CharField(
         "БИК компании",
-        max_length=11
+        max_length=11,
+        help_text=HelpTexts.bik
     )
     rs = models.CharField(
         "Расчетный счет",
-        max_length=20
+        max_length=20,
+        help_text=HelpTexts.rs
     )
     ks = models.CharField(
         "Корреспондентский счет",
         max_length=20,
-        help_text="Корреспондентский счет (счет, открываемый банковской организацией в подразделении самого банка)"
+        help_text=HelpTexts.ks
     )
     tax_method = models.IntegerField(
-        help_text="Система налогооблажения"
+        help_text=HelpTexts.tax_method
     )
 
     # OTHER

+ 13 - 11
models/documents.py

@@ -6,6 +6,8 @@ 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
+
 
 class Documents(models.Model):
     """
@@ -42,7 +44,7 @@ class Documents(models.Model):
     # FIXME: id_metaservice должно принимать текущий идентификатор метасервиса, на котором происходит создание записи
     id_metaservice = models.PositiveIntegerField(
         default=1,
-        help_text="уникальный идентификатор мета-сервиса, необходимый для синхронизации данных. Если при синхронизации возникает конфликт (несовместимость) с другим сервисом, предлагается или форсировать изменения везде (если возможно), либо is_global выставляется как false."
+        help_text=HelpTexts.id_metaservice
     )
 
     # DATA
@@ -53,12 +55,12 @@ class Documents(models.Model):
     check_level = models.IntegerField(
         null=True,
         blank=True,
-        help_text="информация об уровне проверки. Документ может быть проверен как платформой, так и мета-сервисом, так и партнером мета-сервиса, а может быть и никем (просто загружен). Указывается, так как достоверность проверки разная. Документ, проверенный только на низком уровне, не принимается во внимание как имеющийся до прохождения более высокоуровневой проверки. Информацию об уровнях проверки можно посмотреть по словарю Requirements. В данной таблице хранится информация о наиболее высоком уровне проверки."
+        help_text=HelpTexts.check_level
     )
     expire_date = models.DateField(
         null=True,
         blank=True,
-        help_text="срок окончания действия документа."
+        help_text=HelpTexts.expire_date
     )
     # FIXME: status должен иметь другое значение поумолчанию
     status = models.CharField(
@@ -68,24 +70,24 @@ class Documents(models.Model):
     )
     data_path = models.CharField(
         max_length=1024,
-        help_text="Путь к документу"
+        help_text=HelpTexts.data_path
     )
     doc_type = models.CharField(
         max_length=2,
         choices=DOC_TYPES,
-        help_text="тип документа (паспорт/паспорт 1 страница и т д) в соответствии с классификатором типов документов (см описание в Requirements)"
+        help_text=HelpTexts.doc_type
     )
 
     # OTHER
     is_global = models.CharField(
         max_length=1,
         default="f",
-        help_text="доступны ли документы для хранения в глобальном сервисе/нужна синхронизация"
+        help_text=HelpTexts.is_global
     )
     is_visible = models.CharField(
         max_length=1,
         default="f",
-        help_text="доступна ли информация о наличии документов для планирования в цепочке с другими услугами в глобальном сервисе"
+        help_text=HelpTexts.is_visible
     )
 
     # FK
@@ -93,20 +95,20 @@ class Documents(models.Model):
         Company,
         on_delete=models.DO_NOTHING,
         null=True,
-        help_text="идентификатор компании, к которой относится документ, если таковая есть (может не быть)"
+        help_text=HelpTexts.company_id
     )
     user_id = models.ForeignKey(
         get_user_model(),
         related_name="user_id_doc",
         on_delete=models.DO_NOTHING,
-        help_text="уникальный идентификатор пользователя (конкретного клиентского аккаунта) являющегося владельцем данного документа"
+        help_text=HelpTexts.user_id
     )
     ticket_status = models.ForeignKey(
         Ticket,
         null=True,
         blank=True,
         on_delete=models.SET_NULL,
-        help_text="id последнего актуального тикета, касающийся статуса. Если он меняет статус на закрытый - вызывается проверка, которая смотрит, нет ли другого открытого по пользователю."
+        help_text=HelpTexts.ticket_status
     )
     checked_by = models.ForeignKey(
         get_user_model(),
@@ -114,7 +116,7 @@ class Documents(models.Model):
         blank=True,
         related_name="checked_by_doc",
         on_delete=models.DO_NOTHING,
-        help_text="userid проверившего"
+        help_text=HelpTexts.checked_by
     )
 
     class Meta:

+ 26 - 23
models/orders.py

@@ -8,6 +8,8 @@ from dbsynce.models.service import Service
 from dbsynce.models.servicetype import ServiceType
 from tickets.models import Ticket
 
+from dbsynce.docs.database.orders import Orders as HelpTexts
+
 
 class Orders(models.Model):
     """
@@ -21,116 +23,117 @@ class Orders(models.Model):
     # ID METASERVICE
     id_metaservice = models.PositiveIntegerField(
         null=True,
-        help_text="уникальный идентификатор мета-сервиса, необходимый для синхронизации данных. Если при синхронизации возникает конфликт (несовместимость) с другим сервисом, предлагается или форсировать изменения везде (если возможно), либо is_global выставляется как false."
+        help_text=HelpTexts.id_metaservice
     )
 
     # DATA
     status = models.CharField(
         max_length=150,
-        help_text="текущий статус заказа из возможных на платформе"
+        help_text=HelpTexts.status
     )
     title = models.CharField(
         max_length=150,
-        help_text="заголовок заказа",
+        help_text=HelpTexts.title,
         default='Заголовок'
     )
     note = models.CharField(
         max_length=150,
-        help_text="задание к заказу",
+        help_text=HelpTexts.note,
         default='Записи'
     )
     time_created = models.DateTimeField(
         auto_now_add=True,
-        help_text="время создания заказа"
+        help_text=HelpTexts.time_created
     )
     time_placed = models.DateTimeField(
-        help_text="время размещения заказа"
+        help_text=HelpTexts.time_placed
     )
     time_start = models.DateTimeField(
         null=True,
-        help_text="время начала оказания услуги"
+        help_text=HelpTexts.time_start
     )
     time_start_real = models.DateTimeField(
         null=True,
-        help_text=""
+        help_text=HelpTexts.time_start_real
     )
     time_start_predicted = models.DateTimeField(
         null=True,
-        help_text=""
+        help_text=HelpTexts.time_start_predicted
     )
     time_finish_real = models.DateTimeField(
         null=True,
-        help_text="фактическое время окончания (точное установленное время)"
+        help_text=HelpTexts.time_finish_real
     )
     time_finish_predicted = models.DateTimeField(
-        help_text="предварительное/расчетное время до окончания оказания услуги"
+        help_text=HelpTexts.time_finish_predicted
     )
     real_price = models.FloatField(
-        help_text="цена с учетом тарифа поставщика услуг по факту оказания услуги"
+        help_text=HelpTexts.real_price
     )
     predicted_price = models.FloatField(
-        help_text="расчетная цена с учетом тарифа поставщика услуг"
+        help_text=HelpTexts.predicted_price
     )
     # NOTE: Возможно в будующем можнос сделать символом
     asap = models.BooleanField(
         default=False,
-        help_text="Срочный ли заказ"
+        help_text=HelpTexts.asap
     )
 
     # OTHER
     is_global = models.CharField(
         max_length=1,
         default="f",
-        help_text="доступна ли информация по заказу для хранения в глобальном сервисе/нужна синхронизация данных. Если is_global = false, то и is_visible для заказа и вглубь по цепочке для всех исполнителей и ресурсов - тоже false."
+        help_text=HelpTexts.is_global
     )
     is_visible = models.CharField(
         max_length=1,
         default="f",
-        help_text="доступна ли информация по заказу (время, место) для планирования иных цепочек. Если нет, то все действующие исполнители и ресурсы считаются занятыми на неопределенное время, пока не завершится заказ. Если да - то ресурсы могут использоваться для построения цепочек после планируемого времени завершения, с учетом места."
+        help_text=HelpTexts.is_visible
     )
 
     # FK
     ticket = models.ForeignKey(
         Ticket,
         null=True,
-        on_delete=models.DO_NOTHING
+        on_delete=models.DO_NOTHING,
+        help_text=HelpTexts.ticket
     )
     service = models.ForeignKey(
         Service,
         null=True,
         on_delete=models.DO_NOTHING,
-        help_text="спецификатор услуги провайдера, нужен для установления цены (id_service - уникальный идентификатор шаблона услуги, необходим для установления цены и исполнителей."
+        help_text=HelpTexts.service
     )
     service_type = models.ForeignKey(
         ServiceType,
         null=True,
         on_delete=models.DO_NOTHING,
-        help_text="тип заказа по классификатору услу"
+        help_text=HelpTexts.service_type
     )
     client = models.ForeignKey(
         Client,
         null=True,
         on_delete=models.DO_NOTHING,
-        help_text="клиент/аккаунт, который оплачивает все оказанные услуги"
+        help_text=HelpTexts.client
     )
     provider = models.ForeignKey(
         Provider,
         null=True,
         on_delete=models.DO_NOTHING,
-        help_text="уникальный идентификатор поставщика услуги/аккаунта, который оказывает услугу. Если несколько провайдеров собираются мета-сервисом в цепочку, где на уровне связи с клиентом нельзя установить одно ответственное лицо, то указывается вспомогательный мета-провайдер сервиса, и это означает, что мета-сервис несет ответственность перед пользователем за сборку услуги воедино."
+        help_text=HelpTexts.provider
     )
     receiver = models.ForeignKey(
         get_user_model(),
         null=True,
         related_name="user_id",
         on_delete=models.DO_NOTHING,
-        help_text="пользователь/аккаунт, который принимает оказываемые услуги"
+        help_text=HelpTexts.receiver
     )
     company = models.ForeignKey(
         Company,
         on_delete=models.DO_NOTHING,
         null=True,
-        help_text="Идентификатор компании, к которой относится документ, если таковая есть (может не быть)"
+        help_text=HelpTexts.company
     )
 
     class Meta:

+ 13 - 11
models/permissions.py

@@ -3,6 +3,8 @@ from django.db import models
 
 from tickets.models import Ticket
 
+from dbsynce.docs.database.permissions import Permissions as HelpTexts
+
 
 class Permissions(models.Model):
     """
@@ -17,39 +19,39 @@ class Permissions(models.Model):
 
     # ID METASERVICE
     id_metaservice = models.PositiveIntegerField(
-        help_text=" уникальный идентификатор мета-сервиса, необходимый для синхронизации данных."
+        help_text=HelpTexts.id_metaservice
     )
 
     # DATA
     permission_type = models.BigIntegerField(
-        help_text="уникальный идентификатор определяющий наличие разрешения из множества в словаре - выданных пользователю/клиенту/аккаунту"
+        help_text=HelpTexts.permission_type
     )
     check_level = models.CharField(
         max_length=10,
-        help_text="(check-level из классификатора платформы) - информация об уровне проверки. Проверка может быть проведена как платформой, так и мета-сервисом, так и партнером мета-сервиса, а может быть и никем (просто загружен). Указывается, так как достоверность проверки разная. Экзамен, проверенный только на низком уровне, не принимается во внимание как имеющийся до прохождения более высокоуровневой проверки."
+        help_text=HelpTexts.check_level
     )
     status = models.CharField(
         max_length=150,
-        help_text="статус обработки заявки в системе заявок"
+        help_text=HelpTexts.status
     )
     check_date = models.DateTimeField(
         null=True,
-        help_text="timestamp проверки"
+        help_text=HelpTexts.check_date
     )
     expire_date = models.DateField(
-        help_text="Срок окончания действия разрешения"
+        help_text=HelpTexts.expire_date
     )
 
     # OTHER
     is_global = models.CharField(
         max_length=1,
         default="f",
-        help_text="доступна ли информация для хранения в глобальном сервисе/нужна синхронизация"
+        help_text=HelpTexts.is_global
     )
     is_visible = models.CharField(
         max_length=1,
         default="f",
-        help_text="доступна ли информация о наличии разрешения для планирования в цепочке с другими услугами в глобальном сервисе"
+        help_text=HelpTexts.is_visible
     )
 
     # FK
@@ -57,21 +59,21 @@ class Permissions(models.Model):
         Ticket,
         on_delete=models.DO_NOTHING,
         null=True,
-        help_text="id заявки, по которой происходит проверка статуса relationship. State меняется только в результате изменений в заявке."
+        help_text=HelpTexts.ticket_status
     )
     user_id = models.ForeignKey(
         get_user_model(),
         related_name="user_id_perm",
         on_delete=models.DO_NOTHING,
         null=True,
-        help_text="уникальный идентификатор пользователя/клиента/аккаунта, которым была пройдена проверка и получено разрешение"
+        help_text=HelpTexts.user_id
     )
     checked_by = models.ForeignKey(
         get_user_model(),
         related_name="checked_by_perm",
         on_delete=models.DO_NOTHING,
         null=True,
-        help_text="userid проверившего"
+        help_text=HelpTexts.checked_by
     )
 
     class Meta:

+ 14 - 12
models/provider.py

@@ -5,6 +5,8 @@ from dbsynce.models.company import Company
 from dbsynce.models.service import Service
 from tickets.models import Ticket
 
+from dbsynce.docs.database.provider import Provider as HelpTexts
+
 
 class Provider(models.Model):
     """
@@ -20,41 +22,41 @@ class Provider(models.Model):
     # ID METASERVICE
     id_metaservice = models.PositiveIntegerField(
         null=True,
-        help_text="уникальный идентификатор мета-сервиса, необходимый для синхронизации данных. Один и тот же провайдер может быть для нескольких мета-сервисов, соответственно если происходят изменения в одном, то либо форсируется изменение во всех (если возможно), либо снимается is_global. Соответственно при изменении is_global в true должно происходить согласование с остальными копиями в других сервисах. Нужен в том числе для того, чтобы выяснять, в каких еще сервисах есть этот провайдер."
+        help_text=HelpTexts.id_metaservice
     )
 
     # DATA
     type = models.CharField(
         max_length=150,
-        help_text="тип поставщика (партнер/ответственное лицо/поставщик услуг). Смысл такой - провайдер это статус пользователя, который, в зависимости от применения, может нести разный смысл и подразумевает под собой какой-то тип действия. Обычные исполнители - это провайдеры услуг (код 3). Ответственные за какое-то имущество, которые сдают его в аренду - это тоже провайдеры (код 2). Ответственные за набор услуг перед метасервисом (фактически - назначенные админы) - это провайдеры-партнеры (код 1)"
+        help_text=HelpTexts.type
     )
     requirements = models.CharField(
         max_length=300,
-        help_text="требования для того, чтобы можно было предоставлять услуги любые в этом метасервисе в целом (самые строгие)"
+        help_text=HelpTexts.requirements
     )
     status = models.CharField(
         max_length=150,
-        help_text="статус пользователя в системе относительно прохождения проверок (activity_status) (может быть active только в том случае, если ticket, влияющий на статус - закрыт."
+        help_text=HelpTexts.status
     )
     location_type = models.CharField(
         max_length=300,
-        help_text="статическая или динамическая локация оказания услуги. Если статическая, а исполнитель находится существенно за пределами локации - то тогда статус автоматом оффлайн для приема новых заявок."
+        help_text=HelpTexts.location_type
     )
     default_location = models.CharField(
         max_length=300,
-        help_text="локация по умолчанию для объекта."
+        help_text=HelpTexts.default_location
     )
 
     # OTHER
     is_global = models.CharField(
         max_length=1,
         default="f",
-        help_text="(аккаунт поставщика услуг) – доступен для планирования в цепочке с другими услугами в глобальном сервисе"
+        help_text=HelpTexts.is_global
     )
     is_visible = models.CharField(
         max_length=1,
         default="f",
-        help_text="(аккаунт поставщика услуг) – доступен для хранения в  глобальном сервисе/необходима синхронизация"
+        help_text=HelpTexts.is_visible
     )
 
     # FK
@@ -62,25 +64,25 @@ class Provider(models.Model):
         get_user_model(),
         on_delete=models.DO_NOTHING,
         null=True,
-        help_text="уникальный идентификатор конкретного пользователя системы (meta-user), который будет оказывать услугу. Один пользователь может быть провайдером нескольких услуг. Статус провайдера означает, что с данным пользователем может быть установлена связь, как с исполнителем."
+        help_text=HelpTexts.user_id
     )
     company_id = models.ForeignKey(
         Company,
         on_delete=models.DO_NOTHING,
         null=True,
-        help_text="уникальный идентификатор компании, от лица которой выступает провайдер. Смысл такой - ответственны могут быть только одушевленные лица, компании - не одушевленные. Все услуги предоставляются через компании-партнеры, самозанятые или ИП являются единицами таких компаний."
+        help_text=HelpTexts.company_id
     )
     ticket_status = models.ForeignKey(
         Ticket,
         on_delete=models.DO_NOTHING,
         null=True,
-        help_text="id последнего актуального тикета, касающийся статуса. Если он меняет статус на закрытый - вызывается проверка, которая смотрит, нет ли другого открытого по пользователю."
+        help_text=HelpTexts.ticket_status
     )
     service = models.ForeignKey(
         Service,
         on_delete=models.DO_NOTHING,
         null=True,
-        help_text="id услуги, которую предостовляют"
+        help_text=HelpTexts.service
     )
 
     class Meta:

+ 9 - 7
models/rating_neg.py

@@ -3,6 +3,8 @@ from django.db import models
 
 from dbsynce.models.servicetype import ServiceType
 
+from dbsynce.docs.database.rating_neg import RatingNeg as HelpTexts
+
 
 class RatingNeg(models.Model):
     """
@@ -16,24 +18,24 @@ class RatingNeg(models.Model):
     # ID METASERVICE
     id_metaservice = models.PositiveIntegerField(
         null=True,
-        help_text="уникальный идентификатор мета-сервиса, необходимый для синхронизации данных. Если при синхронизации возникает конфликт (несовместимость) с другим сервисом, предлагается или форсировать изменения везде (если возможно), либо is_global выставляется как false."
+        help_text=HelpTexts.id_metaservice
     )
 
     # DATA
     count = models.IntegerField(
-        help_text=""  # Написать описание поля
+        help_text=HelpTexts.count  # Написать описание поля
     )
 
     # OTHER
     is_global = models.CharField(
         max_length=1,
         default=False,
-        help_text="доступно ли для хранения в глобальном сервисе/необходима синхронизация"
+        help_text=HelpTexts.is_global
     )
     is_visible = models.CharField(
         max_length=1,
         default="f",
-        help_text="доступно ли для планирования в цепочке с другими услугами в глобальном сервисе"
+        help_text=HelpTexts.is_visible
     )
 
     # FK
@@ -41,18 +43,18 @@ class RatingNeg(models.Model):
         get_user_model(),
         related_name="rating_neg_user_who",
         on_delete=models.DO_NOTHING,
-        help_text="уникальный идентификатор инициатора договорных отношений"
+        help_text=HelpTexts.user_who
     )
     user_whom = models.ForeignKey(
         get_user_model(),
         related_name="rating_neg_user_whom",
         on_delete=models.DO_NOTHING,
-        help_text=" уникальный идентификатор того с кем связываются"
+        help_text=HelpTexts.user_whom
     )
     servicetype = models.ForeignKey(
         ServiceType,
         on_delete=models.DO_NOTHING,
-        help_text="тип оказываемой услуги по классификатору услуг сервиса"
+        help_text=HelpTexts.servicetype
     )
 
     class Meta:

+ 9 - 7
models/rating_ok.py

@@ -3,6 +3,8 @@ from django.db import models
 
 from dbsynce.models.servicetype import ServiceType
 
+from dbsynce.docs.database.rating_ok import RatingOk as HelpTexts
+
 
 class RatingOk(models.Model):
     """
@@ -16,24 +18,24 @@ class RatingOk(models.Model):
     # ID METASERVICE
     id_metaservice = models.PositiveIntegerField(
         null=True,
-        help_text="уникальный идентификатор мета-сервиса, необходимый для синхронизации данных. Если при синхронизации возникает конфликт (несовместимость) с другим сервисом, предлагается или форсировать изменения везде (если возможно), либо is_global выставляется как false."
+        help_text=HelpTexts.id_metaservice
     )
 
     # DATA
     count = models.IntegerField(
-        help_text=""  # Написать описание поля
+        help_text=HelpTexts.count  # Написать описание поля
     )
 
     # OTHER
     is_global = models.CharField(
         max_length=1,
         default=False,
-        help_text="доступно ли для хранения в глобальном сервисе/необходима синхронизация"
+        help_text=HelpTexts.is_global
     )
     is_visible = models.CharField(
         max_length=1,
         default="f",
-        help_text="доступно ли для планирования в цепочке с другими услугами в глобальном сервисе"
+        help_text=HelpTexts.is_visible
     )
 
     # FK
@@ -41,18 +43,18 @@ class RatingOk(models.Model):
         get_user_model(),
         related_name="rating_ok_user_who",
         on_delete=models.DO_NOTHING,
-        help_text="уникальный идентификатор инициатора договорных отношений"
+        help_text=HelpTexts.user_who
     )
     user_whom = models.ForeignKey(
         get_user_model(),
         related_name="rating_ok_user_whom",
         on_delete=models.DO_NOTHING,
-        help_text=" уникальный идентификатор того с кем связываются"
+        help_text=HelpTexts.user_whom
     )
     servicetype = models.ForeignKey(
         ServiceType,
         on_delete=models.DO_NOTHING,
-        help_text="тип оказываемой услуги по классификатору услуг сервиса"
+        help_text=HelpTexts.servicetype
     )
 
     class Meta:

+ 9 - 7
models/rating_pos.py

@@ -3,6 +3,8 @@ from django.db import models
 
 from dbsynce.models.servicetype import ServiceType
 
+from dbsynce.docs.database.rating_pos import RatingPos as HelpTexts
+
 
 class RatingPos(models.Model):
     """
@@ -16,24 +18,24 @@ class RatingPos(models.Model):
     # ID METASERVICE
     id_metaservice = models.PositiveIntegerField(
         null=True,
-        help_text="уникальный идентификатор мета-сервиса, необходимый для синхронизации данных. Если при синхронизации возникает конфликт (несовместимость) с другим сервисом, предлагается или форсировать изменения везде (если возможно), либо is_global выставляется как false."
+        help_text=HelpTexts.id_metaservice
     )
 
     # DATA
     count = models.IntegerField(
-        help_text=""  # Написать описание поля
+        help_text=HelpTexts.count  # Написать описание поля
     )
 
     # OTHER
     is_global = models.CharField(
         max_length=1,
         default=False,
-        help_text="доступно ли для хранения в глобальном сервисе/необходима синхронизация"
+        help_text=HelpTexts.is_global
     )
     is_visible = models.CharField(
         max_length=1,
         default="f",
-        help_text="доступно ли для планирования в цепочке с другими услугами в глобальном сервисе"
+        help_text=HelpTexts.is_visible
     )
 
     # FK
@@ -41,18 +43,18 @@ class RatingPos(models.Model):
         get_user_model(),
         related_name="rating_pos_user_who",
         on_delete=models.DO_NOTHING,
-        help_text="уникальный идентификатор инициатора договорных отношений"
+        help_text=HelpTexts.user_who
     )
     user_whom = models.ForeignKey(
         get_user_model(),
         related_name="rating_pos_user_whom",
         on_delete=models.DO_NOTHING,
-        help_text=" уникальный идентификатор того с кем связываются"
+        help_text=HelpTexts.user_whom
     )
     servicetype = models.ForeignKey(
         ServiceType,
         on_delete=models.DO_NOTHING,
-        help_text="тип оказываемой услуги по классификатору услуг сервиса"
+        help_text=HelpTexts.servicetype
     )
 
     class Meta:

+ 11 - 9
models/relationship.py

@@ -3,6 +3,8 @@ from django.db import models
 
 from tickets.models import Ticket
 
+from dbsynce.docs.database.relationship import Relationship as HelpTexts
+
 
 class Relationship(models.Model):
     """
@@ -18,32 +20,32 @@ class Relationship(models.Model):
     # ID METASERVICE
     id_metaservice = models.PositiveIntegerField(
         null=True,
-        help_text="уникальный идентификатор мета-сервиса, необходимый для синхронизации данных. Один и тот же провайдер может быть для нескольких мета-сервисов, соответственно если происходят изменения в одном, то либо форсируется изменение во всех (если возможно), либо снимается is_global. Соответственно при изменении is_global в true должно происходить согласование с остальными копиями в других сервисах. Нужен в том числе для того, чтобы выяснять, в каких еще сервисах есть этот провайдер."
+        help_text=HelpTexts.id_metaservice
     )
 
     # DATA
     neg_type = models.IntegerField(
-        help_text="тип договорных отношений по его уникальному идентификатору"
+        help_text=HelpTexts.neg_type
     )
     requirements = models.CharField(
         max_length=150,
-        help_text="код необходимого (самый строгий) для того, чтобы ресурс мог стать активным. Оно вставляется автоматом, в соответствии с профилем метасервиса. Далее, если кому-то из партнеров или пользователей надо строже - применяется более строгий вариант на данную связь."
+        help_text=HelpTexts.requirements
     )
     status = models.CharField(
         max_length=150,
-        help_text="(статус обработки заявки в системе заявок)"
+        help_text=HelpTexts.status
     )
 
     # OTHER
     is_global = models.CharField(
         max_length=1,
         default="f",
-        help_text="установленный тип договорных отношений между клиентами/пользователями/аккаунтами доступен для хранения в глобальном сервисе/нужна синхронизация"
+        help_text=HelpTexts.is_global
     )
     is_visible = models.CharField(
         max_length=1,
         default="f",
-        help_text="установленный тип договорных отношений между клиентами/пользователями/аккаунтами, доступен для планирования в цепочке с другими услугами в глобальном сервисе"
+        help_text=HelpTexts.is_visible
     )
 
     # FK
@@ -51,18 +53,18 @@ class Relationship(models.Model):
         get_user_model(),
         related_name="user_id_who",
         on_delete=models.DO_NOTHING,
-        help_text="уникальный идентификатор инициатора договорных отношений"
+        help_text=HelpTexts.user_id_who
     )
     user_id_whom = models.ForeignKey(
         get_user_model(),
         related_name="user_id_whom",
         on_delete=models.DO_NOTHING,
-        help_text=" уникальный идентификатор того с кем связываются"
+        help_text=HelpTexts.user_id_whom
     )
     ticket_status = models.ForeignKey(
         Ticket,
         on_delete=models.DO_NOTHING,
-        help_text="id заявки, по которой происходит проверка статуса relationship. State меняется только в результате изменений в заявке."
+        help_text=HelpTexts.ticket_status
     )
 
     class Meta:

+ 10 - 8
models/resource.py

@@ -3,6 +3,8 @@ from django.db import models
 
 from tickets.models import Ticket
 
+from dbsynce.docs.database.resource import Resource as HelpTexts
+
 
 class Resource(models.Model):
     """
@@ -16,45 +18,45 @@ class Resource(models.Model):
     # ID METASERVICE
     id_metaservice = models.PositiveIntegerField(
         null=True,
-        help_text="уникальный идентификатор мета-сервиса, необходимый для синхронизации данных. Один и тот же провайдер может быть для нескольких мета-сервисов, соответственно если происходят изменения в одном, то либо форсируется изменение во всех (если возможно), либо снимается is_global. Соответственно при изменении is_global в true должно происходить согласование с остальными копиями в других сервисах. Нужен в том числе для того, чтобы выяснять, в каких еще сервисах есть этот провайдер."
+        help_text=HelpTexts.id_metaservice
     )
 
     # DATA
     resoure_type = models.CharField(
         max_length=10,
-        help_text="определение типа ресурса по его уникальному идентификатору в соответствии с классификатором"
+        help_text=HelpTexts.resoure_type
     )
     requirements = models.CharField(
         max_length=150,
-        help_text="код необходимого (самый строгий) для того, чтобы ресурс мог стать активным"
+        help_text=HelpTexts.requirements
     )
     status = models.CharField(
         max_length=150,
-        help_text="статус ресурса в системе относительно прохождения проверок (activity_status) (может быть active только в том случае, если ticket, влияющий на статус - закрыт."
+        help_text=HelpTexts.status
     )
 
     # OTHER
     is_global = models.CharField(
         max_length=1,
         default="f",
-        help_text="доступны ли данные (по услугам или ресурсам?) для хранения в глобальном сервисе/необходима синхронизация"
+        help_text=HelpTexts.is_global
     )
     is_visible = models.CharField(
         max_length=1,
         default="f",
-        help_text="доступно ли для планирования в цепочке с другими услугами в глобальном сервисе"
+        help_text=HelpTexts.is_visible
     )
 
     # FK
     ticket_status = models.ForeignKey(
         Ticket,
         on_delete=models.DO_NOTHING,
-        help_text="id последнего актуального тикета, касающийся статуса. Если он меняет статус на закрытый - вызывается проверка, которая смотрит, нет ли другого открытого по пользователю."
+        help_text=HelpTexts.ticket_status
     )
     user_id = models.ForeignKey(
         get_user_model(),
         on_delete=models.DO_NOTHING,
-        help_text="уникальный идентификатор ответственного (за состояние, доступность и так далее - то есть для договора) пользователя - идентификатор провайдера, по которому восстанавливается конкретный пользовательский аккаунт"
+        help_text=HelpTexts.user_id
     )
 
     class Meta:

+ 16 - 14
models/service.py

@@ -4,6 +4,8 @@ from dbsynce.models.resource import Resource
 from dbsynce.models.servicetype import ServiceType
 from tickets.models import Ticket
 
+from dbsynce.docs.database.service import Service as HelpTexts
+
 
 class Service(models.Model):
     """
@@ -19,74 +21,74 @@ class Service(models.Model):
     # ID METASERVICE
     id_metaservice = models.PositiveIntegerField(
         null=True,
-        help_text="уникальный идентификатор мета-сервиса, необходимый для синхронизации данных. Один и тот же провайдер может быть для нескольких мета-сервисов, соответственно если происходят изменения в одном, то либо форсируется изменение во всех (если возможно), либо снимается is_global. Соответственно при изменении is_global в true должно происходить согласование с остальными копиями в других сервисах. Нужен в том числе для того, чтобы выяснять, в каких еще сервисах есть этот провайдер."
+        help_text=HelpTexts.id_metaservice
     )
 
     # DATA
     price_alg = models.CharField(
         max_length=100,
-        help_text="шаблон алгоритма расчета цены для оказываемой услуги (по этой переменной определяется, какую функцию для расчета цены вызывать)"
+        help_text=HelpTexts.price_alg
     )
     price_km = models.DecimalField(
         max_digits=9,
         decimal_places=2,
-        help_text="значение параметра стоимости 1км данного поставщика для данного шаблона услуги"
+        help_text=HelpTexts.price_km
     )
     price_min = models.DecimalField(
         max_digits=9,
         decimal_places=2,
-        help_text="значение параметра стоимости 1мин данного поставщика для данного шаблона услуги"
+        help_text=HelpTexts.price_min
     )
     price_amount = models.DecimalField(
         max_digits=9,
         decimal_places=2,
-        help_text="значение параметра стоимости 1 услуги данного поставщика для данного шаблона услуги"
+        help_text=HelpTexts.price_amount
     )
     company_comission = models.FloatField(
-        help_text="Коммисия сервиса"
+        help_text=HelpTexts.company_comission
     )
     requirements = models.CharField(
         max_length=150,
-        help_text="код необходимого (самый строгий) для того, чтобы ресурс мог стать активным. Оно вставляется автоматом, в соответствии с профилем метасервиса. Далее, если кому-то из партнеров или пользователей надо строже - применяется более строгий вариант на данную связь."
+        help_text=HelpTexts.requirements
     )
     service_status = models.CharField(
         max_length=150,
-        help_text="статус спецификации типа услуги, принимает значения Online, Offline, Preorder with Gap. Online/offline выставляются по проверке параметров и желанию пользователя (например, если пользователь переключает себя online, но по какой-то причине ему такую услугу оказывать запрещено - оно не переключится, то есть надо перед сменой значения этого поля всегда запускать проверку)"
+        help_text=HelpTexts.service_status
     )
     status = models.CharField(
         max_length=150,
-        help_text="статус обработки заявки в системе заявок. активность на основе системы заяво"
+        help_text=HelpTexts.status
     )
 
     # OTHER
     is_global = models.CharField(
         max_length=1,
         default="f",
-        help_text="доступны ли документы для хранения в глобальном сервисе/нужна синхронизация"
+        help_text=HelpTexts.is_global
     )
     is_visible = models.CharField(
         max_length=1,
         default="f",
-        help_text="доступна ли информация о наличии документов для планирования в цепочке с другими услугами в глобальном сервисе"
+        help_text=HelpTexts.is_visible
     )
 
     # FK
     ticket_status = models.ForeignKey(
         Ticket,
         on_delete=models.DO_NOTHING,
-        help_text="id последнего актуального тикета, касающийся статуса. Если он меняет статус на закрытый - вызывается проверка, которая смотрит, нет ли другого открытого по пользователю."
+        help_text=HelpTexts.ticket_status
     )
     resource_id = models.ForeignKey(
         Resource,
         on_delete=models.DO_NOTHING,
         blank=True,
         null=True,
-        help_text="ответственный за ресурс(не всегда). так как ресурсы сами услугу оказать не могут, а также один ресурс может быть представлен в виде разных услуг, то фактически с точки зрения смысла системы ресурс - это как неодушевленный пользователь. Без провайдера, который с его помощью оказывает услугу - никуда. Поле остается пустым, если сервис не предусматривает использование услуг. Стоит обратить внимание, что это не обязательно ответственный за ресурс. Например, за состояние автомобиля может быть ответственен пользователь (он и указывается в таблице со свойствами ресурса), а услугу доступа или перевозки может оказывать иное лицо."
+        help_text=HelpTexts.resource_id
     )
     servicetype = models.ForeignKey(
         ServiceType,
         on_delete=models.DO_NOTHING,
-        help_text="тип оказываемой услуги по классификатору услуг сервиса"
+        help_text=HelpTexts.servicetype
     )
 
     class Meta:

+ 14 - 12
models/servicetype.py

@@ -2,6 +2,8 @@ from django.db import models
 
 from tickets.models import Ticket
 
+from dbsynce.docs.database.servicetype import ServiceType as HelpTexts
+
 
 class ServiceType(models.Model):
     """
@@ -14,52 +16,52 @@ class ServiceType(models.Model):
 
     # ID METASERVICE
     id_metaservice = models.PositiveIntegerField(
-        help_text=" уникальный идентификатор мета-сервиса, необходимый для синхронизации данных. Один и тот же провайдер может быть для нескольких мета-сервисов, соответственно если происходят изменения в одном, то либо форсируется изменение во всех (если возможно), либо снимается is_global. Соответственно при изменении is_global в true должно происходить согласование с остальными копиями в других сервисах. Нужен в том числе для того, чтобы выяснять, в каких еще сервисах есть этот провайдер."
+        help_text=HelpTexts.id_metaservice
     )
 
     # DATA
     codename = models.CharField(
         max_length=255,
-        help_text="латинское наименование услуги в системе"
+        help_text=HelpTexts.codename
     )
     requirements = models.CharField(
         max_length=300,
-        help_text="код требований на основе вспомогательных таблиц-справочников"
+        help_text=HelpTexts.requirements
     )
     status = models.CharField(
         max_length=150,
-        help_text="активность на основе системы заявок"
+        help_text=HelpTexts.status
     )
     caption = models.CharField(
         max_length=255,
-        help_text="наименование услуги для отображения пользователю"
+        help_text=HelpTexts.caption
     )
     description = models.TextField(
         blank=True,
-        help_text="текстовое описание услуги"
+        help_text=HelpTexts.description
     )
     link_agreement = models.CharField(
         max_length=400,
-        help_text="ссылка на договор в вики об оказании услуги данного типа (аренда, перевозка и тп)"
+        help_text=HelpTexts.link_agreement
     )
     price_type = models.CharField(
         max_length=150,
-        help_text="ценообразование - код допустимых вариантов или код параметров, принимаемых во внимание и способ их учета (по сути хорошо закодировать формулу)"
+        help_text=HelpTexts.price_type
     )
     company_comission = models.FloatField(
-        help_text="Коммисия сервиса"
+        help_text=HelpTexts.company_comission
     )
 
     # OTHER
     is_global = models.CharField(
         max_length=1,
         default="f",
-        help_text="доступно ли для планирования в цепочке с другими услугами в глобальном сервисе"
+        help_text=HelpTexts.is_global
     )
     is_visible = models.CharField(
         max_length=1,
         default="f",
-        help_text="доступно ли для хранения в глобальном сервисе/нужна синхронизация данных"
+        help_text=HelpTexts.is_visible
     )
 
     # FK
@@ -67,7 +69,7 @@ class ServiceType(models.Model):
         Ticket,
         on_delete=models.DO_NOTHING,
         null=True,
-        help_text="id последнего актуального тикета, касающийся статуса. Если он меняет статус на закрытый - вызывается проверка, которая смотрит, нет ли другого открытого по пользователю."
+        help_text=HelpTexts.ticket_status
     )
 
     class Meta: