1
0

seed.py 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. from django.contrib.auth.models import Group
  2. from django.contrib.auth import get_user_model
  3. from django.contrib.auth.hashers import make_password
  4. from tickets.models import Ticket, TicketList
  5. from datetime import datetime
  6. def create_metaservice_default_data():
  7. create_metaservice_initial_groups()
  8. create_metaservice_ticket_lists()
  9. def create_metaservice_initial_groups():
  10. groups = [
  11. ('METASERVICE-ADMIN', 21),
  12. ('METASERVICE-SUPERVISOR', 22),
  13. ('METASERVICE-SUPPORT', 23),
  14. ('METASERVICE-TECHSUPPORT', 24),
  15. ('PARTNER-ADMIN', 31),
  16. ('PARTNER-SUPERVISOR', 32),
  17. ('PARTNER-SUPPORT', 33),
  18. ('PARTNER-TECHSUPPORT', 34),
  19. ('PROVIDER', 41),
  20. ('CLIENT', 51),
  21. ('GUEST', 61),
  22. ('TEST', 99)
  23. ]
  24. for name, pk in groups:
  25. group, created = Group.objects.get_or_create(name=name, defaults={'pk': pk})
  26. if not created:
  27. print(f"Group {name} already exists.")
  28. def create_metaservice_ticket_lists():
  29. ticket_data = [
  30. # METASERVICE
  31. (2101, 'Активация партнеров (NEG_REQUEST)', 'METASERVICE-ADMIN'),
  32. (2102, 'Права в сервисе (ACCESS_REQUEST)', 'METASERVICE-ADMIN'),
  33. (2103, 'Проверка документов (ST_REQUEST)', 'METASERVICE-ADMIN'),
  34. (2201, 'Активность пользователей (ST_REQUEST)', 'METASERVICE-SUPERVISOR'),
  35. (2202, 'Оперативный доступ (ST_REQUEST)', 'METASERVICE-SUPERVISOR'),
  36. (2203, 'Оперативный доступ экстра (ACCESS_REQUEST)', 'METASERVICE-SUPERVISOR'),
  37. (2204, 'Права сервиса (ST_REQUEST)', 'METASERVICE-SUPERVISOR'),
  38. (2205, 'Проверка документов (ST_REQUEST)', 'METASERVICE-SUPERVISOR'),
  39. (2301, 'Входящие обычные заявки (ST_REQUEST)', 'METASERVICE-SUPPORT'),
  40. (2302, 'Заявки на услуги сервиса (SERVICE_REQUEST)', 'METASERVICE-SUPPORT'),
  41. (2401, 'Входящие технические заявки (ST_REQUEST)', 'METASERVICE-TECHSUPPORT'),
  42. # PARTNER
  43. (3101, 'Документы исполнителей (ST_REQUEST)', 'PARTNER-ADMIN'),
  44. (3102, 'Документы ресурсов (ST_REQUEST)', 'PARTNER-ADMIN'),
  45. (3103, 'Права в партнерке (ACCESS_REQUEST)', 'PARTNER-ADMIN'),
  46. (3201, 'Активность внутри партнера (ST_REQUEST)', 'PARTNER-SUPERVISOR'),
  47. (3202, 'Документы исполнителей (ST_REQUEST)', 'PARTNER-SUPERVISOR'),
  48. (3203, 'Документы ресурсов (ST_REQUEST)', 'PARTNER-SUPERVISOR'),
  49. (3204, 'Доступ внутри партнера (ST_REQUEST)', 'PARTNER-SUPERVISOR'),
  50. (3205, 'Оперативный доступ (ST_REQUEST)', 'PARTNER-SUPERVISOR'),
  51. (3206, 'Оперативный доступ экстра (ST_REQUEST)', 'PARTNER-SUPERVISOR'),
  52. (3207, 'Ручное подтверждение заявок (ACCESS-REQUEST)', 'PARTNER-SUPERVISOR'),
  53. (3401, 'Входящие технические заявки (ST_REQUEST)', 'PARTNER-TECHSUPPORT'),
  54. ]
  55. for pk, name, group_name in ticket_data:
  56. group = Group.objects.get(name=group_name)
  57. # Проверяем существование тикета с таким же name и group
  58. ticket_exists = TicketList.objects.filter(group=group, name=name).exists()
  59. if not ticket_exists:
  60. TicketList.objects.create(pk=pk, name=name, group=group)
  61. def create_metaservice_test_users():
  62. """
  63. Создает тестовых пользователей
  64. """
  65. User = get_user_model()
  66. # Создание админа
  67. if not get_user_model().objects.filter(phone_number="11111111111").exists():
  68. admin = get_user_model().objects.create_superuser(
  69. 'admin',
  70. 'admin@admin.com',
  71. 'Sharix!',
  72. phone_number="11111111111"
  73. )
  74. password = make_password("sharix-open-test")
  75. test_group = Group.objects.get(pk=99)
  76. # Группа, в которой надо создать пользователя и их количество
  77. test_users = [
  78. ('METASERVICE-ADMIN', 1),
  79. ('METASERVICE-SUPERVISOR', 3),
  80. ('METASERVICE-SUPPORT', 3),
  81. ('METASERVICE-TECHSUPPORT', 3),
  82. ('PARTNER-ADMIN', 1),
  83. ('PARTNER-SUPERVISOR', 3),
  84. ('PARTNER-SUPPORT', 3),
  85. ('PARTNER-TECHSUPPORT', 3),
  86. ('PROVIDER', 3),
  87. ('CLIENT', 3),
  88. ('GUEST', 3)
  89. ]
  90. for test_user in test_users:
  91. group_name = test_user[0]
  92. group = Group.objects.get(name=group_name)
  93. for i in range(1, test_user[1] + 1):
  94. user, created = User.objects.get_or_create(
  95. phone_number=f"{group.pk}0{i}",
  96. defaults={
  97. 'last_name': i,
  98. 'first_name': group_name,
  99. 'email': f"test-{group_name.lower()}-{i}@domain.org",
  100. 'username': f"test-{group_name.lower()}-{i}",
  101. 'middle_name': "Test",
  102. 'password': password
  103. }
  104. )
  105. if created:
  106. user.groups.add(
  107. test_group,
  108. group
  109. )
  110. # Создание тикета о создании пользователей
  111. if not Ticket.objects.all().exists():
  112. # test-metaservice-admin-1
  113. user = get_user_model().objects.filter(phone_number=2101).get()
  114. ticket_list = TicketList.objects.get(pk=2103)
  115. Ticket.objects.create(
  116. title=f"Создание тестовых пользователей",
  117. ticket_list=ticket_list,
  118. ticket_type=1, # ST_REQUEST
  119. due_date=datetime.now().date(),
  120. created_by=user,
  121. note=f"""
  122. Успешное создание тестовых пользователей
  123. """
  124. )