from django.contrib.auth.models import Group from django.contrib.auth import get_user_model from django.contrib.auth.hashers import make_password from tickets.models import Ticket, TicketList from datetime import datetime from dbsynce.lib.data import * from dbsynce.lib.ticket_gen import * from core.settings_vars import METASERVICE_ID def create_metaservice_default_data(): create_metaservice_initial_groups() create_metaservice_ticket_lists() create_metaservice_test_users() create_metaservice_init_data() def create_metaservice_init_data(): if not ServiceCategory.objects.filter(codename="test").exists(): 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) metaserivce_admin = get_user_model().objects.get(phone_number=2101) create_service_category(service_category, metaserivce_admin) print(f"Service category test created.") else: print(f"Service category test already exists.") def create_metaservice_initial_groups(): groups = [ ('METASERVICE-ADMIN', 21), ('METASERVICE-SUPERVISOR', 22), ('METASERVICE-SUPPORT', 23), ('METASERVICE-TECHSUPPORT', 24), ('PARTNER-ADMIN', 31), ('PARTNER-SUPERVISOR', 32), ('PARTNER-SUPPORT', 33), ('PARTNER-TECHSUPPORT', 34), ('PROVIDER', 41), ('CLIENT', 51), ('GUEST', 61), ('TEST', 99) ] for name, pk in groups: group, created = Group.objects.get_or_create(name=name, defaults={'pk': pk}) if not created: print(f"Group {name} already exists.") else: print(f"Group {name} created.") def create_metaservice_ticket_lists(): ticket_data = [ # TECH-LOGS (1001, 'Технические логи Администратора Метасервиса', 'METASERVICE-ADMIN'), # METASERVICE (2101, 'Установление договорных взаимоотношений (NEG_REQUEST)', 'METASERVICE-ADMIN'), (2102, 'Права в админ.панели Сервиса (ACCESS_REQUEST)', 'METASERVICE-ADMIN'), (21031, 'Активация Типов услуг (ST_REQUEST)', 'METASERVICE-ADMIN'), (21032, 'Активация Услуг (согласование тарифов) (ST_REQUEST)', 'METASERVICE-ADMIN'), (21033, 'Активация Партнеров (ST_REQUEST)', 'METASERVICE-ADMIN'), (2201, 'Модерация пользователей (ST_REQUEST)', 'METASERVICE-SUPERVISOR'), (2200, 'Оперативный доступ (ST_REQUEST)', 'METASERVICE-SUPERVISOR'), (2202, 'Права в админ.панели Сервиса (ACCESS_REQUEST)', 'METASERVICE-SUPERVISOR'), (22034, 'Активация Исполнителей в Сервисе (ST_REQUEST)', 'METASERVICE-SUPERVISOR'), (22035, 'Активация Ресурсов в Сервисе (ST_REQUEST)', 'METASERVICE-SUPERVISOR'), (2205, 'Проверка документов (ST_REQUEST)', 'METASERVICE-SUPERVISOR'), (2206, 'Проверки для допусков (ST_REQUEST)', 'METASERVICE-SUPERVISOR'), (2301, 'Входящие заявки пользователей (ST_REQUEST)', 'METASERVICE-SUPPORT'), (2302, 'Заявки на услуги Сервиса (SERVICE_REQUEST)', 'METASERVICE-SUPPORT'), (2401, 'Входящие технические заявки (ST_REQUEST)', 'METASERVICE-TECHSUPPORT'), # PARTNER (3101, 'Установление договорных взаимоотношений (NEG_REQUEST)', 'PARTNER-ADMIN'), (3102, 'Права в админ.панели Партнера (ST_REQUEST)', 'PARTNER-ADMIN'), (31034, 'Активация Исполнителей (ST_REQUEST)', 'PARTNER-ADMIN'), (31035, 'Активация Ресурсов (ST_REQUEST)', 'PARTNER-ADMIN'), (3200, 'Оперативный доступ (ST_REQUEST)', 'PARTNER-SUPERVISOR'), (3202, 'Права в админ.панели Партнера (ACCESS_REQUEST)', 'PARTNER-SUPERVISOR'), (3205, 'Проверка документов (ST_REQUEST)', 'PARTNER-SUPERVISOR'), (3206, 'Проверки для допусков (ST_REQUEST)', 'PARTNER-SUPERVISOR'), (3301, 'Входящие заявки пользователей (ST_REQUEST)', 'METASERVICE-SUPPORT'), (3401, 'Входящие технические заявки (ST_REQUEST)', 'PARTNER-TECHSUPPORT'), ] for pk, name, group_name in ticket_data: group = Group.objects.get(name=group_name) # Проверяем существование тикета с таким же name и group ticket_exists = TicketList.objects.filter(group=group, name=name).exists() if not ticket_exists: TicketList.objects.create(pk=pk, name=name, group=group) print(f"TicketList {name} created.") else: print(f"TicketList {name} already exists.") def create_metaservice_test_users(): """ Создает тестовых пользователей """ User = get_user_model() # Создание админа if not get_user_model().objects.filter(phone_number="11111111111").exists(): admin = get_user_model().objects.create_superuser( 'admin', 'admin@admin.com', 'Sharix!', phone_number="11111111111" ) print("Django admin created.") else: print("Django admin already exists.") password = make_password("sharix-open-test") test_group = Group.objects.get(pk=99) # Группа, в которой надо создать пользователя и их количество test_users = [ ('METASERVICE-ADMIN', 1), ('METASERVICE-SUPERVISOR', 3), ('METASERVICE-SUPPORT', 3), ('METASERVICE-TECHSUPPORT', 3), ('PARTNER-ADMIN', 1), ('PARTNER-SUPERVISOR', 3), ('PARTNER-SUPPORT', 3), ('PARTNER-TECHSUPPORT', 3), ('PROVIDER', 3), ('CLIENT', 3), ('GUEST', 3) ] for test_user in test_users: group_name = test_user[0] group = Group.objects.get(name=group_name) for i in range(1, test_user[1] + 1): user, created = User.objects.get_or_create( phone_number=f"{group.pk}0{i}", defaults={ 'last_name': i, 'first_name': group_name, 'email': f"test-{group_name.lower()}-{i}@domain.org", 'username': f"test-{group_name.lower()}-{i}", 'middle_name': "Test", 'password': password } ) if created: user.groups.add( test_group, group ) print(f"User {user.username} created.") else: print(f"User {user.username} already exists.") # Создание тикета о создании пользователей if not Ticket.objects.all().exists(): # test-metaservice-admin-1 user = get_user_model().objects.filter(phone_number=2101).get() ticket_list = TicketList.objects.get(pk=1001) ticket, created = Ticket.objects.get_or_create( title=f"Создание тестовых пользователей", ticket_list=ticket_list, ticket_type=1, # ST_REQUEST due_date=datetime.now().date(), created_by=user, note=f""" Успешное создание тестовых пользователей """ ) if created: print("Main Ticket created.") else: print("Main Ticket already exists.")