seed.py 8.4 KB

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