Răsfoiți Sursa

Merge branch 'unstable' of blezz-tech/sharix-open-backend into unstable

+ 81 - 1
lib/seed.py

@@ -1,5 +1,8 @@
 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 datetime import datetime
 
 def init_default_data():
     create_metaservice_initial_groups()
@@ -63,3 +66,80 @@ def create_metaservice_ticket_lists():
 
         if not ticket_exists:
             TicketList.objects.create(pk=pk, name=name, group=group)
+
+
+def create_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 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=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"""
+                Успешное создание тестовых пользователей
+            """
+        )

+ 2 - 2
management/commands/init_default_data.py

@@ -6,9 +6,9 @@ class Command(BaseCommand):
     help = "Create initial data."
 
     def handle(self, *args, **options):
-        self.stdout.write(self.style.SUCCESS('Start seeding'))
+        self.stdout.write(self.style.SUCCESS('Start seeding default data'))
 
         init_default_data()
 
-        self.stdout.write(self.style.SUCCESS('Successful seeding'))
+        self.stdout.write(self.style.SUCCESS('Successful seeding default data'))
         # raise NotImplementedError()

+ 14 - 0
management/commands/init_test_users.py

@@ -0,0 +1,14 @@
+from django.core.management.base import BaseCommand
+
+from dbsynce.lib.seed import create_test_users
+
+class Command(BaseCommand):
+    help = "Create test users."
+
+    def handle(self, *args, **options):
+        self.stdout.write(self.style.SUCCESS('Start seeding test users'))
+
+        create_test_users()
+
+        self.stdout.write(self.style.SUCCESS('Successful seeding test users'))
+        # raise NotImplementedError()