Browse Source

Necessary corrections have been made for correct operation with the sharix-open-user-model

TonyKurts 9 months ago
parent
commit
479b49c4b8

+ 4 - 2
models/client.py

@@ -1,13 +1,15 @@
 from django.db import models
 from django.db import models
-from SharixAdmin.models import SharixUser
+from django.contrib.auth import get_user_model
+
 from tickets.models import Ticket
 from tickets.models import Ticket
 
 
+
 class Client(models.Model):
 class Client(models.Model):
     """
     """
     Client - это таблица с клиентами. Клиент/пользователь/аккаунт 
     Client - это таблица с клиентами. Клиент/пользователь/аккаунт 
     в системе, который по логике получает услугу.
     в системе, который по логике получает услугу.
     """
     """
-    user = models.ForeignKey(SharixUser, on_delete=models.DO_NOTHING, help_text="пользователь, которому соответствует роль клиента")
+    user = models.ForeignKey(get_user_model(), on_delete=models.DO_NOTHING, help_text="пользователь, которому соответствует роль клиента")
     requirements = models.CharField(max_length=150, help_text="требования для того, чтобы можно было получать услуги как клиент")
     requirements = models.CharField(max_length=150, help_text="требования для того, чтобы можно было получать услуги как клиент")
     status = models.CharField(max_length=150, help_text="активность на основе системы заявок")
     status = models.CharField(max_length=150, help_text="активность на основе системы заявок")
     ticket_status = models.ForeignKey(Ticket, on_delete=models.DO_NOTHING, help_text="id последнего актуального тикета, касающийся статуса. Если он меняет статус на закрытый - вызывается проверка, которая смотрит, нет ли другого открытого по пользователю.")
     ticket_status = models.ForeignKey(Ticket, on_delete=models.DO_NOTHING, help_text="id последнего актуального тикета, касающийся статуса. Если он меняет статус на закрытый - вызывается проверка, которая смотрит, нет ли другого открытого по пользователю.")

+ 4 - 2
models/company.py

@@ -1,10 +1,12 @@
 from django.db import models
 from django.db import models
+from django.contrib.auth import get_user_model
+
 from tickets.models import Ticket
 from tickets.models import Ticket
-from SharixAdmin.models import SharixUser
+
 
 
 class Company(models.Model):
 class Company(models.Model):
     legal_name = models.CharField(max_length=150, help_text="настоящее имя юридического лица")
     legal_name = models.CharField(max_length=150, help_text="настоящее имя юридического лица")
-    repr_id = models.ForeignKey(SharixUser, on_delete=models.DO_NOTHING, help_text="уникальный идентификатор представителя компании. Это обязательно пользователь-провайдер определенного типа. То есть нельзя назначить ответственного, который не может быть ответственным.")
+    repr_id = models.ForeignKey(get_user_model(), on_delete=models.DO_NOTHING, help_text="уникальный идентификатор представителя компании. Это обязательно пользователь-провайдер определенного типа. То есть нельзя назначить ответственного, который не может быть ответственным.")
     inn = models.CharField(max_length=10, unique=True, help_text="ИНН компании")
     inn = models.CharField(max_length=10, unique=True, help_text="ИНН компании")
     kpp = models.CharField(max_length=9,  help_text="КПП компании")
     kpp = models.CharField(max_length=9,  help_text="КПП компании")
     ogrn = models.CharField(max_length=13, help_text="ОГРН компании")
     ogrn = models.CharField(max_length=13, help_text="ОГРН компании")

+ 4 - 3
models/documents.py

@@ -1,5 +1,6 @@
 from django.db import models
 from django.db import models
-from SharixAdmin.models import SharixUser
+from django.contrib.auth import get_user_model
+
 from metaservicesynced.models.company import Company
 from metaservicesynced.models.company import Company
 from tickets.models import Ticket
 from tickets.models import Ticket
 
 
@@ -21,11 +22,11 @@ class Documents(models.Model):
     ticket_status = models.ForeignKey(Ticket, on_delete=models.DO_NOTHING, help_text="id последнего актуального тикета, касающийся статуса. Если он меняет статус на закрытый - вызывается проверка, которая смотрит, нет ли другого открытого по пользователю.")
     ticket_status = models.ForeignKey(Ticket, on_delete=models.DO_NOTHING, help_text="id последнего актуального тикета, касающийся статуса. Если он меняет статус на закрытый - вызывается проверка, которая смотрит, нет ли другого открытого по пользователю.")
     datalink = models.TextField(blank=True, help_text="адрес фактического размещения на физическом носителе, если информация настолько велика, что не может храниться внутри БД.")
     datalink = models.TextField(blank=True, help_text="адрес фактического размещения на физическом носителе, если информация настолько велика, что не может храниться внутри БД.")
     doc_type = models.CharField(max_length=150, help_text="тип документа (паспорт/паспорт 1 страница и т д) в соответствии с классификатором типов документов (см описание в Requirements)")
     doc_type = models.CharField(max_length=150, help_text="тип документа (паспорт/паспорт 1 страница и т д) в соответствии с классификатором типов документов (см описание в Requirements)")
-    user_id = models.ForeignKey(SharixUser, related_name="user_id_doc", on_delete=models.DO_NOTHING, help_text="уникальный идентификатор пользователя (конкретного клиентского аккаунта) являющегося владельцем данного документа")
+    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="идентификатор компании, к которой относится документ, если таковая есть (может не быть)")
     company_id = models.ForeignKey(Company, on_delete=models.DO_NOTHING, null=True, help_text="идентификатор компании, к которой относится документ, если таковая есть (может не быть)")
     is_global = models.BooleanField(default=False, help_text="доступны ли документы для хранения в глобальном сервисе/нужна синхронизация")
     is_global = models.BooleanField(default=False, help_text="доступны ли документы для хранения в глобальном сервисе/нужна синхронизация")
     is_visible = models.BooleanField(default=False, help_text="доступна ли информация о наличии документов для планирования в цепочке с другими услугами в глобальном сервисе")
     is_visible = models.BooleanField(default=False, help_text="доступна ли информация о наличии документов для планирования в цепочке с другими услугами в глобальном сервисе")
-    checked_by = models.ForeignKey(SharixUser, related_name="checked_by_doc", on_delete=models.DO_NOTHING, null=True, help_text="userid проверившего")
+    checked_by = models.ForeignKey(get_user_model(), related_name="checked_by_doc", on_delete=models.DO_NOTHING, null=True, help_text="userid проверившего")
 
 
 
 
     class Meta:
     class Meta:

+ 4 - 4
models/orders.py

@@ -1,23 +1,23 @@
 from django.db import models
 from django.db import models
-from SharixAdmin.models import SharixUser
+from django.contrib.auth import get_user_model
+
 from metaservicesynced.models.client import Client
 from metaservicesynced.models.client import Client
 from metaservicesynced.models.provider import Provider
 from metaservicesynced.models.provider import Provider
 from metaservicesynced.models.service import Service
 from metaservicesynced.models.service import Service
 from metaservicesynced.models.servicetype import ServiceType
 from metaservicesynced.models.servicetype import ServiceType
 from tickets.models import Ticket
 from tickets.models import Ticket
 
 
+
 class Orders(models.Model):
 class Orders(models.Model):
     """
     """
     Orders - таблица с заказами
     Orders - таблица с заказами
     """
     """
-
-
     service = models.ForeignKey(Service, null=True, on_delete=models.DO_NOTHING, help_text="спецификатор услуги провайдера, нужен для установления цены (id_service - уникальный идентификатор шаблона услуги, необходим для установления цены и исполнителей.")
     service = models.ForeignKey(Service, null=True, on_delete=models.DO_NOTHING, help_text="спецификатор услуги провайдера, нужен для установления цены (id_service - уникальный идентификатор шаблона услуги, необходим для установления цены и исполнителей.")
     service_type = models.ForeignKey(ServiceType, null=True, on_delete=models.DO_NOTHING, help_text="тип заказа по классификатору услу")
     service_type = models.ForeignKey(ServiceType, null=True, on_delete=models.DO_NOTHING, help_text="тип заказа по классификатору услу")
     state = models.CharField(max_length=150, help_text="текущий статус заказа из возможных на платформе")
     state = models.CharField(max_length=150, help_text="текущий статус заказа из возможных на платформе")
     id_metaservice = models.BigIntegerField(null=True, help_text="уникальный идентификатор мета-сервиса, необходимый для синхронизации данных. Если при синхронизации возникает конфликт (несовместимость) с другим сервисом, предлагается или форсировать изменения везде (если возможно), либо is_global выставляется как false.")
     id_metaservice = models.BigIntegerField(null=True, help_text="уникальный идентификатор мета-сервиса, необходимый для синхронизации данных. Если при синхронизации возникает конфликт (несовместимость) с другим сервисом, предлагается или форсировать изменения везде (если возможно), либо is_global выставляется как false.")
     provider = models.ForeignKey(Provider, null=True, on_delete=models.DO_NOTHING, help_text="уникальный идентификатор поставщика услуги/аккаунта, который оказывает услугу. Если несколько провайдеров собираются мета-сервисом в цепочку, где на уровне связи с клиентом нельзя установить одно ответственное лицо, то указывается вспомогательный мета-провайдер сервиса, и это означает, что мета-сервис несет ответственность перед пользователем за сборку услуги воедино.") 
     provider = models.ForeignKey(Provider, null=True, on_delete=models.DO_NOTHING, help_text="уникальный идентификатор поставщика услуги/аккаунта, который оказывает услугу. Если несколько провайдеров собираются мета-сервисом в цепочку, где на уровне связи с клиентом нельзя установить одно ответственное лицо, то указывается вспомогательный мета-провайдер сервиса, и это означает, что мета-сервис несет ответственность перед пользователем за сборку услуги воедино.") 
-    receiver = models.ForeignKey(SharixUser, null=True, related_name="user_id", on_delete=models.DO_NOTHING, help_text="пользователь/аккаунт, который принимает оказываемые услуги")
+    receiver = models.ForeignKey(get_user_model(), null=True, related_name="user_id", on_delete=models.DO_NOTHING, help_text="пользователь/аккаунт, который принимает оказываемые услуги")
     client_id = models.ForeignKey(Client, null=True, on_delete=models.DO_NOTHING, help_text="клиент/аккаунт, который оплачивает все оказанные услуги") 
     client_id = models.ForeignKey(Client, null=True, on_delete=models.DO_NOTHING, help_text="клиент/аккаунт, который оплачивает все оказанные услуги") 
     time_created = models.DateTimeField(auto_now_add=True, help_text="время создания заказа")
     time_created = models.DateTimeField(auto_now_add=True, help_text="время создания заказа")
     time_placed = models.DateTimeField(help_text="время размещения заказа")
     time_placed = models.DateTimeField(help_text="время размещения заказа")

+ 3 - 3
models/permissions.py

@@ -1,5 +1,5 @@
 from django.db import models
 from django.db import models
-from SharixAdmin.models import SharixUser
+from django.contrib.auth import get_user_model
 from tickets.models import Ticket
 from tickets.models import Ticket
 
 
 class Permissions(models.Model):
 class Permissions(models.Model):
@@ -12,8 +12,8 @@ class Permissions(models.Model):
     check_date = models.DateTimeField(null=True, help_text="timestamp проверки")
     check_date = models.DateTimeField(null=True, help_text="timestamp проверки")
     id_permissions = models.BigIntegerField(help_text="уникальный идентификатор определяющий наличие разрешения из множества в словаре - выданных пользователю/клиенту/аккаунту")
     id_permissions = models.BigIntegerField(help_text="уникальный идентификатор определяющий наличие разрешения из множества в словаре - выданных пользователю/клиенту/аккаунту")
     check_level = models.CharField(max_length=10, help_text="(check-level из классификатора платформы) - информация об уровне проверки. Проверка может быть проведена как платформой, так и мета-сервисом, так и партнером мета-сервиса, а может быть и никем (просто загружен). Указывается, так как достоверность проверки разная. Экзамен, проверенный только на низком уровне, не принимается во внимание как имеющийся до прохождения более высокоуровневой проверки.")
     check_level = models.CharField(max_length=10, help_text="(check-level из классификатора платформы) - информация об уровне проверки. Проверка может быть проведена как платформой, так и мета-сервисом, так и партнером мета-сервиса, а может быть и никем (просто загружен). Указывается, так как достоверность проверки разная. Экзамен, проверенный только на низком уровне, не принимается во внимание как имеющийся до прохождения более высокоуровневой проверки.")
-    checked_by = models.ForeignKey(SharixUser, related_name="checked_by_perm", on_delete=models.DO_NOTHING, null=True, help_text="userid проверившего")
-    user_id = models.ForeignKey(SharixUser, related_name="user_id_perm", on_delete=models.DO_NOTHING, null=True, help_text="уникальный идентификатор пользователя/клиента/аккаунта, которым была пройдена проверка и получено разрешение")
+    checked_by = models.ForeignKey(get_user_model(), related_name="checked_by_perm", on_delete=models.DO_NOTHING, null=True, help_text="userid проверившего")
+    user_id = models.ForeignKey(get_user_model(), related_name="user_id_perm", on_delete=models.DO_NOTHING, null=True, help_text="уникальный идентификатор пользователя/клиента/аккаунта, которым была пройдена проверка и получено разрешение")
     status = models.CharField(max_length=150, help_text="статус обработки заявки в системе заявок")
     status = models.CharField(max_length=150, help_text="статус обработки заявки в системе заявок")
     ticket_status = models.ForeignKey(Ticket, on_delete=models.DO_NOTHING, null=True, help_text="id заявки, по которой происходит проверка статуса relationship. State меняется только в результате изменений в заявке.")
     ticket_status = models.ForeignKey(Ticket, on_delete=models.DO_NOTHING, null=True, help_text="id заявки, по которой происходит проверка статуса relationship. State меняется только в результате изменений в заявке.")
     id_metaservice = models.BigIntegerField(help_text=" уникальный идентификатор мета-сервиса, необходимый для синхронизации данных.")
     id_metaservice = models.BigIntegerField(help_text=" уникальный идентификатор мета-сервиса, необходимый для синхронизации данных.")

+ 4 - 2
models/provider.py

@@ -1,8 +1,10 @@
 from django.db import models
 from django.db import models
-from SharixAdmin.models import SharixUser
+from django.contrib.auth import get_user_model
+
 from metaservicesynced.models.company import Company
 from metaservicesynced.models.company import Company
 from tickets.models import Ticket
 from tickets.models import Ticket
 
 
+
 class Provider(models.Model):
 class Provider(models.Model):
     """
     """
     Provider – единица описания поставщика услуг/ответственного лица за определенный ресурс (например, машину). 
     Provider – единица описания поставщика услуг/ответственного лица за определенный ресурс (например, машину). 
@@ -12,7 +14,7 @@ class Provider(models.Model):
 
 
     type = models.CharField(max_length=150, help_text="тип поставщика (партнер/ответственное лицо/поставщик услуг). Смысл такой - провайдер это статус пользователя, который, в зависимости от применения, может нести разный смысл и подразумевает под собой какой-то тип действия. Обычные исполнители - это провайдеры услуг (код 3). Ответственные за какое-то имущество, которые сдают его в аренду - это тоже провайдеры (код 2). Ответственные за набор услуг перед метасервисом (фактически - назначенные админы) - это провайдеры-партнеры (код 1)")
     type = models.CharField(max_length=150, help_text="тип поставщика (партнер/ответственное лицо/поставщик услуг). Смысл такой - провайдер это статус пользователя, который, в зависимости от применения, может нести разный смысл и подразумевает под собой какой-то тип действия. Обычные исполнители - это провайдеры услуг (код 3). Ответственные за какое-то имущество, которые сдают его в аренду - это тоже провайдеры (код 2). Ответственные за набор услуг перед метасервисом (фактически - назначенные админы) - это провайдеры-партнеры (код 1)")
     company_id = models.ForeignKey(Company, on_delete=models.DO_NOTHING, null=True, help_text="уникальный идентификатор компании, от лица которой выступает провайдер. Смысл такой - ответственны могут быть только одушевленные лица, компании - не одушевленные. Все услуги предоставляются через компании-партнеры, самозанятые или ИП являются единицами таких компаний.")
     company_id = models.ForeignKey(Company, on_delete=models.DO_NOTHING, null=True, help_text="уникальный идентификатор компании, от лица которой выступает провайдер. Смысл такой - ответственны могут быть только одушевленные лица, компании - не одушевленные. Все услуги предоставляются через компании-партнеры, самозанятые или ИП являются единицами таких компаний.")
-    user_id = models.ForeignKey(SharixUser, on_delete=models.DO_NOTHING, null=True, help_text="уникальный идентификатор конкретного пользователя системы (meta-user), который будет оказывать услугу. Один пользователь может быть провайдером нескольких услуг. Статус провайдера означает, что с данным пользователем может быть установлена связь, как с исполнителем.")
+    user_id = models.ForeignKey(get_user_model(), on_delete=models.DO_NOTHING, null=True, help_text="уникальный идентификатор конкретного пользователя системы (meta-user), который будет оказывать услугу. Один пользователь может быть провайдером нескольких услуг. Статус провайдера означает, что с данным пользователем может быть установлена связь, как с исполнителем.")
     id_metaservice = models.BigIntegerField(null=True, help_text="уникальный идентификатор мета-сервиса, необходимый для синхронизации данных. Один и тот же провайдер может быть для нескольких мета-сервисов, соответственно если происходят изменения в одном, то либо форсируется изменение во всех (если возможно), либо снимается is_global. Соответственно при изменении is_global в true должно происходить согласование с остальными копиями в других сервисах. Нужен в том числе для того, чтобы выяснять, в каких еще сервисах есть этот провайдер.")
     id_metaservice = models.BigIntegerField(null=True, help_text="уникальный идентификатор мета-сервиса, необходимый для синхронизации данных. Один и тот же провайдер может быть для нескольких мета-сервисов, соответственно если происходят изменения в одном, то либо форсируется изменение во всех (если возможно), либо снимается is_global. Соответственно при изменении is_global в true должно происходить согласование с остальными копиями в других сервисах. Нужен в том числе для того, чтобы выяснять, в каких еще сервисах есть этот провайдер.")
     requirements = models.CharField(max_length=300, help_text="требования для того, чтобы можно было предоставлять услуги любые в этом метасервисе в целом (самые строгие)")
     requirements = models.CharField(max_length=300, help_text="требования для того, чтобы можно было предоставлять услуги любые в этом метасервисе в целом (самые строгие)")
     status = models.CharField(max_length=150, help_text="статус пользователя в системе относительно прохождения проверок (activity_status) (может быть active только в том случае, если ticket, влияющий на статус - закрыт.")
     status = models.CharField(max_length=150, help_text="статус пользователя в системе относительно прохождения проверок (activity_status) (может быть active только в том случае, если ticket, влияющий на статус - закрыт.")

+ 5 - 3
models/relationship.py

@@ -1,15 +1,17 @@
 from django.db import models
 from django.db import models
-from SharixAdmin.models import SharixUser
+from django.contrib.auth import get_user_model
+
 from tickets.models import Ticket
 from tickets.models import Ticket
 
 
+
 class Relationship(models.Model):
 class Relationship(models.Model):
     """
     """
     Relationship - описание связей 
     Relationship - описание связей 
     (желательных - как имеющиеся договорные отношения, 
     (желательных - как имеющиеся договорные отношения, 
     и нежелательных - как пожелание любой из сторон)
     и нежелательных - как пожелание любой из сторон)
     """
     """
-    user_id_who = models.ForeignKey(SharixUser, related_name="user_id_who", on_delete=models.DO_NOTHING, help_text="уникальный идентификатор инициатора договорных отношений")
-    user_id_whom = models.ForeignKey(SharixUser,  related_name="user_id_whom", on_delete=models.DO_NOTHING, help_text=" уникальный идентификатор того с кем связываются")
+    user_id_who = models.ForeignKey(get_user_model(), related_name="user_id_who", on_delete=models.DO_NOTHING, help_text="уникальный идентификатор инициатора договорных отношений")
+    user_id_whom = models.ForeignKey(get_user_model(),  related_name="user_id_whom", on_delete=models.DO_NOTHING, help_text=" уникальный идентификатор того с кем связываются")
     neg_type = models.IntegerField(help_text="тип договорных отношений по его уникальному идентификатору")
     neg_type = models.IntegerField(help_text="тип договорных отношений по его уникальному идентификатору")
     id_metaservice = models.BigIntegerField(null=True, help_text="уникальный идентификатор мета-сервиса, необходимый для синхронизации данных. Один и тот же провайдер может быть для нескольких мета-сервисов, соответственно если происходят изменения в одном, то либо форсируется изменение во всех (если возможно), либо снимается is_global. Соответственно при изменении is_global в true должно происходить согласование с остальными копиями в других сервисах. Нужен в том числе для того, чтобы выяснять, в каких еще сервисах есть этот провайдер.")
     id_metaservice = models.BigIntegerField(null=True, help_text="уникальный идентификатор мета-сервиса, необходимый для синхронизации данных. Один и тот же провайдер может быть для нескольких мета-сервисов, соответственно если происходят изменения в одном, то либо форсируется изменение во всех (если возможно), либо снимается is_global. Соответственно при изменении is_global в true должно происходить согласование с остальными копиями в других сервисах. Нужен в том числе для того, чтобы выяснять, в каких еще сервисах есть этот провайдер.")
     requirements = models.CharField(max_length=150, help_text="код необходимого (самый строгий) для того, чтобы ресурс мог стать активным. Оно вставляется автоматом, в соответствии с профилем метасервиса. Далее, если кому-то из партнеров или пользователей надо строже - применяется более строгий вариант на данную связь.")
     requirements = models.CharField(max_length=150, help_text="код необходимого (самый строгий) для того, чтобы ресурс мог стать активным. Оно вставляется автоматом, в соответствии с профилем метасервиса. Далее, если кому-то из партнеров или пользователей надо строже - применяется более строгий вариант на данную связь.")

+ 4 - 2
models/resource.py

@@ -1,14 +1,16 @@
 from django.db import models
 from django.db import models
-from SharixAdmin.models import SharixUser
+from django.contrib.auth import get_user_model
+
 from tickets.models import Ticket
 from tickets.models import Ticket
 
 
+
 class Resource(models.Model):
 class Resource(models.Model):
     """
     """
     Resource/Список ресурсов – автомобили/дома/объекты сервиса
     Resource/Список ресурсов – автомобили/дома/объекты сервиса
     """
     """
 
 
     type_id = models.CharField(max_length=10, help_text="определение типа ресурса по его уникальному идентификатору в соответствии с классификатором")
     type_id = models.CharField(max_length=10, help_text="определение типа ресурса по его уникальному идентификатору в соответствии с классификатором")
-    user_id = models.ForeignKey(SharixUser, on_delete=models.DO_NOTHING, help_text="уникальный идентификатор ответственного (за состояние, доступность и так далее - то есть для договора) пользователя - идентификатор провайдера, по которому восстанавливается конкретный пользовательский аккаунт")
+    user_id = models.ForeignKey(get_user_model(), on_delete=models.DO_NOTHING, help_text="уникальный идентификатор ответственного (за состояние, доступность и так далее - то есть для договора) пользователя - идентификатор провайдера, по которому восстанавливается конкретный пользовательский аккаунт")
     requirements = models.CharField(max_length=150, help_text="код необходимого (самый строгий) для того, чтобы ресурс мог стать активным")
     requirements = models.CharField(max_length=150, help_text="код необходимого (самый строгий) для того, чтобы ресурс мог стать активным")
     status = models.CharField(max_length=150, help_text="статус ресурса в системе относительно прохождения проверок (activity_status) (может быть active только в том случае, если ticket, влияющий на статус - закрыт.")
     status = models.CharField(max_length=150, help_text="статус ресурса в системе относительно прохождения проверок (activity_status) (может быть active только в том случае, если ticket, влияющий на статус - закрыт.")
     ticket_status = models.ForeignKey(Ticket, on_delete=models.DO_NOTHING, help_text="id последнего актуального тикета, касающийся статуса. Если он меняет статус на закрытый - вызывается проверка, которая смотрит, нет ли другого открытого по пользователю.")
     ticket_status = models.ForeignKey(Ticket, on_delete=models.DO_NOTHING, help_text="id последнего актуального тикета, касающийся статуса. Если он меняет статус на закрытый - вызывается проверка, которая смотрит, нет ли другого открытого по пользователю.")

+ 2 - 0
models/service.py

@@ -1,9 +1,11 @@
 from django.db import models
 from django.db import models
+
 from metaservicesynced.models.provider import Provider
 from metaservicesynced.models.provider import Provider
 from metaservicesynced.models.servicetype import ServiceType
 from metaservicesynced.models.servicetype import ServiceType
 from tickets.models import Ticket
 from tickets.models import Ticket
 from metaservicesynced.models.resource import Resource
 from metaservicesynced.models.resource import Resource
 
 
+
 class Service(models.Model):
 class Service(models.Model):
     """
     """
     service - спецификация услуги каждого конкретного поставщика 
     service - спецификация услуги каждого конкретного поставщика 

+ 2 - 0
models/servicetype.py

@@ -1,6 +1,8 @@
 from django.db import models
 from django.db import models
+
 from tickets.models import Ticket
 from tickets.models import Ticket
 
 
+
 class ServiceType(models.Model):
 class ServiceType(models.Model):
     """
     """
     Перечень типов услуг
     Перечень типов услуг