Oddělení soustředění do vlastní aplikace #47

Merged
ledoian merged 5 commits from split-soustredeni into master 7 months ago
  1. 40
      deploy_v2/admin_org_prava.json
  2. 13
      galerie/migrations/0011_pre_split_soustredeni.py
  3. 20
      galerie/migrations/0012_soustredeni_relink.py
  4. 14
      galerie/migrations/0013_post_split_soustredeni.py
  5. 2
      galerie/models.py
  6. 13
      personalni/migrations/0006_pre_split_soustredeni.py
  7. 13
      prednasky/migrations/0016_pre_split_soustredeni.py
  8. 20
      prednasky/migrations/0017_soustredeni_relink.py
  9. 14
      prednasky/migrations/0018_post_split_soustredeni.py
  10. 2
      prednasky/models.py
  11. 16
      seminar/migrations/0122_pre_split_soustredeni.py
  12. 33
      seminar/migrations/0123_soustredeni_unmanage.py
  13. 67
      seminar/migrations/0124_remove_sous_from_seminar.py
  14. 14
      seminar/migrations/0125_post_split_soustredeni.py
  15. 5
      seminar/models/__init__.py
  16. 2
      soustredeni/admin.py
  17. 122
      soustredeni/migrations/0001_split_from_seminar.py
  18. 34
      soustredeni/migrations/0002_manage_soustredeni.py
  19. 13
      soustredeni/migrations/0003_post_split_soustredeni.py
  20. 2
      soustredeni/models.py
  21. 5
      split-apps-meta/create.notes
  22. 3
      split-apps-meta/unmanage.notes

40
deploy_v2/admin_org_prava.json

@ -271,42 +271,42 @@
}, },
{ {
"codename": "add_konfera", "codename": "add_konfera",
"ct_app_label": "seminar", "ct_app_label": "soustredeni",
"ct_model": "konfera" "ct_model": "konfera"
}, },
{ {
"codename": "change_konfera", "codename": "change_konfera",
"ct_app_label": "seminar", "ct_app_label": "soustredeni",
"ct_model": "konfera" "ct_model": "konfera"
}, },
{ {
"codename": "delete_konfera", "codename": "delete_konfera",
"ct_app_label": "seminar", "ct_app_label": "soustredeni",
"ct_model": "konfera" "ct_model": "konfera"
}, },
{ {
"codename": "view_konfera", "codename": "view_konfera",
"ct_app_label": "seminar", "ct_app_label": "soustredeni",
"ct_model": "konfera" "ct_model": "konfera"
}, },
{ {
"codename": "add_konfery_ucastnici", "codename": "add_konfery_ucastnici",
"ct_app_label": "seminar", "ct_app_label": "soustredeni",
"ct_model": "konfery_ucastnici" "ct_model": "konfery_ucastnici"
}, },
{ {
"codename": "change_konfery_ucastnici", "codename": "change_konfery_ucastnici",
"ct_app_label": "seminar", "ct_app_label": "soustredeni",
"ct_model": "konfery_ucastnici" "ct_model": "konfery_ucastnici"
}, },
{ {
"codename": "delete_konfery_ucastnici", "codename": "delete_konfery_ucastnici",
"ct_app_label": "seminar", "ct_app_label": "soustredeni",
"ct_model": "konfery_ucastnici" "ct_model": "konfery_ucastnici"
}, },
{ {
"codename": "view_konfery_ucastnici", "codename": "view_konfery_ucastnici",
"ct_app_label": "seminar", "ct_app_label": "soustredeni",
"ct_model": "konfery_ucastnici" "ct_model": "konfery_ucastnici"
}, },
{ {
@ -481,62 +481,62 @@
}, },
{ {
"codename": "add_soustredeni", "codename": "add_soustredeni",
"ct_app_label": "seminar", "ct_app_label": "soustredeni",
"ct_model": "soustredeni" "ct_model": "soustredeni"
}, },
{ {
"codename": "change_soustredeni", "codename": "change_soustredeni",
"ct_app_label": "seminar", "ct_app_label": "soustredeni",
"ct_model": "soustredeni" "ct_model": "soustredeni"
}, },
{ {
"codename": "delete_soustredeni", "codename": "delete_soustredeni",
"ct_app_label": "seminar", "ct_app_label": "soustredeni",
"ct_model": "soustredeni" "ct_model": "soustredeni"
}, },
{ {
"codename": "view_soustredeni", "codename": "view_soustredeni",
"ct_app_label": "seminar", "ct_app_label": "soustredeni",
"ct_model": "soustredeni" "ct_model": "soustredeni"
}, },
{ {
"codename": "add_soustredeni_organizatori", "codename": "add_soustredeni_organizatori",
"ct_app_label": "seminar", "ct_app_label": "soustredeni",
"ct_model": "soustredeni_organizatori" "ct_model": "soustredeni_organizatori"
}, },
{ {
"codename": "change_soustredeni_organizatori", "codename": "change_soustredeni_organizatori",
"ct_app_label": "seminar", "ct_app_label": "soustredeni",
"ct_model": "soustredeni_organizatori" "ct_model": "soustredeni_organizatori"
}, },
{ {
"codename": "delete_soustredeni_organizatori", "codename": "delete_soustredeni_organizatori",
"ct_app_label": "seminar", "ct_app_label": "soustredeni",
"ct_model": "soustredeni_organizatori" "ct_model": "soustredeni_organizatori"
}, },
{ {
"codename": "view_soustredeni_organizatori", "codename": "view_soustredeni_organizatori",
"ct_app_label": "seminar", "ct_app_label": "soustredeni",
"ct_model": "soustredeni_organizatori" "ct_model": "soustredeni_organizatori"
}, },
{ {
"codename": "add_soustredeni_ucastnici", "codename": "add_soustredeni_ucastnici",
"ct_app_label": "seminar", "ct_app_label": "soustredeni",
"ct_model": "soustredeni_ucastnici" "ct_model": "soustredeni_ucastnici"
}, },
{ {
"codename": "change_soustredeni_ucastnici", "codename": "change_soustredeni_ucastnici",
"ct_app_label": "seminar", "ct_app_label": "soustredeni",
"ct_model": "soustredeni_ucastnici" "ct_model": "soustredeni_ucastnici"
}, },
{ {
"codename": "delete_soustredeni_ucastnici", "codename": "delete_soustredeni_ucastnici",
"ct_app_label": "seminar", "ct_app_label": "soustredeni",
"ct_model": "soustredeni_ucastnici" "ct_model": "soustredeni_ucastnici"
}, },
{ {
"codename": "view_soustredeni_ucastnici", "codename": "view_soustredeni_ucastnici",
"ct_app_label": "seminar", "ct_app_label": "soustredeni",
"ct_model": "soustredeni_ucastnici" "ct_model": "soustredeni_ucastnici"
}, },
{ {

13
galerie/migrations/0011_pre_split_soustredeni.py

@ -0,0 +1,13 @@
# Generated by Django 4.2.11 on 2024-04-30 21:53
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('galerie', '0010_auto_20200819_0947'),
]
operations = [
]

20
galerie/migrations/0012_soustredeni_relink.py

@ -0,0 +1,20 @@
# Generated by Django 4.2.11 on 2024-05-01 13:07
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('soustredeni', '0001_split_from_seminar'),
('galerie', '0011_pre_split_soustredeni'),
]
operations = [
migrations.AlterField(
model_name='galerie',
name='soustredeni',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='soustredeni.soustredeni'),
),
]

14
galerie/migrations/0013_post_split_soustredeni.py

@ -0,0 +1,14 @@
# Generated by Django 4.2.11 on 2024-05-01 13:35
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('galerie', '0012_soustredeni_relink'),
('soustredeni', '0003_post_split_soustredeni'),
]
operations = [
]

2
galerie/models.py

@ -7,7 +7,7 @@ from imagekit.processors import ResizeToFit, Transpose
import os import os
from seminar.models import Soustredeni from soustredeni.models import Soustredeni
VZDY=0 VZDY=0
ORG=1 ORG=1

13
personalni/migrations/0006_pre_split_soustredeni.py

@ -0,0 +1,13 @@
# Generated by Django 4.2.11 on 2024-04-30 21:53
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('personalni', '0005_personalni_post_migrate'),
]
operations = [
]

13
prednasky/migrations/0016_pre_split_soustredeni.py

@ -0,0 +1,13 @@
# Generated by Django 4.2.11 on 2024-04-30 21:53
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('prednasky', '0015_personalni_post_migrate'),
]
operations = [
]

20
prednasky/migrations/0017_soustredeni_relink.py

@ -0,0 +1,20 @@
# Generated by Django 4.2.11 on 2024-05-01 13:07
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('soustredeni', '0001_split_from_seminar'),
('prednasky', '0016_pre_split_soustredeni'),
]
operations = [
migrations.AlterField(
model_name='seznam',
name='soustredeni',
field=models.ForeignKey(default=None, null=True, on_delete=django.db.models.deletion.PROTECT, to='soustredeni.soustredeni'),
),
]

14
prednasky/migrations/0018_post_split_soustredeni.py

@ -0,0 +1,14 @@
# Generated by Django 4.2.11 on 2024-05-01 13:35
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('prednasky', '0017_soustredeni_relink'),
('soustredeni', '0003_post_split_soustredeni'),
]
operations = [
]

2
prednasky/models.py

@ -2,7 +2,7 @@
from django.db import models from django.db import models
from seminar.models import Soustredeni from soustredeni.models import Soustredeni
from personalni.models import Organizator from personalni.models import Organizator
STAV_NAVRH = 1 STAV_NAVRH = 1

16
seminar/migrations/0122_pre_split_soustredeni.py

@ -0,0 +1,16 @@
# Generated by Django 4.2.11 on 2024-04-30 21:54
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('seminar', '0121_personalni_post_migrate'),
('personalni', '0006_pre_split_soustredeni'),
('galerie', '0011_pre_split_soustredeni'),
('prednasky', '0016_pre_split_soustredeni'),
]
operations = [
]

33
seminar/migrations/0123_soustredeni_unmanage.py

@ -0,0 +1,33 @@
# Generated by Django 4.2.11 on 2024-04-30 22:17
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('seminar', '0122_pre_split_soustredeni'),
]
operations = [
migrations.AlterModelOptions(
name='konfera',
options={'managed': False, 'verbose_name': 'Konfera', 'verbose_name_plural': 'Konfery'},
),
migrations.AlterModelOptions(
name='konfery_ucastnici',
options={'managed': False, 'ordering': ['konfera', 'resitel'], 'verbose_name': 'Účast na konfeře', 'verbose_name_plural': 'Účasti na konfeře'},
),
migrations.AlterModelOptions(
name='soustredeni',
options={'managed': False, 'ordering': ['-rocnik__rocnik', '-datum_zacatku'], 'verbose_name': 'Soustředění', 'verbose_name_plural': 'Soustředění'},
),
migrations.AlterModelOptions(
name='soustredeni_organizatori',
options={'managed': False, 'ordering': ['soustredeni', 'organizator'], 'verbose_name': 'Účast organizátorů na soustředění', 'verbose_name_plural': 'Účasti organizátorů na soustředění'},
),
migrations.AlterModelOptions(
name='soustredeni_ucastnici',
options={'managed': False, 'ordering': ['soustredeni', 'resitel'], 'verbose_name': 'Účast na soustředění', 'verbose_name_plural': 'Účasti na soustředění'},
),
]

67
seminar/migrations/0124_remove_sous_from_seminar.py

@ -0,0 +1,67 @@
# Generated by Django 4.2.11 on 2024-05-01 13:13
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('seminar', '0123_soustredeni_unmanage'),
('soustredeni', '0001_split_from_seminar'),
('galerie', '0012_soustredeni_relink'),
('prednasky', '0017_soustredeni_relink'),
]
operations = [
migrations.RemoveField(
model_name='konfery_ucastnici',
name='konfera',
),
migrations.RemoveField(
model_name='konfery_ucastnici',
name='resitel',
),
migrations.RemoveField(
model_name='soustredeni',
name='organizatori',
),
migrations.RemoveField(
model_name='soustredeni',
name='rocnik',
),
migrations.RemoveField(
model_name='soustredeni',
name='ucastnici',
),
migrations.RemoveField(
model_name='soustredeni_organizatori',
name='organizator',
),
migrations.RemoveField(
model_name='soustredeni_organizatori',
name='soustredeni',
),
migrations.RemoveField(
model_name='soustredeni_ucastnici',
name='resitel',
),
migrations.RemoveField(
model_name='soustredeni_ucastnici',
name='soustredeni',
),
migrations.DeleteModel(
name='Konfera',
),
migrations.DeleteModel(
name='Konfery_Ucastnici',
),
migrations.DeleteModel(
name='Soustredeni',
),
migrations.DeleteModel(
name='Soustredeni_Organizatori',
),
migrations.DeleteModel(
name='Soustredeni_Ucastnici',
),
]

14
seminar/migrations/0125_post_split_soustredeni.py

@ -0,0 +1,14 @@
# Generated by Django 4.2.11 on 2024-05-01 13:35
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('seminar', '0124_remove_sous_from_seminar'),
('soustredeni', '0003_post_split_soustredeni'),
]
operations = [
]

5
seminar/models/__init__.py

@ -1,10 +1,13 @@
from .tvorba import * from .tvorba import *
from .odevzdavatko import * from .odevzdavatko import *
from .base import * from .base import *
from .soustredeni import *
from .pomocne import * from .pomocne import *
from .treenode import * from .treenode import *
from .novinky import * from .novinky import *
from various.models import Nastaveni from various.models import Nastaveni
from personalni.models import Organizator, Resitel, Skola, Prijemce, Osoba from personalni.models import Organizator, Resitel, Skola, Prijemce, Osoba
from soustredeni.models import Soustredeni, Soustredeni_Ucastnici, Soustredeni_Organizatori, Konfera, Konfery_Ucastnici
# Kvůli migr. 0041
from soustredeni.models import generate_filename_konfera

2
soustredeni/admin.py

@ -2,7 +2,7 @@ from django.contrib import admin
from django.forms import widgets from django.forms import widgets
from django.db import models from django.db import models
from seminar.models import soustredeni as m import soustredeni.models as m
class SoustredeniUcastniciInline(admin.TabularInline): class SoustredeniUcastniciInline(admin.TabularInline):

122
soustredeni/migrations/0001_split_from_seminar.py

@ -0,0 +1,122 @@
# Generated by Django 4.2.11 on 2024-04-30 22:53
from django.db import migrations, models
import django.db.models.deletion
import soustredeni.models
def nastav_nove_contenttypes(apps, schema_editor):
ContentType = apps.get_model('contenttypes', 'ContentType')
for m in ('konfera', 'soustredeni', 'soustredeni_ucastnici', 'soustredeni_organizatori', 'konfery_ucastnici'):
oct = ContentType.objects.filter(app_label='seminar', model=m)
oct.update(app_label='soustredeni')
def nastav_stare_contenttypes(apps, schema_editor):
ContentType = apps.get_model('contenttypes', 'ContentType')
for m in ('konfera', 'soustredeni', 'soustredeni_ucastnici', 'soustredeni_organizatori', 'konfery_ucastnici'):
nct = ContentType.objects.filter(app_label='soustredeni', model=m)
nct.update(app_label='seminar')
class Migration(migrations.Migration):
initial = True
dependencies = [
('seminar', '0123_soustredeni_unmanage'),
]
operations = [
migrations.RunPython(nastav_nove_contenttypes, nastav_stare_contenttypes),
migrations.CreateModel(
name='Konfera',
fields=[
('problem_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='seminar.problem')),
('anotace', models.TextField(blank=True, help_text='Popis, o čem bude konfera.', verbose_name='anotace')),
('abstrakt', models.TextField(blank=True, help_text='Abstrakt konfery tak, jak byl uveden ve sborníku', verbose_name='abstrakt')),
('typ_prezentace', models.CharField(choices=[('veletrh', 'Veletrh (postery)'), ('prezentace', 'Prezentace (přednáška)')], default='veletrh', max_length=16, verbose_name='typ prezentace')),
('prezentace', models.FileField(blank=True, help_text='Prezentace nebo fotka posteru', upload_to=soustredeni.models.generate_filename_konfera, verbose_name='prezentace')),
('materialy', models.FileField(blank=True, help_text='Další materiály ke konfeře zabalené do jednoho souboru', upload_to=soustredeni.models.generate_filename_konfera, verbose_name='materialy')),
('soustredeni', models.ForeignKey(to='soustredeni.soustredeni', verbose_name='soustředění', on_delete=models.SET_NULL, null=True, related_name='konfery')),
('ucastnici', models.ManyToManyField(help_text='Seznam účastníků konfery', through='soustredeni.Konfery_Ucastnici', to='personalni.resitel', verbose_name='účastníci konfery')),
],
options={
'verbose_name': 'Konfera',
'verbose_name_plural': 'Konfery',
'db_table': 'seminar_konfera',
'managed': False,
},
bases=('seminar.problem',),
),
migrations.CreateModel(
name='Konfery_Ucastnici',
fields=[
('id', models.AutoField(primary_key=True, serialize=False)),
('poznamka', models.TextField(blank=True, help_text='Neveřejná poznámka k účasti (plain text)', verbose_name='neveřejná poznámka')),
('resitel', models.ForeignKey(to='personalni.resitel', verbose_name='řešitel', on_delete=models.PROTECT)),
('konfera', models.ForeignKey(to='soustredeni.konfera', verbose_name='konfera', on_delete=models.CASCADE)),
],
options={
'verbose_name': 'Účast na konfeře',
'verbose_name_plural': 'Účasti na konfeře',
'db_table': 'seminar_konfery_ucastnici',
'ordering': ['konfera', 'resitel'],
'managed': False,
},
),
migrations.CreateModel(
name='Soustredeni',
fields=[
('id', models.AutoField(primary_key=True, serialize=False)),
('datum_zacatku', models.DateField(blank=True, help_text='První den soustředění', null=True, verbose_name='datum začátku')),
('datum_konce', models.DateField(blank=True, help_text='Poslední den soustředění', null=True, verbose_name='datum konce')),
('verejne_db', models.BooleanField(db_column='verejne', default=False, verbose_name='soustředění zveřejněno')),
('misto', models.CharField(blank=True, default='', help_text='Místo (název obce, volitelně též objektu', max_length=256, verbose_name='místo soustředění')),
('text', models.TextField(blank=True, default='', verbose_name='text k soustředění (HTML)')),
('typ', models.CharField(choices=[('jarni', 'Jarní soustředění'), ('podzimni', 'Podzimní soustředění'), ('vikend', 'Víkendový sraz'), ('vylet', 'Výlet')], default='podzimni', max_length=16, verbose_name='typ akce')),
('exportovat', models.BooleanField(db_column='exportovat', default=False, help_text='Exportuje se jen podle tohoto flagu (ne veřejnosti)', verbose_name='export do AESOPa')),
('rocnik', models.ForeignKey(to='seminar.rocnik', verbose_name='ročník', related_name='soustredeni', on_delete=models.PROTECT)),
('organizatori', models.ManyToManyField(help_text='Seznam organizátorů soustředění', through='soustredeni.Soustredeni_Organizatori', to='personalni.organizator', verbose_name='Organizátoři soustředění')),
('ucastnici', models.ManyToManyField(help_text='Seznam účastníků soustředění', through='soustredeni.Soustredeni_Ucastnici', to='personalni.resitel', verbose_name='účastníci soustředění')),
],
options={
'verbose_name': 'Soustředění',
'verbose_name_plural': 'Soustředění',
'db_table': 'seminar_soustredeni',
'ordering': ['-rocnik__rocnik', '-datum_zacatku'],
'managed': False,
},
),
migrations.CreateModel(
name='Soustredeni_Organizatori',
fields=[
('id', models.AutoField(primary_key=True, serialize=False)),
('poznamka', models.TextField(blank=True, help_text='Neveřejná poznámka k účasti organizátora (plain text)', verbose_name='neveřejná poznámka')),
('organizator', models.ForeignKey(to='personalni.organizator', verbose_name='organizátor', on_delete=models.PROTECT)),
('soustredeni', models.ForeignKey(to='soustredeni.soustredeni', verbose_name='soustředění', on_delete=models.PROTECT)),
],
options={
'verbose_name': 'Účast organizátorů na soustředění',
'verbose_name_plural': 'Účasti organizátorů na soustředění',
'db_table': 'seminar_soustredeni_organizatori',
'ordering': ['soustredeni', 'organizator'],
'managed': False,
},
),
migrations.CreateModel(
name='Soustredeni_Ucastnici',
fields=[
('id', models.AutoField(primary_key=True, serialize=False)),
('poznamka', models.TextField(blank=True, help_text='Neveřejná poznámka k účasti (plain text)', verbose_name='neveřejná poznámka')),
('resitel', models.ForeignKey(to='personalni.resitel', verbose_name='řešitel', on_delete=models.PROTECT)),
('soustredeni', models.ForeignKey(to='soustredeni.soustredeni', verbose_name='soustředění', on_delete=models.PROTECT)),
],
options={
'verbose_name': 'Účast na soustředění',
'verbose_name_plural': 'Účasti na soustředění',
'db_table': 'seminar_soustredeni_ucastnici',
'ordering': ['soustredeni', 'resitel'],
'managed': False,
},
),
]

34
soustredeni/migrations/0002_manage_soustredeni.py

@ -0,0 +1,34 @@
# Generated by Django 4.2.11 on 2024-05-01 13:18
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('soustredeni', '0001_split_from_seminar'),
('seminar', '0124_remove_sous_from_seminar'),
]
operations = [
migrations.AlterModelOptions(
name='konfera',
options={'verbose_name': 'Konfera', 'verbose_name_plural': 'Konfery'},
),
migrations.AlterModelOptions(
name='konfery_ucastnici',
options={'ordering': ['konfera', 'resitel'], 'verbose_name': 'Účast na konfeře', 'verbose_name_plural': 'Účasti na konfeře'},
),
migrations.AlterModelOptions(
name='soustredeni',
options={'ordering': ['-rocnik__rocnik', '-datum_zacatku'], 'verbose_name': 'Soustředění', 'verbose_name_plural': 'Soustředění'},
),
migrations.AlterModelOptions(
name='soustredeni_organizatori',
options={'ordering': ['soustredeni', 'organizator'], 'verbose_name': 'Účast organizátorů na soustředění', 'verbose_name_plural': 'Účasti organizátorů na soustředění'},
),
migrations.AlterModelOptions(
name='soustredeni_ucastnici',
options={'ordering': ['soustredeni', 'resitel'], 'verbose_name': 'Účast na soustředění', 'verbose_name_plural': 'Účasti na soustředění'},
),
]

13
soustredeni/migrations/0003_post_split_soustredeni.py

@ -0,0 +1,13 @@
# Generated by Django 4.2.11 on 2024-05-01 13:35
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('soustredeni', '0002_manage_soustredeni'),
]
operations = [
]

2
seminar/models/soustredeni.py → soustredeni/models.py

@ -10,7 +10,7 @@ from django.conf import settings
from personalni.models import Resitel, Organizator from personalni.models import Resitel, Organizator
from .base import SeminarModelBase from seminar.models.base import SeminarModelBase
from seminar.models import tvorba as am from seminar.models import tvorba as am
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)

5
split-apps-meta/create.notes

@ -1,6 +1,9 @@
Prostě zkopírovat vedle, s původními (=správnými) related names. Prostě zkopírovat vedle, s původními (=správnými) related names.
(Případně opravit *všechny* relativní importy)
makemigrations makemigrations
! Doplnit hack kolem content-types (jako první operace při migraci) ! Doplnit hack kolem content-types (jako první operace při migraci)
! Doplnit ForeignKeys (TODO: jak? Já jsem je ukradl až zpětně…) ! Doplnit ForeignKeys (Vypadá to, že se dá vesměs zkopírovat předpis z models.py, jen místo prvního fieldu dát `to='app.model'. Dokonce asi funguje použít už novou aplikaci pro vazby v rámci aplikace.)
To samé s ManyToManyFieldy (through= musí taky být 'app.model')
(Zdá se, že jde dobastlit tuhle migraci polozpětně – doplnit co chybělo až podle toho, co vygeneruje migrace po zamanagování nového modelu.)
doplnit závislost na unmanage doplnit závislost na unmanage
migrate migrate

3
split-apps-meta/unmanage.notes

@ -16,6 +16,9 @@ vim seminar/models/whatever
HINT: Add or change a related_name argument to the definition for 'seminar.Resitel.osoba' or 'seminar.Prijemce.osoba'. HINT: Add or change a related_name argument to the definition for 'seminar.Resitel.osoba' or 'seminar.Prijemce.osoba'.
Snadné řešení: dočasné related names mít unikátní. Stejně to nikoho nezajímá. Snadné řešení: dočasné related names mít unikátní. Stejně to nikoho nezajímá.
!! Zkontrolovat, že všechno má nastavenou db_table (jinak se to potom pokusí vybastlit jméno tabulky podle aplikace…) !! Zkontrolovat, že všechno má nastavenou db_table (jinak se to potom pokusí vybastlit jméno tabulky podle aplikace…)
Pro tip: related names nejsou součástí DB schématu, takže když se tohle opraví později (typicky při create spadne makemigrations), nevadí to a nemělo by být potřeba měnit migrace).
Pro multi-table inheritance je potřeba explicitně přidat 1to1Field s parent_link=True (<https://docs.djangoproject.com/en/5.0/topics/db/models/#specifying-the-parent-link-field>)
Je potřeba to udělat správně (třeba nemít FK), migrace potřeba není, protože je to stejně unmanaged…
makemigrations, bez úprav makemigrations, bez úprav
migrate? migrate?

Loading…
Cancel
Save