service.py 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. from django.db import models
  2. from dbsynce.models.resource import Resource
  3. from dbsynce.models.company import Company
  4. from dbsynce.models.service_category import ServiceCategory
  5. from tickets.models import Ticket
  6. from dbsynce.docs.database.service import Service as HelpTexts
  7. from dbsynce.docs.verbose_names.service import Service 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 Service(models.Model):
  12. """
  13. service - спецификация услуги каждого конкретного поставщика
  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. codename = models.CharField(
  24. max_length=30,
  25. verbose_name = VerboseName.codename,
  26. help_text=HelpTexts.codename,
  27. )
  28. requirements = models.CharField(
  29. max_length=50,
  30. #TODO fix default value!
  31. default=sv.MIN_SERVICE_REQUIREMENTS,
  32. verbose_name = VerboseName.requirements,
  33. help_text=HelpTexts.requirements,
  34. )
  35. caption = models.CharField(
  36. max_length=255,
  37. null=True,
  38. verbose_name = VerboseName.caption,
  39. help_text=HelpTexts.caption,
  40. )
  41. description = models.TextField(
  42. blank=True,
  43. verbose_name = VerboseName.description,
  44. help_text=HelpTexts.description,
  45. )
  46. resource_type = models.CharField(
  47. max_length=5,
  48. null=True,
  49. choices = list(dicts.resource_type_by_code.items()),
  50. verbose_name = VerboseName.resource_type,
  51. help_text=HelpTexts.resource_type,
  52. )
  53. # DATA
  54. #price_type = models.ForeignKey(
  55. # ServiceCategory,
  56. # max_length=1,
  57. # help_text=HelpTexts.price_type
  58. #)
  59. price_km = models.DecimalField(
  60. max_digits=9,
  61. decimal_places=2,
  62. null=True,
  63. verbose_name = VerboseName.price_km,
  64. help_text=HelpTexts.price_km,
  65. )
  66. price_min = models.DecimalField(
  67. max_digits=9,
  68. decimal_places=2,
  69. null=True,
  70. verbose_name = VerboseName.price_min,
  71. help_text=HelpTexts.price_min,
  72. )
  73. price_amount = models.DecimalField(
  74. max_digits=9,
  75. decimal_places=2,
  76. null=True,
  77. verbose_name = VerboseName.price_amount,
  78. help_text=HelpTexts.price_amount,
  79. )
  80. company_comission = models.FloatField(
  81. verbose_name = VerboseName.company_comission,
  82. help_text=HelpTexts.company_comission,
  83. )
  84. #requirements = models.CharField(
  85. # max_length=50,
  86. # verbose_name = VerboseName.requirements,
  87. # help_text=HelpTexts.requirements,
  88. #)
  89. status = models.CharField(
  90. max_length=1,
  91. choices = list(dicts.activity_status_by_code.items()),
  92. verbose_name = VerboseName.status,
  93. help_text=HelpTexts.status,
  94. default="1",
  95. )
  96. # OTHER
  97. is_global = models.CharField(
  98. max_length=1,
  99. default="f",
  100. choices = list(dicts.is_global_by_code.items()),
  101. verbose_name = VerboseName.is_global,
  102. help_text=HelpTexts.is_global,
  103. )
  104. is_visible = models.CharField(
  105. max_length=1,
  106. default="f",
  107. choices = list(dicts.is_visible_by_code.items()),
  108. verbose_name = VerboseName.is_visible,
  109. help_text=HelpTexts.is_visible
  110. )
  111. # FK
  112. ticket_status = models.ForeignKey(
  113. Ticket,
  114. null=True,
  115. on_delete=models.DO_NOTHING,
  116. verbose_name = VerboseName.ticket_status,
  117. help_text=HelpTexts.ticket_status,
  118. )
  119. #resource = models.ForeignKey(
  120. # Resource,
  121. # on_delete=models.DO_NOTHING,
  122. # blank=True,
  123. # null=True,
  124. # help_text=HelpTexts.resource
  125. #)
  126. company = models.ForeignKey(
  127. Company,
  128. on_delete=models.DO_NOTHING,
  129. blank=True,
  130. null=True,
  131. verbose_name = VerboseName.company,
  132. help_text=HelpTexts.company,
  133. )
  134. service_category = models.ForeignKey(
  135. ServiceCategory,
  136. on_delete=models.DO_NOTHING,
  137. verbose_name = VerboseName.service_category,
  138. help_text=HelpTexts.service_category,
  139. )
  140. def deactivate(self):
  141. self.status = "1"
  142. self.save()
  143. def activate(self):
  144. self.status = "0"
  145. self.save()
  146. class Meta:
  147. db_table = "service"
  148. verbose_name = "Услуга"
  149. verbose_name_plural = "Услуги"