provider.py 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. from django.contrib.auth import get_user_model
  2. from django.db import models
  3. from dbsynce.models.service import Service
  4. from dbsynce.models.resource import Resource
  5. from tickets.models import Ticket
  6. from dbsynce.docs.database.provider import Provider as HelpTexts
  7. from dbsynce.docs.verbose_names.provider import Provider as VerboseName
  8. from core.settings_vars import METASERVICE_ID
  9. from dbsynce.lib import dicts
  10. import core.settings_vars as sv
  11. class Provider(models.Model):
  12. """
  13. Provider – единица описания поставщика услуг/ответственного лица за определенный ресурс (например, машину).
  14. По сути - это надстройка к клиентскому аккаунту, иллюстрирующая, что данный пользователь может выступать не только в роли потребителя.
  15. То есть, по тому, какие “провайдеры” находятся по идентификатору пользователя - можно установить конкретный список услуг данного пользователя.
  16. """
  17. # ID METASERVICE
  18. id_metaservice = models.PositiveIntegerField(
  19. default=METASERVICE_ID,
  20. verbose_name = VerboseName.id_metaservice,
  21. help_text=HelpTexts.id_metaservice,
  22. )
  23. # DATA
  24. gap = models.IntegerField(
  25. verbose_name = VerboseName.gap,
  26. help_text=HelpTexts.gap,
  27. )
  28. # gap = models.DateTimeField(
  29. # max_length=10,
  30. # help_text=HelpTexts.gap
  31. # )
  32. requirements = models.CharField(
  33. max_length=50,
  34. #TODO ADD CORRECT DEFAULT!
  35. default=sv.MIN_PROVIDER_REQUIREMENTS,
  36. verbose_name = VerboseName.requirements,
  37. help_text=HelpTexts.requirements,
  38. )
  39. status = models.CharField(
  40. max_length=1,
  41. default="1",
  42. choices = list(dicts.activity_status_by_code.items()),
  43. verbose_name = VerboseName.status,
  44. help_text=HelpTexts.status,
  45. )
  46. service_status = models.CharField(
  47. max_length=1,
  48. default="2",
  49. choices = list(dicts.service_status_by_code.items()),
  50. verbose_name = VerboseName.service_status,
  51. help_text=HelpTexts.service_status,
  52. )
  53. location_type = models.CharField(
  54. max_length=1,
  55. choices = list(dicts.location_type_by_code.items()),
  56. verbose_name = VerboseName.location_type,
  57. help_text=HelpTexts.location_type,
  58. )
  59. default_location = models.CharField(
  60. max_length=30,
  61. verbose_name = VerboseName.default_location,
  62. help_text=HelpTexts.default_location,
  63. )
  64. # OTHER
  65. is_global = models.CharField(
  66. max_length=1,
  67. default="f",
  68. choices = list(dicts.is_global_by_code.items()),
  69. verbose_name = VerboseName.is_global,
  70. help_text=HelpTexts.is_global,
  71. )
  72. is_visible = models.CharField(
  73. max_length=1,
  74. default="f",
  75. choices = list(dicts.is_visible_by_code.items()),
  76. verbose_name = VerboseName.is_visible,
  77. help_text=HelpTexts.is_visible,
  78. )
  79. # FK
  80. user = models.ForeignKey(
  81. get_user_model(),
  82. on_delete=models.DO_NOTHING,
  83. null=True,
  84. verbose_name = VerboseName.user,
  85. help_text=HelpTexts.user
  86. )
  87. ticket_status = models.ForeignKey(
  88. Ticket,
  89. on_delete=models.DO_NOTHING,
  90. null=True,
  91. verbose_name = VerboseName.ticket_status,
  92. help_text=HelpTexts.ticket_status,
  93. )
  94. service = models.ForeignKey(
  95. Service,
  96. on_delete=models.DO_NOTHING,
  97. verbose_name = VerboseName.service,
  98. null=True,
  99. help_text=HelpTexts.service,
  100. )
  101. resource = models.ForeignKey(
  102. Resource,
  103. on_delete=models.DO_NOTHING,
  104. blank=True,
  105. null=True,
  106. verbose_name = VerboseName.resource,
  107. help_text=HelpTexts.resource,
  108. )
  109. def deactivate(self):
  110. self.status = "1"
  111. self.save()
  112. def activate(self):
  113. self.status = "0"
  114. self.save()
  115. class Meta:
  116. db_table = "provider"
  117. verbose_name = "Поставщик"
  118. verbose_name_plural = "Поставщики"