From a2517abade88ab45fd1fb9fa71c7af35392421bc Mon Sep 17 00:00:00 2001 From: "Pavel \"LEdoian\" Turinsky" Date: Sun, 3 Nov 2024 03:12:16 +0100 Subject: [PATCH 1/2] =?UTF-8?q?Odst=C5=99el:=20z=C3=A1v=C4=9Bre=C4=8Dn?= =?UTF-8?q?=C3=A1=20migrace?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- seminar/migrations/0144_post_odstrel_vseho.py | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 seminar/migrations/0144_post_odstrel_vseho.py diff --git a/seminar/migrations/0144_post_odstrel_vseho.py b/seminar/migrations/0144_post_odstrel_vseho.py new file mode 100644 index 00000000..2a5d10f2 --- /dev/null +++ b/seminar/migrations/0144_post_odstrel_vseho.py @@ -0,0 +1,43 @@ +# Generated by Django 4.2.16 on 2024-11-03 01:55 + +from django.db import migrations + +# Myšlenka: Tahle migrace o sobě prohlašuje, že závisí na všem, co se do téhle chvíle stalo. To má dva důsledky: +# 1. V okamžiku, kdy tahle migrace proběhne, tak už máme model ve stavu který očekáváme. IOW slouží jako bariéra, za kterou nemůžou přetéct úpravy ostatních aplikací (hlavně těch našich) +# 2. Zároveň ale tvrdíme, že k tomu, aby tahle migrace proběhla, potřebujeme (potenciálně relativně staré) verze cizích aplikací, což způsobí uspořádání opačným směrem: DB změny cizích aplikací naopak proběhnou až po této migraci +# Vzhledem k tomu, že by i naše předchozí aplikace měly záviset na těchto změnách, tak tím efektivně vynucujeme zachování stavu pro ty mezilehlé migrace, které možná (chybou) nedokumentovaně spoléhají na to, jak vypadají cizí aplikace. +# Plán do budoucna: Jakmile tahle migrace proběhne na všech myslitelných databázích, můžeme její předchůdce prostě smazat a nahradit nějakou výrazně snazší sadou migrací, která jen vygeneruje správně tabulky a závislosti podle aktuálního modelu. +# - To se ve skutečnosti vesměs už stalo, v odstřelených aplikacích jsou modely stejně všechny „nové s daty spadlými z nebe“. Je moc pozdě v noci, ale myslím si, že prostě bude stačit smazat závislosti na migracích v `seminar`i a celou aplikaci `seminar` zrušit. (Největší problém je to při nasazování DB z nuly např. u generování testdat…) +# Je otázka, jestli tahle migrace nemá bydlet ve `various` či jinde, aby se dala smazat celá složka `seminar`. + +class Migration(migrations.Migration): + + dependencies = [ + ('admin', '0003_logentry_add_action_flag_choices'), + ('auth', '0012_alter_user_first_name_max_length'), + ('authtoken', '0004_alter_tokenproxy_options'), + ('contenttypes', '0002_remove_content_type_name'), + ('flatpages', '0001_initial'), + ('galerie', '0013_post_split_soustredeni'), + ('header_fotky', '0001_initial'), + ('korektury', '0024_vic_orgu_k_pdf'), + ('novinky', '0004_alter_novinky_id'), + ('odevzdavatko', '0009_odstrel_treenode_post'), + ('personalni', '0017_odstrel_treenode_post'), + ('prednasky', '0018_post_split_soustredeni'), + ('reversion', '0002_add_index_on_version_for_content_type_and_db'), + ('seminar', '0143_odstrel_treenode_post'), + ('sessions', '0001_initial'), + ('sifrovacka', '0006_personalni_post_migrate'), + ('sites', '0002_alter_domain_unique'), + ('sitetree', '0002_alter_treeitem_parent_alter_treeitem_tree'), + ('soustredeni', '0010_tvorba_post'), + ('taggit', '0006_rename_taggeditem_content_type_object_id_taggit_tagg_content_8fc721_idx'), + ('treenode', '0003_odstrel_treenode_post'), + ('tvorba', '0005_odstrel_treenode_post'), + ('various', '0006_tvorba_post'), + ('vyroci', '0001_initial'), + ] + + operations = [ + ] From 461cfa4253ac5d6743f9f309ab9f24fc0fa95137 Mon Sep 17 00:00:00 2001 From: "Pavel \"LEdoian\" Turinsky" Date: Sun, 3 Nov 2024 03:20:52 +0100 Subject: [PATCH 2/2] =?UTF-8?q?Treenode:=20koment=C3=A1=C5=99=20o=20tom,?= =?UTF-8?q?=20pro=C4=8D=20tam=20je=20i=20Text=20a=20Obrazek?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- treenode/models.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/treenode/models.py b/treenode/models.py index 414e9e40..8196d647 100644 --- a/treenode/models.py +++ b/treenode/models.py @@ -249,6 +249,16 @@ class ReseniNode(TreeNode): def getOdkazStr(self): return str(self.reseni) +# LEdoian: Můžu prostě odstřelit Text a Obrázek do aplikace `treenode`, kam podle mě +# stejně patří? (Myšlenka, proč by tam měly patřit: tak, jak teď jsou je stejně +# využívají jen TreeNody a žádné rozhraní k nim stejně není, takže aktuálně +# použít nejdou (jako zbytek TN) a jejich sémantika pro „společnou tvorbu čísla +# na web a PDF“ je ze stejné školy. A taky kvůli nemíchání – pokud vbrzku bude +# potřeba nějaký podobný model, navrhuji ho udělat znovu a klidně úplně stejně, +# staré věci pak buď zůstanou skryté, nebo je datově namigrujeme – taková +# migrace bude snadná.) – Jidáš: jo, a napiš tam tyhle myšlenky do komentáře. +# (zhruba přepis diskuse ve web-dev, 2024-10-30.) + class Text(SeminarModelBase): class Meta: db_table = 'seminar_texty'