permissions.py 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. from django.contrib.auth import get_user_model
  2. from django.db import models
  3. from tickets.models import Ticket
  4. from dbsynce.docs.database.permissions import Permissions as HelpTexts
  5. from dbsynce.docs.verbose_names.permissions import Permissions as VerboseName
  6. from core.settings_vars import METASERVICE_ID
  7. from dbsynce.lib import dicts
  8. class Permissions(models.Model):
  9. """
  10. Разрешения - (проверки/экзамены).
  11. По смыслу это что-то вроде “документа на право что-то делать” - на данном этапе это ограничено метасервисом/платформой,
  12. при этом он может быть полностью цифровым (выданным платформой/сервисом).
  13. """
  14. # ID METASERVICE
  15. id_metaservice = models.PositiveIntegerField(
  16. default=METASERVICE_ID,
  17. verbose_name = VerboseName.id_metaservice,
  18. help_text=HelpTexts.id_metaservice,
  19. )
  20. # DATA
  21. id_permissions = models.BigIntegerField(
  22. verbose_name = VerboseName.id_permissions,
  23. help_text=HelpTexts.id_permissions,
  24. )
  25. #permission_type = models.BigIntegerField(
  26. # help_text=HelpTexts.permission_type
  27. #)
  28. check_level = models.CharField(
  29. max_length=10,
  30. verbose_name = VerboseName.check_level,
  31. help_text=HelpTexts.check_level,
  32. )
  33. status = models.CharField(
  34. max_length=1,
  35. default="1",
  36. choices = list(dicts.activity_status_by_code.items()),
  37. verbose_name = VerboseName.status,
  38. help_text=HelpTexts.status,
  39. )
  40. check_date = models.DateTimeField(
  41. null=True,
  42. verbose_name = VerboseName.check_date,
  43. help_text=HelpTexts.check_date,
  44. )
  45. expire_date = models.DateField(
  46. null=True,
  47. verbose_name = VerboseName.expire_date,
  48. help_text=HelpTexts.expire_date,
  49. )
  50. # OTHER
  51. is_global = models.CharField(
  52. max_length=1,
  53. default="f",
  54. choices = list(dicts.is_global_by_code.items()),
  55. verbose_name = VerboseName.is_global,
  56. help_text=HelpTexts.is_global,
  57. )
  58. is_visible = models.CharField(
  59. max_length=1,
  60. default="f",
  61. choices = list(dicts.is_visible_by_code.items()),
  62. verbose_name = VerboseName.is_visible,
  63. help_text=HelpTexts.is_visible,
  64. )
  65. # FK
  66. ticket_status = models.ForeignKey(
  67. Ticket,
  68. on_delete=models.DO_NOTHING,
  69. null=True,
  70. verbose_name = VerboseName.ticket_status,
  71. help_text=HelpTexts.ticket_status,
  72. )
  73. user = models.ForeignKey(
  74. get_user_model(),
  75. related_name="user_perm",
  76. on_delete=models.DO_NOTHING,
  77. null=True,
  78. verbose_name = VerboseName.user,
  79. help_text=HelpTexts.user
  80. )
  81. checked_by = models.ForeignKey(
  82. get_user_model(),
  83. related_name="checked_by_perm",
  84. on_delete=models.DO_NOTHING,
  85. null=True,
  86. verbose_name = VerboseName.checked_by,
  87. help_text=HelpTexts.checked_by,
  88. )
  89. class Meta:
  90. db_table = "permissions"
  91. verbose_name = "Разрешение"
  92. verbose_name_plural = "Разрешения"