service.py 4.6 KB

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