1
0

signals.py 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. import os
  2. from django.conf import settings
  3. from django.contrib.auth import get_user_model
  4. from django.contrib.auth.hashers import make_password
  5. from django.contrib.auth.models import Group
  6. from django.db.models.signals import post_migrate
  7. from django.dispatch import receiver
  8. from tickets.models import Ticket, TicketList
  9. from datetime import datetime
  10. from core.settings_vars import GENERATE_TEST_USERS
  11. User = get_user_model()
  12. @receiver(post_migrate)
  13. def create_test_users(sender, **kwargs):
  14. """
  15. Создает тестовых пользователей, если:
  16. - В файле settings_vers.py переменная GENERATE_TEST_USERS = True
  17. - Или была задана переменная окружения TEST_USERS=true
  18. """
  19. if os.getenv('TEST_USERS') == 'true' or GENERATE_TEST_USERS:
  20. # Создание админа
  21. if not get_user_model().objects.filter(phone_number="11111111111").exists():
  22. admin = get_user_model().objects.create_superuser(
  23. 'admin',
  24. 'admin@admin.com',
  25. 'Sharix!',
  26. phone_number="11111111111"
  27. )
  28. password = make_password("sharix-open-test")
  29. test_group = Group.objects.get(pk=99)
  30. # Группа, в которой надо создать пользователя и их количество
  31. test_users = [
  32. ('METASERVICE-ADMIN', 1),
  33. ('METASERVICE-SUPERVISOR', 3),
  34. ('METASERVICE-SUPPORT', 3),
  35. ('METASERVICE-TECHSUPPORT', 3),
  36. ('PARTNER-ADMIN', 1),
  37. ('PARTNER-SUPERVISOR', 3),
  38. ('PARTNER-SUPPORT', 3),
  39. ('PARTNER-TECHSUPPORT', 3),
  40. ('PROVIDER', 3),
  41. ('CLIENT', 3),
  42. ('GUEST', 3)
  43. ]
  44. for test_user in test_users:
  45. group_name = test_user[0]
  46. group = Group.objects.get(name=group_name)
  47. for i in range(1, test_user[1] + 1):
  48. user, created = User.objects.get_or_create(
  49. phone_number=f"{group.pk}0{i}",
  50. defaults={
  51. 'last_name': i,
  52. 'first_name': group_name,
  53. 'email': f"test-{group_name.lower()}-{i}@domain.org",
  54. 'username': f"test-{group_name.lower()}-{i}",
  55. 'middle_name': "Test",
  56. 'password': password
  57. }
  58. )
  59. if created:
  60. user.groups.add(
  61. test_group,
  62. group
  63. )
  64. # Создание тикета о создании пользователей
  65. if Ticket.objects.all().exists():
  66. # test-metaservice-admin-1
  67. user = get_user_model().objects.filter(phone_number=2101).get()
  68. ticket_list = TicketList.objects.get(pk=2103)
  69. Ticket.objects.create(
  70. title=f"Создание тестовых пользователей",
  71. ticket_list=ticket_list,
  72. ticket_type=1, # ST_REQUEST
  73. due_date=datetime.now().date(),
  74. created_by=user,
  75. note=f"""
  76. Успешное создание тестовых пользователей
  77. """
  78. )
  79. # Откючаем тестовых пользователей (если такие есть), если DEBUG=False и наоброт
  80. try:
  81. if Group.objects.filter(name="TEST").exists():
  82. test_group = Group.objects.get(name="TEST")
  83. users_in_test_group = User.objects.filter(groups=test_group)
  84. if users_in_test_group:
  85. users_in_test_group.update(is_active=settings.DEBUG)
  86. except:
  87. print("Test user validation is not available. Models have not been created yet")