123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- import os
- from django.conf import settings
- from django.contrib.auth import get_user_model
- from django.contrib.auth.hashers import make_password
- from django.contrib.auth.models import Group
- from django.db.models.signals import post_migrate
- from django.dispatch import receiver
- from tickets.models import Ticket, TicketList
- from datetime import datetime
- from core.settings_vars import GENERATE_TEST_USERS
- User = get_user_model()
- @receiver(post_migrate)
- def create_test_users(sender, **kwargs):
- """
- Создает тестовых пользователей, если:
-
- - В файле settings_vers.py переменная GENERATE_TEST_USERS = True
- - Или была задана переменная окружения TEST_USERS=true
- """
- if os.getenv('TEST_USERS') == 'true' or GENERATE_TEST_USERS:
- # Создание админа
- 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"
- )
- 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
- )
- # Создание тикета о создании пользователей
- if Ticket.objects.all().exists():
- # test-metaservice-admin-1
- user = get_user_model().objects.filter(phone_number=2101).get()
- ticket_list = TicketList.objects.get(pk=2103)
- Ticket.objects.create(
- title=f"Создание тестовых пользователей",
- ticket_list=ticket_list,
- ticket_type=1, # ST_REQUEST
- due_date=datetime.now().date(),
- created_by=user,
- note=f"""
- Успешное создание тестовых пользователей
- """
- )
- # Откючаем тестовых пользователей (если такие есть), если DEBUG=False и наоброт
- try:
- if Group.objects.filter(name="TEST").exists():
- test_group = Group.objects.get(name="TEST")
- users_in_test_group = User.objects.filter(groups=test_group)
- if users_in_test_group:
- users_in_test_group.update(is_active=settings.DEBUG)
- except:
- print("Test user validation is not available. Models have not been created yet")
|