create_objects()   A
last analyzed

Complexity

Conditions 3

Size

Total Lines 30
Code Lines 18

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 18
dl 0
loc 30
rs 9.5
c 0
b 0
f 0
cc 3
nop 2
1
# Generated by Django 4.1.4 on 2023-01-23 04:53
2
3
from django.db import migrations, transaction
4
from django.utils import timezone
5
6
7
def create_objects(apps, schema_editor):
8
    # Для загрузки кода моделей используется специальный метод apps.get_model
9
    # Он позволяет загрузить ровно то состояние модели, которое было на момент применения этой миграции
10
    # Импортировать настоящие классы – плохая практика
11
    # так как в будущем вы можете удалить/переименовать эти модели, и тогда у вас будут ошибки импорта
12
13
    User = apps.get_model('core', 'User')
14
    Board = apps.get_model('goals', 'Board')
15
    BoardParticipant = apps.get_model('goals', 'BoardParticipant')
16
    Category = apps.get_model('goals', 'Category')
17
18
    with transaction.atomic():  # Применяем все изменения одной транзакцией
19
        for user in User.objects.all():  # Для каждого пользователя
20
            # Создаем доску
21
            new_board = Board.objects.create(
22
                title='Мои цели',
23
                created=timezone.now(),
24
                updated=timezone.now()
25
            )
26
            # Создаем участника доски (владельца)
27
            BoardParticipant.objects.create(
28
                user=user,
29
                board=new_board,
30
                role=1,
31
                created=timezone.now(),
32
                updated=timezone.now()
33
            )
34
35
            # Проставляем всем категориям пользователя его доску
36
            Category.objects.filter(user=user).update(board=new_board)
37
38
39
class Migration(migrations.Migration):
40
41
    dependencies = [
42
        ('goals', '0002_board_alter_category_options_alter_comment_options_and_more'),
43
    ]
44
45
    operations = [
46
        migrations.RunPython(create_objects)
47
    ]
48