seed.py 6.1 KB

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