|
@@ -1,8 +1,11 @@
|
|
|
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 tickets.models import Ticket
|
|
|
|
|
|
+
|
|
|
class Company(models.Model):
|
|
|
legal_name = models.CharField(
|
|
|
"Название организации",
|
|
@@ -10,7 +13,7 @@ class Company(models.Model):
|
|
|
help_text="настоящее имя юридического лица"
|
|
|
)
|
|
|
|
|
|
-
|
|
|
+ # FIXME: Нет уверенности, что после удаления пользователя следует оставлять `models.DO_NOTHING`
|
|
|
repr_id = models.ForeignKey(
|
|
|
get_user_model(),
|
|
|
on_delete=models.DO_NOTHING,
|
|
@@ -28,7 +31,7 @@ class Company(models.Model):
|
|
|
help_text="статус обработки заявки в системе заявок"
|
|
|
)
|
|
|
|
|
|
-
|
|
|
+ # FIXME: Нет уверенности, что после удаления заявки следует оставлять `models.DO_NOTHING`
|
|
|
ticket_status = models.ForeignKey(
|
|
|
Ticket,
|
|
|
on_delete=models.DO_NOTHING,
|
|
@@ -80,13 +83,25 @@ class Company(models.Model):
|
|
|
help_text="доступно ли для планирования в цепочке с другими услугами в глобальном сервисе"
|
|
|
)
|
|
|
|
|
|
-
|
|
|
+ # FIXME: id_metaservice должно принимать текущий идентификатор метасервиса, на котором происходит создание записи
|
|
|
id_metaservice = models.BigIntegerField(
|
|
|
null=True,
|
|
|
help_text="уникальный идентификатор мета-сервиса, необходимый для синхронизации данных. Один и тот же провайдер может быть для нескольких мета-сервисов, соответственно если происходят изменения в одном, то либо форсируется изменение во всех (если возможно), либо снимается is_global. Соответственно при изменении is_global в true должно происходить согласование с остальными копиями в других сервисах. Нужен в том числе для того, чтобы выяснять, в каких еще сервисах есть этот провайдер."
|
|
|
)
|
|
|
+
|
|
|
+ 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,))
|
|
|
|
|
|
+ def deactivate(self):
|
|
|
+ self.status = "deactivated"
|
|
|
+ self.save()
|
|
|
|
|
|
class Meta:
|
|
|
db_table = "company"
|