seed.py 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185
  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. from dbsynce.lib.data import *
  7. from dbsynce.lib.ticket_gen import *
  8. from core.settings_vars import METASERVICE_ID
  9. def create_metaservice_default_data():
  10. create_metaservice_initial_groups()
  11. create_metaservice_ticket_lists()
  12. create_metaservice_test_users()
  13. create_metaservice_init_data()
  14. def create_metaservice_init_data():
  15. if not ServiceCategory.objects.filter(codename="test").exists():
  16. service_category=ServiceCategory(METASERVICE_ID, "test", "DSMPUB", "0", "Test", "Test service category", "https://wiki.sharix-app.org/doku.php/open/doc/usage", "3", 0.2, "0", "0", 1)
  17. metaserivce_admin = get_user_model().objects.get(phone_number=2101)
  18. create_service_category(service_category, metaserivce_admin)
  19. print(f"Service category test created.")
  20. else:
  21. print(f"Service category test already exists.")
  22. def create_metaservice_initial_groups():
  23. groups = [
  24. ('METASERVICE-ADMIN', 21),
  25. ('METASERVICE-SUPERVISOR', 22),
  26. ('METASERVICE-SUPPORT', 23),
  27. ('METASERVICE-TECHSUPPORT', 24),
  28. ('PARTNER-ADMIN', 31),
  29. ('PARTNER-SUPERVISOR', 32),
  30. ('PARTNER-SUPPORT', 33),
  31. ('PARTNER-TECHSUPPORT', 34),
  32. ('PROVIDER', 41),
  33. ('CLIENT', 51),
  34. ('GUEST', 61),
  35. ('TEST', 99)
  36. ]
  37. for name, pk in groups:
  38. group, created = Group.objects.get_or_create(name=name, defaults={'pk': pk})
  39. if not created:
  40. print(f"Group {name} already exists.")
  41. else:
  42. print(f"Group {name} created.")
  43. def create_metaservice_ticket_lists():
  44. ticket_data = [
  45. # TECH-LOGS
  46. (1001, 'Технические логи Администратора Метасервиса', 'METASERVICE-ADMIN'),
  47. # METASERVICE
  48. (2101, 'Установление договорных взаимоотношений (NEG_REQUEST)', 'METASERVICE-ADMIN'),
  49. (2102, 'Права в админ.панели Сервиса (ACCESS_REQUEST)', 'METASERVICE-ADMIN'),
  50. (21031, 'Активация Типов услуг (ST_REQUEST)', 'METASERVICE-ADMIN'),
  51. (21032, 'Активация Услуг (согласование тарифов) (ST_REQUEST)', 'METASERVICE-ADMIN'),
  52. (21033, 'Активация Партнеров (ST_REQUEST)', 'METASERVICE-ADMIN'),
  53. (2201, 'Модерация пользователей (ST_REQUEST)', 'METASERVICE-SUPERVISOR'),
  54. (2200, 'Оперативный доступ (ST_REQUEST)', 'METASERVICE-SUPERVISOR'),
  55. (2202, 'Права в админ.панели Сервиса (ACCESS_REQUEST)', 'METASERVICE-SUPERVISOR'),
  56. (22034, 'Активация Исполнителей в Сервисе (ST_REQUEST)', 'METASERVICE-SUPERVISOR'),
  57. (22035, 'Активация Ресурсов в Сервисе (ST_REQUEST)', 'METASERVICE-SUPERVISOR'),
  58. (2205, 'Проверка документов (ST_REQUEST)', 'METASERVICE-SUPERVISOR'),
  59. (2206, 'Проверки для допусков (ST_REQUEST)', 'METASERVICE-SUPERVISOR'),
  60. (2301, 'Входящие заявки пользователей (ST_REQUEST)', 'METASERVICE-SUPPORT'),
  61. (2302, 'Заявки на услуги Сервиса (SERVICE_REQUEST)', 'METASERVICE-SUPPORT'),
  62. (2401, 'Входящие технические заявки (ST_REQUEST)', 'METASERVICE-TECHSUPPORT'),
  63. # PARTNER
  64. (3101, 'Установление договорных взаимоотношений (NEG_REQUEST)', 'PARTNER-ADMIN'),
  65. (3102, 'Права в админ.панели Партнера (ST_REQUEST)', 'PARTNER-ADMIN'),
  66. (31034, 'Активация Исполнителей (ST_REQUEST)', 'PARTNER-ADMIN'),
  67. (31035, 'Активация Ресурсов (ST_REQUEST)', 'PARTNER-ADMIN'),
  68. (3200, 'Оперативный доступ (ST_REQUEST)', 'PARTNER-SUPERVISOR'),
  69. (3202, 'Права в админ.панели Партнера (ACCESS_REQUEST)', 'PARTNER-SUPERVISOR'),
  70. (3205, 'Проверка документов (ST_REQUEST)', 'PARTNER-SUPERVISOR'),
  71. (3206, 'Проверки для допусков (ST_REQUEST)', 'PARTNER-SUPERVISOR'),
  72. (3301, 'Входящие заявки пользователей (ST_REQUEST)', 'METASERVICE-SUPPORT'),
  73. (3401, 'Входящие технические заявки (ST_REQUEST)', 'PARTNER-TECHSUPPORT'),
  74. ]
  75. for pk, name, group_name in ticket_data:
  76. group = Group.objects.get(name=group_name)
  77. # Проверяем существование тикета с таким же name и group
  78. ticket_exists = TicketList.objects.filter(group=group, name=name).exists()
  79. if not ticket_exists:
  80. TicketList.objects.create(pk=pk, name=name, group=group)
  81. print(f"TicketList {name} created.")
  82. else:
  83. print(f"TicketList {name} already exists.")
  84. def create_metaservice_test_users():
  85. """
  86. Создает тестовых пользователей
  87. """
  88. User = get_user_model()
  89. # Создание админа
  90. if not get_user_model().objects.filter(phone_number="11111111111").exists():
  91. admin = get_user_model().objects.create_superuser(
  92. 'admin',
  93. 'admin@admin.com',
  94. 'Sharix!',
  95. phone_number="11111111111"
  96. )
  97. print("Django admin created.")
  98. else:
  99. print("Django admin already exists.")
  100. password = make_password("sharix-open-test")
  101. test_group = Group.objects.get(pk=99)
  102. # Группа, в которой надо создать пользователя и их количество
  103. test_users = [
  104. ('METASERVICE-ADMIN', 1),
  105. ('METASERVICE-SUPERVISOR', 3),
  106. ('METASERVICE-SUPPORT', 3),
  107. ('METASERVICE-TECHSUPPORT', 3),
  108. ('PARTNER-ADMIN', 1),
  109. ('PARTNER-SUPERVISOR', 3),
  110. ('PARTNER-SUPPORT', 3),
  111. ('PARTNER-TECHSUPPORT', 3),
  112. ('PROVIDER', 3),
  113. ('CLIENT', 3),
  114. ('GUEST', 3)
  115. ]
  116. for test_user in test_users:
  117. group_name = test_user[0]
  118. group = Group.objects.get(name=group_name)
  119. for i in range(1, test_user[1] + 1):
  120. user, created = User.objects.get_or_create(
  121. phone_number=f"{group.pk}0{i}",
  122. defaults={
  123. 'last_name': i,
  124. 'first_name': group_name,
  125. 'email': f"test-{group_name.lower()}-{i}@domain.org",
  126. 'username': f"test-{group_name.lower()}-{i}",
  127. 'middle_name': "Test",
  128. 'password': password
  129. }
  130. )
  131. if created:
  132. user.groups.add(
  133. test_group,
  134. group
  135. )
  136. print(f"User {user.username} created.")
  137. else:
  138. print(f"User {user.username} already exists.")
  139. # Создание тикета о создании пользователей
  140. if not Ticket.objects.all().exists():
  141. # test-metaservice-admin-1
  142. user = get_user_model().objects.filter(phone_number=2101).get()
  143. ticket_list = TicketList.objects.get(pk=1001)
  144. ticket, created = Ticket.objects.get_or_create(
  145. title=f"Создание тестовых пользователей",
  146. ticket_list=ticket_list,
  147. ticket_type=1, # ST_REQUEST
  148. due_date=datetime.now().date(),
  149. created_by=user,
  150. note=f"""
  151. Успешное создание тестовых пользователей
  152. """
  153. )
  154. if created:
  155. print("Main Ticket created.")
  156. else:
  157. print("Main Ticket already exists.")