Explorar el Código

move create_test_users from webapp-base to dbsynce

blezz-tech hace 1 mes
padre
commit
1da2fedc8f
Se han modificado 1 ficheros con 87 adiciones y 1 borrados
  1. 87 1
      lib/seed.py

+ 87 - 1
lib/seed.py

@@ -1,5 +1,10 @@
+import os
 from django.contrib.auth.models import Group
-from tickets.models import TicketList
+from django.contrib.auth import get_user_model
+from django.contrib.auth.hashers import make_password
+from tickets.models import Ticket, TicketList
+from core.settings_vars import GENERATE_TEST_USERS
+from datetime import datetime
 
 def init_default_data():
     create_metaservice_initial_groups()
@@ -63,3 +68,84 @@ def create_metaservice_ticket_lists():
 
         if not ticket_exists:
             TicketList.objects.create(pk=pk, name=name, group=group)
+
+
+def create_test_users():
+    """
+    Создает тестовых пользователей, если:
+    
+    - В файле settings_vers.py переменная GENERATE_TEST_USERS = True
+    - Или была задана переменная окружения TEST_USERS=true
+    """
+    if os.getenv('TEST_USERS') == 'true' or GENERATE_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"
+            )
+
+        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"""
+                    Успешное создание тестовых пользователей
+                """
+            )