Jonas Havelka
1 week ago
159 changed files with 3463 additions and 883 deletions
@ -0,0 +1,731 @@ |
|||
@charset "utf-8"; /* vynuť utf-8 */ |
|||
|
|||
@supports (-webkit-touch-callout: none) and (not (offset-position: normal)) { |
|||
|
|||
.button { |
|||
margin: 10px 0 10px 0; |
|||
padding: 4px 0; /*vertikální centování textu*/ |
|||
text-align: center; |
|||
background-color: var(--hlavni-oranzova); |
|||
color: var(--barva-pozadi); |
|||
font-size: 150%; |
|||
font-weight: bold; |
|||
font-variant: small-caps; |
|||
filter: drop-shadow(0px 5px 5px rgba(0, 0, 0, 0.4)); |
|||
} |
|||
.button:hover { |
|||
position: relative; |
|||
top: 2px; |
|||
left: 2px; |
|||
background-color: #df490e; |
|||
} |
|||
/******************/ |
|||
|
|||
|
|||
|
|||
|
|||
|
|||
/* Rozložení webu a jeho prvky (hlavička, menu, footer) */ |
|||
|
|||
/**** KONTEJNER ****/ |
|||
div.kontejner { /* Ne container, aby se to netlouklo s bootstrapem. */ |
|||
width: 970px; |
|||
margin: auto; |
|||
min-height: 100vh; |
|||
position: relative; |
|||
padding: 0; |
|||
} |
|||
|
|||
.org-logged-in div.kontejner { |
|||
margin-top: var(--login-bar-height); |
|||
} |
|||
|
|||
div.kontejner div.kontent-wrapper { |
|||
padding-bottom: var(--footer-height); |
|||
} |
|||
|
|||
div.kontejner div.kontent-wrapper div.kontent { |
|||
padding: 15px 30px; |
|||
} |
|||
|
|||
/* Roztáhne obsah z containeru na celou šířku obrazovky: */ |
|||
.full_width { |
|||
width: 100vw; |
|||
margin-left: calc(-50vw + 485px); |
|||
} |
|||
|
|||
/* Na úzkém displeji nechceme nic dělat. */ |
|||
@media(max-width: 860px) { |
|||
.full_width { |
|||
margin-left: 0; |
|||
width: unset; |
|||
} |
|||
} |
|||
/*******************/ |
|||
|
|||
|
|||
/**** HLAVIČKA ****/ |
|||
#header { |
|||
position: relative; |
|||
background: url("../images/header/vikendovka.jpg") no-repeat center top; /* poměr 350:970, TODO: aby to nemuselo být přesně na pixely */ |
|||
background-size: 100%; |
|||
top: 58px; |
|||
} |
|||
|
|||
#header img.logo { |
|||
width: 100%; |
|||
filter: drop-shadow(0px 5px 5px rgba(0, 0, 0, 0.4)); |
|||
} |
|||
|
|||
#header img.logo-mobile { |
|||
display: none; |
|||
} |
|||
|
|||
#header .no-mobile { |
|||
background-size: contain; |
|||
} |
|||
/******************/ |
|||
|
|||
|
|||
/**** Footer ****/ |
|||
#footer { |
|||
position: absolute; |
|||
bottom: 0; |
|||
width: 100%; |
|||
background: url("../images/mozaika-footer.svg") no-repeat top center; |
|||
height: var(--footer-height); |
|||
background-size: 100%; |
|||
filter: drop-shadow(5px 0px 5px rgba(0, 0, 0, 0.4)); |
|||
padding-top: 3.5%; |
|||
} |
|||
|
|||
#footer p.license { |
|||
text-align: center; |
|||
font-weight: 400; |
|||
bottom: 0; |
|||
} |
|||
|
|||
#footer p.license a { |
|||
color: #333; |
|||
} |
|||
|
|||
@media (max-width: 650px) { |
|||
#footer { |
|||
display: none; |
|||
} |
|||
} |
|||
|
|||
p.license-mobile { |
|||
display: none; |
|||
margin-bottom: 0; |
|||
} |
|||
|
|||
@media (max-width: 650px) { |
|||
p.license-mobile { |
|||
position: relative; |
|||
display: block; |
|||
font-size: 90%; |
|||
background-color: var(--hlavni-oranzova); |
|||
padding: 5%; |
|||
text-align: justify; |
|||
} |
|||
} |
|||
/****************/ |
|||
|
|||
|
|||
/**** LOGIN BAR ****/ |
|||
div.login-bar { |
|||
background: var(--orgovska-fialova); |
|||
color: var(--svetla-oranzova); |
|||
width: 100%; |
|||
|
|||
position: fixed; |
|||
margin-top: calc(-1 * var(--login-bar-height)); |
|||
min-height: var(--login-bar-height); |
|||
z-index: 4086; |
|||
|
|||
padding-left: 5px; |
|||
padding-right: 5px; |
|||
} |
|||
|
|||
div.login-bar div { |
|||
display: inline; |
|||
} |
|||
|
|||
div.login-bar a.LOGIN-ref-admin { |
|||
display: inline; |
|||
color: var(--barva-pozadi); |
|||
} |
|||
|
|||
div.login-bar .LOGIN_napis-webarum { |
|||
display: inline; |
|||
color: var(--barva-pozadi); |
|||
float: right; |
|||
} |
|||
|
|||
div.login-bar .LOGIN_napis-webarum a { |
|||
color: var(--svetla-oranzova); |
|||
text-decoration: underline; |
|||
} |
|||
/*******************/ |
|||
|
|||
|
|||
/* stránka přes celý displej */ |
|||
@media (max-width: 970px) { |
|||
#header { |
|||
background-size: 100%; |
|||
} |
|||
|
|||
#header img.logo { |
|||
width: 100%; |
|||
} |
|||
} |
|||
|
|||
/* malý tablet, mobil */ |
|||
@media (max-width: 650px) { |
|||
#header { |
|||
width: 100%; |
|||
top: 0; |
|||
background-image: none; |
|||
} |
|||
|
|||
#header img.logo { |
|||
display: none; |
|||
} |
|||
|
|||
#header img.logo-mobile { |
|||
display: block; |
|||
top: 0; |
|||
left: 0; |
|||
width: 100%; |
|||
filter: drop-shadow(0px 0 5px rgba(0, 0, 0, 0.4)); |
|||
margin-bottom: 3px; |
|||
} |
|||
|
|||
#header .no-mobile{ |
|||
display: none; |
|||
} |
|||
} |
|||
|
|||
|
|||
|
|||
|
|||
|
|||
/**** MENU ****/ |
|||
|
|||
ul.menu { |
|||
width: 100%; |
|||
padding: 0; |
|||
margin-top: -5px; /* posune celé menu nahoru (pak potřeba zvětšit mezeru mezi menu a submenu) */ |
|||
|
|||
font-variant: small-caps; |
|||
} |
|||
|
|||
ul.menu a { |
|||
text-decoration: none; |
|||
font-weight: bold; |
|||
font-size: 105%; |
|||
} |
|||
|
|||
ul.menu li { |
|||
margin: 0; |
|||
display: inline-block; |
|||
width: 16.666667%; |
|||
text-align: center; |
|||
|
|||
font-size: 140%; |
|||
font-weight: 400; |
|||
} |
|||
|
|||
ul.menu li >a:hover, >a:active { |
|||
color: black; |
|||
} |
|||
|
|||
ul.menu li.active>a { |
|||
color: var(--svetla-oranzova); |
|||
} |
|||
|
|||
ul.menu ul.submenu { |
|||
background-color: var(--hlavni-oranzova); |
|||
margin-top: 10px; /* mezera mezi hlavním menu a submenu */ |
|||
margin-bottom: 10px; |
|||
padding-top: 10px; |
|||
padding-bottom: 5px; |
|||
filter: drop-shadow(0px 5px 5px rgba(0, 0, 0, 0.4)); |
|||
|
|||
z-index: 50; |
|||
font-weight: 400; |
|||
} |
|||
|
|||
ul.menu ul.submenu li { |
|||
width: auto; |
|||
padding: 0 20px 0 20px; |
|||
display: inline-block; |
|||
} |
|||
|
|||
ul.menu ul.submenu li >a { |
|||
color: var(--svetla-oranzova); |
|||
text-decoration: none; |
|||
text-shadow: none; |
|||
} |
|||
|
|||
ul.menu ul.submenu li >a :hover { |
|||
color: black; |
|||
} |
|||
|
|||
ul.menu ul.submenu li.active>a, .parentactive ul li:first-child>a { |
|||
color: black; |
|||
} |
|||
|
|||
@media (max-width: 970px) { |
|||
ul.menu { |
|||
font-size: 90%; |
|||
margin-top: -7px; |
|||
} |
|||
|
|||
ul.menu li { |
|||
margin-top: 10px; /* posunutí textu hlavního menu níže */ |
|||
} |
|||
|
|||
ul.submenu { |
|||
margin-top: 8px; /* mezera mezi hlavním menu a submenu */ |
|||
} |
|||
|
|||
ul.submenu li { |
|||
margin-top: 0; /* aby se spolu s textem hlavního menu neposunoval níže i text submenu */ |
|||
} |
|||
} |
|||
|
|||
@media(max-width: 800px) { |
|||
ul.menu { |
|||
font-size: 80%; |
|||
margin-top: -2px; |
|||
} |
|||
|
|||
ul.menu li { |
|||
margin-top: 10px; /* posunutí textu hlavního menu níže */ |
|||
} |
|||
|
|||
ul.submenu { |
|||
margin-top: 8px; /* mezera mezi hlavním menu a submenu */ |
|||
} |
|||
ul.submenu li { |
|||
margin-top: 0; /* aby se spolu s textem hlavního menu neposunoval níže i text submenu */ |
|||
} |
|||
} |
|||
|
|||
@media (max-width: 650px) { |
|||
ul.menu { |
|||
display: none; |
|||
} |
|||
|
|||
ul.menu_mobile { |
|||
display: block; |
|||
z-index: 10; |
|||
position: sticky; |
|||
font-variant: small-caps; |
|||
font-size: 150%; |
|||
font-weight: bold; |
|||
list-style-type: none; |
|||
padding-top: 3px; |
|||
padding-bottom: 3px; |
|||
padding-left: 12px; |
|||
} |
|||
|
|||
ul.menu_mobile a:active, ul.menu_mobile a:hover, ul.menu_mobile a:focus { |
|||
text-decoration: none; |
|||
color: black; |
|||
} |
|||
|
|||
ul.menu_mobile ul { |
|||
list-style-type: none; |
|||
font-size: 90%; |
|||
color: black; /*černé šipky submenu*/ |
|||
} |
|||
|
|||
ul.menu_mobile ul li > a { |
|||
color: black; |
|||
} |
|||
|
|||
ul.menu_mobile ul li::before { |
|||
content: ' \276D '; /*https://www.w3schools.com/cssref/css_entities.asp*/ |
|||
} |
|||
|
|||
ul.menu_mobile br { |
|||
display: none; |
|||
} |
|||
} /* konec @media */ |
|||
/**************/ |
|||
|
|||
/**** ZBYTEK ****/ |
|||
/* (konkrétní stránky) */ |
|||
|
|||
/* Titulní stránka */ |
|||
.titulnistrana { |
|||
display: flex; |
|||
text-align: justify; |
|||
|
|||
@media(max-width: 800px){ |
|||
.titulnistrana { |
|||
display: block; |
|||
} |
|||
} |
|||
|
|||
.titulnistrana h1 { text-align: center; } |
|||
|
|||
.titulnistrana .TITULNI_STRANA_zjistit_vic { |
|||
text-align: center; |
|||
margin-bottom: 30px; |
|||
} |
|||
|
|||
.titulnistrana .TITULNI_STRANA_zjistit_vic hr { |
|||
display: none; |
|||
} |
|||
|
|||
@media(max-width: 800px){ |
|||
.titulnistrana .TITULNI_STRANA_zjistit_vic hr { |
|||
display: flex; |
|||
} |
|||
} |
|||
|
|||
@media(max-width: 800px) { |
|||
.titulnistrana .TITULNI_STRANA_graf { |
|||
padding-top: 40px; |
|||
} |
|||
} |
|||
|
|||
.titulnistrana .TITULNI_STRANA_graf .TITULNI_STRANA_graf-svg { |
|||
display: flex; |
|||
} |
|||
|
|||
.titulnistrana .TITULNI_STRANA_graf .TITULNI_STRANA_graf-svg #svg-graf { |
|||
width: 100%; |
|||
height: auto; |
|||
margin: 30px; |
|||
} |
|||
|
|||
@media(max-width: 800px){ |
|||
.titulnistrana .TITULNI_STRANA_graf .TITULNI_STRANA_graf-svg #svg-graf { |
|||
max-width: 500px; |
|||
padding: 10px; |
|||
margin: auto; |
|||
} |
|||
} |
|||
|
|||
.titulnistrana .TITULNI_STRANA_obsah { |
|||
width: 66%; |
|||
} |
|||
|
|||
@media(max-width: 800px){ |
|||
.titulnistrana .TITULNI_STRANA_obsah { |
|||
width: 100%; |
|||
} |
|||
} |
|||
|
|||
.titulnistrana .TITULNI_STRANA_vitej_titulka, .TITULNI_STRANA_temata_titulka { |
|||
width: 49%; |
|||
padding: 10px; |
|||
display: table-cell; |
|||
} |
|||
|
|||
@media (max-width: 650px) { |
|||
.titulnistrana .TITULNI_STRANA_vitej_titulka, .TITULNI_STRANA_temata_titulka { |
|||
width: 100%; |
|||
display: block; |
|||
} |
|||
} |
|||
|
|||
.titulnistrana .TITULNI_STRANA_novinky { |
|||
width: 33%; |
|||
padding: 10px; |
|||
} |
|||
|
|||
@media(max-width: 800px){ |
|||
.titulnistrana .TITULNI_STRANA_novinky { |
|||
width: 100%; |
|||
max-width: 500px; |
|||
margin: auto; |
|||
} |
|||
} |
|||
|
|||
|
|||
/* Stránky Aktuální ročník */ |
|||
.stranka_aktualni_zadani { |
|||
text-align: center; |
|||
} |
|||
|
|||
.stranka_aktualni_zadani #AKTUALNI_ZADADNI_obrazek { |
|||
margin-top: 15px; |
|||
} |
|||
|
|||
.stranka_aktualni_zadani div.AKTUALNI_ZADANI_termin { |
|||
text-align: center; |
|||
font-size: large; |
|||
font-weight: bold; |
|||
} |
|||
|
|||
@media (max-width: 420px) { |
|||
.stranka_aktualni_zadani div.AKTUALNI_ZADANI_termin { |
|||
font-size: small; |
|||
} |
|||
} |
|||
|
|||
.stranka_aktualni_zadani .AKTUALNI_ZADANI_datum { |
|||
color: var(--hlavni-oranzova); |
|||
margin: 0; |
|||
} |
|||
} |
|||
|
|||
/* Stránka Jak řešit */ |
|||
.jakresit svg { |
|||
width: 33%; |
|||
padding: 10px; |
|||
filter: none; |
|||
} |
|||
|
|||
@media(max-width: 860px) { |
|||
.jakresit svg { |
|||
margin: auto; |
|||
display: grid; |
|||
width: 100%; |
|||
max-width: 360px; |
|||
} |
|||
} |
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
/**** OZNAČENÍ NE-PUBLIC ČÁSTÍ ****/ |
|||
.mam-org-only { |
|||
background: var(--orgovska-svetla-fialova); |
|||
padding: 10px; |
|||
margin: 10px -10px; |
|||
border: var(--orgovska-fialova) 2px dashed; |
|||
} |
|||
|
|||
.mam-org-only .mam-org-only { |
|||
border: 0; |
|||
} |
|||
|
|||
.mam-org-only li { |
|||
padding: 3px 0; |
|||
margin: -2px 0; |
|||
} |
|||
/**********************************/ |
|||
|
|||
|
|||
|
|||
/**** OTÁČECÍ KARTY ****/ |
|||
/* (orgové, archiv) */ |
|||
.flip-card { |
|||
perspective: 1000px; /* Remove this if you don't want the 3D effect */ |
|||
margin-left: auto; |
|||
margin-right: auto; |
|||
} |
|||
|
|||
/* This container is needed to position the front and back side */ |
|||
.flip-card .flip-card-inner { |
|||
position: relative; |
|||
width: 100%; |
|||
height: 100%; |
|||
transition: transform 0.8s; |
|||
transform-style: preserve-3d; |
|||
} |
|||
|
|||
/* Do an horizontal flip when you move the mouse over the flip box container */ |
|||
.flip-card:hover .flip-card-inner { |
|||
transform: rotateY(180deg); |
|||
} |
|||
|
|||
/* Position the front and back side */ |
|||
.flip-card .flip-card-front, .flip-card-back { |
|||
position: absolute; |
|||
width: 100%; |
|||
height: 100%; |
|||
-webkit-backface-visibility: hidden; /* Safari */ |
|||
backface-visibility: hidden; |
|||
} |
|||
|
|||
.flip-card div.flip-card-foto, div.flip-card-foto img { |
|||
width: 100%; |
|||
height: 100%; |
|||
|
|||
/* Pokud je na přední straně něco proklikávacího (třeba celá fotka), tak na dotykových zařízeních nemůže proklikávat, aby se dalo otáčet */ |
|||
@media(hover: none) { |
|||
.flip-card div.flip-card-foto, div.flip-card-foto img a { pointer-events: none; } |
|||
} |
|||
|
|||
/* Style the back side */ |
|||
.flip-card-back { |
|||
transform: rotateY(180deg); |
|||
padding: 10px; |
|||
padding-top: 20px; |
|||
} |
|||
} |
|||
/***********************/ |
|||
|
|||
|
|||
/**** TABULKY ****/ |
|||
|
|||
/** Tabulka s čárami mezi sloupci **/ |
|||
/* Např. výsledkovky */ |
|||
|
|||
.tabulka_oramovane_sloupce { |
|||
border: solid 2px; |
|||
} |
|||
|
|||
.tabulka_oramovane_sloupce td:first-child, .tabulka_oramovane_sloupce th:first-child { |
|||
border-left: none; |
|||
border-right: solid 1px; |
|||
} |
|||
|
|||
.tabulka_oramovane_sloupce td:nth-child(2), .tabulka_oramovane_sloupce th:nth-child(2) { |
|||
border-left: none; |
|||
} |
|||
|
|||
.tabulka_oramovane_sloupce td, .tabulka_oramovane_sloupce th { |
|||
padding: 0.1em 0.3em; |
|||
border-left: solid 1px; |
|||
} |
|||
|
|||
.tabulka_oramovane_sloupce thead th, .tabulka_oramovane_sloupce thead td { |
|||
border-bottom: solid 1px; |
|||
} |
|||
/***********************************/ |
|||
|
|||
|
|||
/** Tabulka se střídajícími se barvami řádků **/ |
|||
/* Skoro jakákoliv tabulka kromě výsledkovek */ |
|||
|
|||
.barevna_tabulka td th { |
|||
padding: 1px 10px 1px 10px; |
|||
} |
|||
|
|||
.barevna_tabulka tbody tr:nth-child(even), thead tr { |
|||
background: var(--svetlounka-oranzova); |
|||
} |
|||
|
|||
.barevna_tabulka tbody tr:nth-child(odd) { |
|||
background: var(--barva-pozadi); |
|||
} |
|||
/**********************************************/ |
|||
|
|||
|
|||
/** Tabulka, kde první řádek a sloupec je pořád vidět **/ |
|||
/* Např. tabulka odevzdaných řešení, nebo výsledkovky */ |
|||
.tabulka_s_uchycenym_radkem_a_sloupcem { |
|||
/* Omezí výšku a šířku, aby bylo příjemné na scrollování a zapne scrollování */ |
|||
display: block; |
|||
width: fit-content; /* display: block; roztahuje na celou šířku */ |
|||
max-height: 80vh; |
|||
overflow: auto; |
|||
max-width: 90%; /* (FIXME asi není potřeba u tabulek, co nejsou na celou obrazovku) */ |
|||
margin-left: 5%; /* Vystředování (FIXME není potřeba u tabulek, co nejsou na celou obrazovku) */ |
|||
|
|||
border-collapse: separate; /* Pokud má tabulka orámování, je potřeba ho separovat, aby dodrželo position: sticky; */ |
|||
border-spacing: 0; |
|||
} |
|||
|
|||
/* Uchytí první řádek */ |
|||
.tabulka_s_uchycenym_radkem_a_sloupcem thead tr { |
|||
position: sticky; |
|||
top: 0; |
|||
z-index: 2; |
|||
} |
|||
|
|||
/* Uchytí první sloupec */ |
|||
.tabulka_s_uchycenym_radkem_a_sloupcem td:first-child, .tabulka_s_uchycenym_radkem_a_sloupcem th:first-child { |
|||
position: sticky; |
|||
left: 0; |
|||
background: inherit; /* (Snad) zneprůhlední první sloupec */ |
|||
z-index: 1; |
|||
} |
|||
/*******************************************************/ |
|||
|
|||
/** Tabulka mající všechna ohraničení **/ |
|||
.plne_ohranicena_tabulka { |
|||
border-collapse: collapse; |
|||
} |
|||
|
|||
.plne_ohranicena_tabulka tr th, .plne_ohranicena_tabulka tr td { |
|||
border: 1px solid black; |
|||
padding: 1px 10px 1px 10px; |
|||
} |
|||
/***************************************/ |
|||
|
|||
/** Výsledkovky **/ |
|||
.vysledkovka, .tabulka_oramovane_sloupce td:first-child, .vysledkovka, .tabulka_oramovane_sloupce th:first-child { position: unset; } |
|||
.vysledkovka, .tabulka_oramovane_sloupce td:nth-child(2), .vysledkovka, .tabulka_oramovane_sloupce th:nth-child(2) { |
|||
border-right: solid 1px; |
|||
|
|||
position: sticky; |
|||
left: 0; |
|||
background: inherit; /* (Snad) zneprůhlední druhý sloupec */ |
|||
z-index: 1; |
|||
} |
|||
.vysledkovka, .tabulka_oramovane_sloupce td:nth-child(3), .vysledkovka, .tabulka_oramovane_sloupce th:nth-child(3) { |
|||
border-left: none; |
|||
} |
|||
/*****************/ |
|||
|
|||
|
|||
/** Tabulka mých (řešitelových) řešení **/ |
|||
.moje_reseni tr th, .moje_reseni tr td { |
|||
text-align: center; |
|||
} |
|||
|
|||
.moje_reseni tr td.problem { text-align: left; } |
|||
/****************************************/ |
|||
|
|||
|
|||
/** Detail řešení **/ |
|||
.bodovani>input { |
|||
width: 4em; |
|||
} |
|||
|
|||
.bodovani>input::placeholder { |
|||
color: lightgray; |
|||
opacity: 1; |
|||
} |
|||
|
|||
.bodovani>input::-webkit-input-placeholder { /* Edge */ |
|||
color: lightgray; |
|||
} |
|||
|
|||
/*******************/ |
|||
/*****************/ |
|||
|
|||
|
|||
.novinka .novinka_obrazek { |
|||
margin: 10px 0 10px 0; |
|||
width: 100%; |
|||
} |
|||
|
|||
.novinka .novinka_datum { |
|||
font-weight: bold; |
|||
} |
|||
|
|||
.novinka .novinka_autor { |
|||
text-align: right; |
|||
font-style: italic; |
|||
} |
|||
|
|||
/**** FORMULÁŘE ****/ |
|||
div.gdpr { |
|||
font-size: 6pt; |
|||
} |
|||
|
|||
div.gdpr p { |
|||
font-size: 6pt; |
|||
margin-bottom: .66em; |
|||
} |
|||
|
|||
/*******************/ |
|||
|
|||
|
|||
} |
@ -0,0 +1,99 @@ |
|||
# Generated by Django 4.2.13 on 2024-10-22 22:51 |
|||
|
|||
from django.db import migrations, models |
|||
import django.utils.timezone |
|||
import odevzdavatko.models |
|||
|
|||
def nastav_nove_contenttypes(apps, schema_editor): |
|||
ContentType = apps.get_model('contenttypes', 'ContentType') |
|||
for m in ('reseni', 'hodnoceni', 'reseni_resitele', 'prilohareseni'): |
|||
ContentType.objects.filter(app_label='seminar', model=m).update(app_label='odevzdavatko') |
|||
|
|||
def nastav_stare_contenttypes(apps, schema_editor): |
|||
ContentType = apps.get_model('contenttypes', 'ContentType') |
|||
for m in ('reseni', 'hodnoceni', 'reseni_resitele', 'prilohareseni'): |
|||
ContentType.objects.filter(app_label='odevzdavatko', model=m).update(app_label='seminar') |
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
initial = True |
|||
|
|||
dependencies = [ |
|||
('seminar', '0132_unmanage_odevzdavatko'), |
|||
] |
|||
|
|||
operations = [ |
|||
migrations.CreateModel( |
|||
name='Hodnoceni', |
|||
fields=[ |
|||
('id', models.AutoField(primary_key=True, serialize=False)), |
|||
('body', models.DecimalField(blank=True, decimal_places=1, max_digits=8, null=True, verbose_name='body')), |
|||
('feedback', models.TextField(blank=True, default='', help_text='Zpětná vazba řešiteli (plain text)', verbose_name='zpětná vazba')), |
|||
('cislo_body', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='hodnoceni', to='seminar.cislo', verbose_name='číslo pro body')), |
|||
('deadline_body', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='hodnoceni', to='seminar.deadline', verbose_name='deadline pro body')), |
|||
('problem', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='hodnoceni', to='seminar.problem', verbose_name='problém')), |
|||
('reseni', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='odevzdavatko.reseni', verbose_name='řešení')), |
|||
], |
|||
options={ |
|||
'verbose_name': 'Hodnocení', |
|||
'verbose_name_plural': 'Hodnocení', |
|||
'db_table': 'seminar_hodnoceni', |
|||
'managed': False, |
|||
}, |
|||
), |
|||
migrations.CreateModel( |
|||
name='PrilohaReseni', |
|||
fields=[ |
|||
('id', models.AutoField(primary_key=True, serialize=False)), |
|||
('vytvoreno', models.DateTimeField(blank=True, default=django.utils.timezone.now, editable=False, verbose_name='vytvořeno')), |
|||
('soubor', models.FileField(upload_to=odevzdavatko.models.generate_filename, verbose_name='soubor')), |
|||
('poznamka', models.TextField(blank=True, help_text='Neveřejná poznámka k příloze řešení (plain text), např. o původu', verbose_name='neveřejná poznámka')), |
|||
('res_poznamka', models.TextField(blank=True, help_text='Poznámka k příloze řešení, např. co daný soubor obsahuje', verbose_name='poznámka řešitele')), |
|||
('reseni', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='prilohy', to='odevzdavatko.reseni', verbose_name='řešení')), |
|||
], |
|||
options={ |
|||
'verbose_name': 'Příloha řešení', |
|||
'verbose_name_plural': 'Přílohy řešení', |
|||
'db_table': 'seminar_priloha_reseni', |
|||
'ordering': ['reseni', 'vytvoreno'], |
|||
'managed': False, |
|||
}, |
|||
), |
|||
migrations.CreateModel( |
|||
name='Reseni', |
|||
fields=[ |
|||
('id', models.AutoField(primary_key=True, serialize=False)), |
|||
('cas_doruceni', models.DateTimeField(blank=True, default=django.utils.timezone.now, verbose_name='čas_doručení')), |
|||
('forma', models.CharField(choices=[('papir', 'Papírové řešení'), ('email', 'Emailem'), ('upload', 'Upload přes web')], default='email', max_length=16, verbose_name='forma řešení')), |
|||
('poznamka', models.TextField(blank=True, help_text='Neveřejná poznámka k řešení (plain text)', verbose_name='neveřejná poznámka')), |
|||
('zverejneno', models.BooleanField(default=False, help_text='Udává, zda je řešení zveřejněno', verbose_name='řešení zveřejněno')), |
|||
('problem', models.ManyToManyField(help_text='Problém', through='odevzdavatko.Hodnoceni', to='seminar.problem', verbose_name='problém')), |
|||
('resitele', models.ManyToManyField(help_text='Seznam autorů řešení', through='odevzdavatko.Reseni_Resitele', to='personalni.resitel', verbose_name='autoři řešení')), |
|||
('text_cely', models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='reseni_cely_set', to='seminar.reseninode', verbose_name='Plná verze textu řešení')), |
|||
], |
|||
options={ |
|||
'verbose_name': 'Řešení', |
|||
'verbose_name_plural': 'Řešení', |
|||
'db_table': 'seminar_reseni', |
|||
'ordering': ['-cas_doruceni'], |
|||
'managed': False, |
|||
}, |
|||
), |
|||
migrations.CreateModel( |
|||
name='Reseni_Resitele', |
|||
fields=[ |
|||
('id', models.AutoField(primary_key=True, serialize=False)), |
|||
('reseni', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='odevzdavatko.reseni', verbose_name='řešení')), |
|||
('resitele', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='personalni.resitel', verbose_name='řešitel')), |
|||
], |
|||
options={ |
|||
'verbose_name': 'Řešení řešitelů', |
|||
'verbose_name_plural': 'Řešení řešitelů', |
|||
'db_table': 'seminar_reseni_resitele', |
|||
'ordering': ['reseni', 'resitele'], |
|||
'managed': False, |
|||
}, |
|||
), |
|||
migrations.RunPython(nastav_nove_contenttypes, nastav_stare_contenttypes), |
|||
|
|||
] |
@ -0,0 +1,30 @@ |
|||
# Generated by Django 4.2.13 on 2024-10-23 21:07 |
|||
|
|||
from django.db import migrations |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('odevzdavatko', '0001_create'), |
|||
('seminar', '0134_delete_odevzdavatko'), |
|||
] |
|||
|
|||
operations = [ |
|||
migrations.AlterModelOptions( |
|||
name='hodnoceni', |
|||
options={'verbose_name': 'Hodnocení', 'verbose_name_plural': 'Hodnocení'}, |
|||
), |
|||
migrations.AlterModelOptions( |
|||
name='prilohareseni', |
|||
options={'ordering': ['reseni', 'vytvoreno'], 'verbose_name': 'Příloha řešení', 'verbose_name_plural': 'Přílohy řešení'}, |
|||
), |
|||
migrations.AlterModelOptions( |
|||
name='reseni', |
|||
options={'ordering': ['-cas_doruceni'], 'verbose_name': 'Řešení', 'verbose_name_plural': 'Řešení'}, |
|||
), |
|||
migrations.AlterModelOptions( |
|||
name='reseni_resitele', |
|||
options={'ordering': ['reseni', 'resitele'], 'verbose_name': 'Řešení řešitelů', 'verbose_name_plural': 'Řešení řešitelů'}, |
|||
), |
|||
] |
@ -0,0 +1,13 @@ |
|||
# Generated by Django 4.2.13 on 2024-10-23 21:10 |
|||
|
|||
from django.db import migrations |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('odevzdavatko', '0002_manage'), |
|||
] |
|||
|
|||
operations = [ |
|||
] |
@ -0,0 +1,13 @@ |
|||
# Generated by Django 4.2.16 on 2024-10-30 01:06 |
|||
|
|||
from django.db import migrations |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('odevzdavatko', '0003_odstrel_odevzdavatka_post'), |
|||
] |
|||
|
|||
operations = [ |
|||
] |
@ -0,0 +1,35 @@ |
|||
# Generated by Django 4.2.16 on 2024-10-30 13:18 |
|||
|
|||
from django.db import migrations, models |
|||
import django.db.models.deletion |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('tvorba', '0001_tvorba_create'), |
|||
('odevzdavatko', '0004_tvorba_pre'), |
|||
] |
|||
|
|||
operations = [ |
|||
migrations.AlterField( |
|||
model_name='hodnoceni', |
|||
name='cislo_body', |
|||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='hodnoceni', to='tvorba.cislo', verbose_name='číslo pro body'), |
|||
), |
|||
migrations.AlterField( |
|||
model_name='hodnoceni', |
|||
name='deadline_body', |
|||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='hodnoceni', to='tvorba.deadline', verbose_name='deadline pro body'), |
|||
), |
|||
migrations.AlterField( |
|||
model_name='hodnoceni', |
|||
name='problem', |
|||
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='hodnoceni', to='tvorba.problem', verbose_name='problém'), |
|||
), |
|||
migrations.AlterField( |
|||
model_name='reseni', |
|||
name='problem', |
|||
field=models.ManyToManyField(help_text='Problém', through='odevzdavatko.Hodnoceni', to='tvorba.problem', verbose_name='problém'), |
|||
), |
|||
] |
@ -0,0 +1,14 @@ |
|||
# Generated by Django 4.2.16 on 2024-10-30 21:34 |
|||
|
|||
from django.db import migrations |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('odevzdavatko', '0005_tvorba_relink'), |
|||
('tvorba', '0003_tvorba_post'), |
|||
] |
|||
|
|||
operations = [ |
|||
] |
@ -0,0 +1,13 @@ |
|||
# Generated by Django 4.2.16 on 2024-11-02 19:45 |
|||
|
|||
from django.db import migrations |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('odevzdavatko', '0006_tvorba_post'), |
|||
] |
|||
|
|||
operations = [ |
|||
] |
@ -0,0 +1,20 @@ |
|||
# Generated by Django 4.2.16 on 2024-11-02 20:44 |
|||
|
|||
from django.db import migrations, models |
|||
import django.db.models.deletion |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('treenode', '0001_odstrel_treenode_create'), |
|||
('odevzdavatko', '0007_odstrel_treenode_pre'), |
|||
] |
|||
|
|||
operations = [ |
|||
migrations.AlterField( |
|||
model_name='reseni', |
|||
name='text_cely', |
|||
field=models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='reseni_cely_set', to='treenode.reseninode', verbose_name='Plná verze textu řešení'), |
|||
), |
|||
] |
@ -0,0 +1,14 @@ |
|||
# Generated by Django 4.2.16 on 2024-11-02 20:52 |
|||
|
|||
from django.db import migrations |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('odevzdavatko', '0008_odstrel_treenode_relink'), |
|||
('treenode', '0003_odstrel_treenode_post'), |
|||
] |
|||
|
|||
operations = [ |
|||
] |
@ -0,0 +1,13 @@ |
|||
# Generated by Django 4.2.13 on 2024-10-22 22:17 |
|||
|
|||
from django.db import migrations |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('personalni', '0011_osloveni_vsechny_choices'), |
|||
] |
|||
|
|||
operations = [ |
|||
] |
@ -0,0 +1,14 @@ |
|||
# Generated by Django 4.2.13 on 2024-10-23 21:10 |
|||
|
|||
from django.db import migrations |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('personalni', '0012_odstrel_odevzdavatka_pre'), |
|||
('odevzdavatko', '0003_odstrel_odevzdavatka_post'), |
|||
] |
|||
|
|||
operations = [ |
|||
] |
@ -0,0 +1,13 @@ |
|||
# Generated by Django 4.2.16 on 2024-10-30 01:07 |
|||
|
|||
from django.db import migrations |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('personalni', '0013_odstrel_odevzdavatka_post'), |
|||
] |
|||
|
|||
operations = [ |
|||
] |
@ -0,0 +1,14 @@ |
|||
# Generated by Django 4.2.16 on 2024-10-30 21:35 |
|||
|
|||
from django.db import migrations |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('personalni', '0014_tvorba_pre'), |
|||
('tvorba', '0003_tvorba_post'), |
|||
] |
|||
|
|||
operations = [ |
|||
] |
@ -0,0 +1,13 @@ |
|||
# Generated by Django 4.2.16 on 2024-11-02 19:45 |
|||
|
|||
from django.db import migrations |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('personalni', '0015_tvorba_post'), |
|||
] |
|||
|
|||
operations = [ |
|||
] |
@ -0,0 +1,14 @@ |
|||
# Generated by Django 4.2.16 on 2024-11-02 20:52 |
|||
|
|||
from django.db import migrations |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('personalni', '0016_odstrel_treenode_pre'), |
|||
('treenode', '0003_odstrel_treenode_post'), |
|||
] |
|||
|
|||
operations = [ |
|||
] |
@ -1,6 +1,4 @@ |
|||
""" |
|||
Zde bývalo vše. Teď tu zbývají všechny modely a části webu jako archiv, |
|||
přehled orgů, aktuální (k aktuálnímu číslu) věci, titulka a jak řešit. |
|||
|
|||
Také je tu generování testovacích (lokálních) dat. |
|||
Zde bývalo vše. Teď tu zbývají migrace. |
|||
A kód pro `import seminar.models as m` pro ./manage.py shell. |
|||
""" |
@ -0,0 +1,14 @@ |
|||
# Generated by Django 4.2.13 on 2024-10-22 22:17 |
|||
|
|||
from django.db import migrations |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('seminar', '0130_clanek_strana'), |
|||
('personalni', '0012_odstrel_odevzdavatka_pre'), |
|||
] |
|||
|
|||
operations = [ |
|||
] |
@ -0,0 +1,29 @@ |
|||
# Generated by Django 4.2.13 on 2024-10-22 22:31 |
|||
|
|||
from django.db import migrations |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('seminar', '0131_odstrel_odevzdavatka_pre'), |
|||
] |
|||
|
|||
operations = [ |
|||
migrations.AlterModelOptions( |
|||
name='hodnoceni', |
|||
options={'managed': False, 'verbose_name': 'Hodnocení', 'verbose_name_plural': 'Hodnocení'}, |
|||
), |
|||
migrations.AlterModelOptions( |
|||
name='prilohareseni', |
|||
options={'managed': False, 'ordering': ['reseni', 'vytvoreno'], 'verbose_name': 'Příloha řešení', 'verbose_name_plural': 'Přílohy řešení'}, |
|||
), |
|||
migrations.AlterModelOptions( |
|||
name='reseni', |
|||
options={'managed': False, 'ordering': ['-cas_doruceni'], 'verbose_name': 'Řešení', 'verbose_name_plural': 'Řešení'}, |
|||
), |
|||
migrations.AlterModelOptions( |
|||
name='reseni_resitele', |
|||
options={'managed': False, 'ordering': ['reseni', 'resitele'], 'verbose_name': 'Řešení řešitelů', 'verbose_name_plural': 'Řešení řešitelů'}, |
|||
), |
|||
] |
@ -0,0 +1,20 @@ |
|||
# Generated by Django 4.2.13 on 2024-10-23 19:53 |
|||
|
|||
from django.db import migrations, models |
|||
import django.db.models.deletion |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('odevzdavatko', '0001_create'), |
|||
('seminar', '0132_unmanage_odevzdavatko'), |
|||
] |
|||
|
|||
operations = [ |
|||
migrations.AlterField( |
|||
model_name='reseninode', |
|||
name='reseni', |
|||
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='odevzdavatko.reseni', verbose_name='reseni'), |
|||
), |
|||
] |
@ -0,0 +1,50 @@ |
|||
# Generated by Django 4.2.13 on 2024-10-23 19:56 |
|||
|
|||
from django.db import migrations |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('seminar', '0133_relink_odevzdavatko'), |
|||
('odevzdavatko', '0001_create'), |
|||
] |
|||
|
|||
operations = [ |
|||
migrations.RemoveField( |
|||
model_name='prilohareseni', |
|||
name='reseni', |
|||
), |
|||
migrations.RemoveField( |
|||
model_name='reseni', |
|||
name='problem', |
|||
), |
|||
migrations.RemoveField( |
|||
model_name='reseni', |
|||
name='resitele', |
|||
), |
|||
migrations.RemoveField( |
|||
model_name='reseni', |
|||
name='text_cely', |
|||
), |
|||
migrations.RemoveField( |
|||
model_name='reseni_resitele', |
|||
name='reseni', |
|||
), |
|||
migrations.RemoveField( |
|||
model_name='reseni_resitele', |
|||
name='resitele', |
|||
), |
|||
migrations.DeleteModel( |
|||
name='Hodnoceni', |
|||
), |
|||
migrations.DeleteModel( |
|||
name='PrilohaReseni', |
|||
), |
|||
migrations.DeleteModel( |
|||
name='Reseni', |
|||
), |
|||
migrations.DeleteModel( |
|||
name='Reseni_Resitele', |
|||
), |
|||
] |
@ -0,0 +1,14 @@ |
|||
# Generated by Django 4.2.13 on 2024-10-23 21:10 |
|||
|
|||
from django.db import migrations |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('seminar', '0134_delete_odevzdavatko'), |
|||
('odevzdavatko', '0003_odstrel_odevzdavatka_post'), |
|||
] |
|||
|
|||
operations = [ |
|||
] |
@ -0,0 +1,21 @@ |
|||
# Generated by Django 4.2.16 on 2024-10-30 01:06 |
|||
|
|||
from django.db import migrations |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('seminar', '0135_odstrel_odevzdavatka_post'), |
|||
('odevzdavatko', '0004_tvorba_pre'), |
|||
('various', '0004_tvorba_pre'), |
|||
('soustredeni', '0004_tvorba_pre'), |
|||
('personalni', '0014_tvorba_pre'), |
|||
# Polymorphic: |
|||
('contenttypes', '0002_remove_content_type_name'), |
|||
# Taggit |
|||
('taggit', '0006_rename_taggeditem_content_type_object_id_taggit_tagg_content_8fc721_idx'), |
|||
] |
|||
|
|||
operations = [ |
|||
] |
@ -0,0 +1,59 @@ |
|||
# Generated by Django 4.2.16 on 2024-10-30 11:19 |
|||
|
|||
from django.db import migrations, models |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('seminar', '0136_tvorba_pre'), |
|||
] |
|||
|
|||
operations = [ |
|||
migrations.CreateModel( |
|||
name='Problemy_Opravovatele', |
|||
fields=[ |
|||
('id', models.AutoField(primary_key=True, serialize=False)), |
|||
], |
|||
options={ |
|||
'db_table': 'seminar_problemy_opravovatele', |
|||
'managed': False, |
|||
}, |
|||
), |
|||
migrations.AlterModelOptions( |
|||
name='cislo', |
|||
options={'managed': False, 'ordering': ['-rocnik__rocnik', '-poradi'], 'verbose_name': 'Číslo', 'verbose_name_plural': 'Čísla'}, |
|||
), |
|||
migrations.AlterModelOptions( |
|||
name='clanek', |
|||
options={'managed': False, 'verbose_name': 'Článek', 'verbose_name_plural': 'Články'}, |
|||
), |
|||
migrations.AlterModelOptions( |
|||
name='deadline', |
|||
options={'managed': False, 'ordering': ['deadline'], 'verbose_name': 'Deadline', 'verbose_name_plural': 'Deadliny'}, |
|||
), |
|||
migrations.AlterModelOptions( |
|||
name='pohadka', |
|||
options={'managed': False, 'ordering': ['vytvoreno'], 'verbose_name': 'Pohádka', 'verbose_name_plural': 'Pohádky'}, |
|||
), |
|||
migrations.AlterModelOptions( |
|||
name='problem', |
|||
options={'managed': False, 'ordering': ['nazev'], 'verbose_name': 'Problém', 'verbose_name_plural': 'Problémy'}, |
|||
), |
|||
migrations.AlterModelOptions( |
|||
name='rocnik', |
|||
options={'managed': False, 'ordering': ['-rocnik'], 'verbose_name': 'Ročník', 'verbose_name_plural': 'Ročníky'}, |
|||
), |
|||
migrations.AlterModelOptions( |
|||
name='tema', |
|||
options={'managed': False, 'verbose_name': 'Téma', 'verbose_name_plural': 'Témata'}, |
|||
), |
|||
migrations.AlterModelOptions( |
|||
name='uloha', |
|||
options={'managed': False, 'verbose_name': 'Úloha', 'verbose_name_plural': 'Úlohy'}, |
|||
), |
|||
migrations.AlterModelOptions( |
|||
name='zmrazenavysledkovka', |
|||
options={'managed': False, 'verbose_name': 'Zmražená výsledkovka', 'verbose_name_plural': 'Zmražené výsledkovky'}, |
|||
), |
|||
] |
@ -0,0 +1,150 @@ |
|||
# Generated by Django 4.2.16 on 2024-10-30 14:03 |
|||
|
|||
from django.db import migrations, models |
|||
import django.db.models.deletion |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('tvorba', '0001_tvorba_create'), |
|||
('seminar', '0137_tvorba_unmanage'), |
|||
('odevzdavatko', '0005_tvorba_relink'), |
|||
('soustredeni', '0009_tvorba_relink5'), |
|||
('various', '0005_tvorba_relink'), |
|||
] |
|||
|
|||
operations = [ |
|||
migrations.RemoveField( |
|||
model_name='cislo', |
|||
name='rocnik', |
|||
), |
|||
migrations.RemoveField( |
|||
model_name='clanek', |
|||
name='cislo', |
|||
), |
|||
migrations.RemoveField( |
|||
model_name='clanek', |
|||
name='problem_ptr', |
|||
), |
|||
migrations.RemoveField( |
|||
model_name='deadline', |
|||
name='cislo', |
|||
), |
|||
migrations.RemoveField( |
|||
model_name='pohadka', |
|||
name='autor', |
|||
), |
|||
migrations.RemoveField( |
|||
model_name='problem', |
|||
name='autor', |
|||
), |
|||
migrations.RemoveField( |
|||
model_name='problem', |
|||
name='garant', |
|||
), |
|||
migrations.RemoveField( |
|||
model_name='problem', |
|||
name='nadproblem', |
|||
), |
|||
migrations.RemoveField( |
|||
model_name='problem', |
|||
name='opravovatele', |
|||
), |
|||
migrations.RemoveField( |
|||
model_name='problem', |
|||
name='polymorphic_ctype', |
|||
), |
|||
migrations.RemoveField( |
|||
model_name='problem', |
|||
name='zamereni', |
|||
), |
|||
migrations.DeleteModel( |
|||
name='Problemy_Opravovatele', |
|||
), |
|||
migrations.RemoveField( |
|||
model_name='tema', |
|||
name='problem_ptr', |
|||
), |
|||
migrations.RemoveField( |
|||
model_name='tema', |
|||
name='rocnik', |
|||
), |
|||
migrations.RemoveField( |
|||
model_name='uloha', |
|||
name='cislo_deadline', |
|||
), |
|||
migrations.RemoveField( |
|||
model_name='uloha', |
|||
name='cislo_reseni', |
|||
), |
|||
migrations.RemoveField( |
|||
model_name='uloha', |
|||
name='cislo_zadani', |
|||
), |
|||
migrations.RemoveField( |
|||
model_name='uloha', |
|||
name='problem_ptr', |
|||
), |
|||
migrations.RemoveField( |
|||
model_name='zmrazenavysledkovka', |
|||
name='deadline', |
|||
), |
|||
migrations.AlterField( |
|||
model_name='cislonode', |
|||
name='cislo', |
|||
field=models.OneToOneField(on_delete=django.db.models.deletion.PROTECT, to='tvorba.cislo', verbose_name='číslo'), |
|||
), |
|||
migrations.AlterField( |
|||
model_name='pohadkanode', |
|||
name='pohadka', |
|||
field=models.OneToOneField(on_delete=django.db.models.deletion.PROTECT, to='tvorba.pohadka', verbose_name='pohádka'), |
|||
), |
|||
migrations.AlterField( |
|||
model_name='rocniknode', |
|||
name='rocnik', |
|||
field=models.OneToOneField(on_delete=django.db.models.deletion.PROTECT, to='tvorba.rocnik', verbose_name='ročník'), |
|||
), |
|||
migrations.AlterField( |
|||
model_name='temavcislenode', |
|||
name='tema', |
|||
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='tvorba.tema', verbose_name='téma v čísle'), |
|||
), |
|||
migrations.AlterField( |
|||
model_name='ulohavzoraknode', |
|||
name='uloha', |
|||
field=models.OneToOneField(null=True, on_delete=django.db.models.deletion.PROTECT, to='tvorba.uloha', verbose_name='úloha'), |
|||
), |
|||
migrations.AlterField( |
|||
model_name='ulohazadaninode', |
|||
name='uloha', |
|||
field=models.OneToOneField(null=True, on_delete=django.db.models.deletion.PROTECT, to='tvorba.uloha', verbose_name='úloha'), |
|||
), |
|||
migrations.DeleteModel( |
|||
name='Cislo', |
|||
), |
|||
migrations.DeleteModel( |
|||
name='Clanek', |
|||
), |
|||
migrations.DeleteModel( |
|||
name='Deadline', |
|||
), |
|||
migrations.DeleteModel( |
|||
name='Pohadka', |
|||
), |
|||
migrations.DeleteModel( |
|||
name='Problem', |
|||
), |
|||
migrations.DeleteModel( |
|||
name='Rocnik', |
|||
), |
|||
migrations.DeleteModel( |
|||
name='Tema', |
|||
), |
|||
migrations.DeleteModel( |
|||
name='Uloha', |
|||
), |
|||
migrations.DeleteModel( |
|||
name='ZmrazenaVysledkovka', |
|||
), |
|||
] |
@ -0,0 +1,14 @@ |
|||
# Generated by Django 4.2.16 on 2024-10-30 21:35 |
|||
|
|||
from django.db import migrations |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('seminar', '0138_tvorba_delete'), |
|||
('tvorba', '0003_tvorba_post'), |
|||
] |
|||
|
|||
operations = [ |
|||
] |
@ -0,0 +1,17 @@ |
|||
# Generated by Django 4.2.16 on 2024-11-02 19:45 |
|||
|
|||
from django.db import migrations |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('seminar', '0139_tvorba_post'), |
|||
('odevzdavatko', '0007_odstrel_treenode_pre'), |
|||
('personalni', '0016_odstrel_treenode_pre'), |
|||
('tvorba', '0004_odstrel_treenode_pre'), |
|||
('contenttypes', '0002_remove_content_type_name'), |
|||
] |
|||
|
|||
operations = [ |
|||
] |
@ -0,0 +1,69 @@ |
|||
# Generated by Django 4.2.16 on 2024-11-02 19:56 |
|||
|
|||
from django.db import migrations |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('seminar', '0140_odstrel_treenode_pre'), |
|||
] |
|||
|
|||
operations = [ |
|||
migrations.AlterModelOptions( |
|||
name='castnode', |
|||
options={'managed': False, 'verbose_name': 'Část (Node)', 'verbose_name_plural': 'Části (Node)'}, |
|||
), |
|||
migrations.AlterModelOptions( |
|||
name='cislonode', |
|||
options={'managed': False, 'verbose_name': 'Číslo (Node)', 'verbose_name_plural': 'Čísla (Node)'}, |
|||
), |
|||
migrations.AlterModelOptions( |
|||
name='mezicislonode', |
|||
options={'managed': False, 'verbose_name': 'Mezičíslo (Node)', 'verbose_name_plural': 'Mezičísla (Node)'}, |
|||
), |
|||
migrations.AlterModelOptions( |
|||
name='obrazek', |
|||
options={'managed': False, 'verbose_name': 'obrázek', 'verbose_name_plural': 'obrázky'}, |
|||
), |
|||
migrations.AlterModelOptions( |
|||
name='orgtextnode', |
|||
options={'managed': False, 'verbose_name': 'Organizátorský článek (Node)', 'verbose_name_plural': 'Organizátorské články (Node)'}, |
|||
), |
|||
migrations.AlterModelOptions( |
|||
name='pohadkanode', |
|||
options={'managed': False, 'verbose_name': 'Pohádka (Node)', 'verbose_name_plural': 'Pohádky (Node)'}, |
|||
), |
|||
migrations.AlterModelOptions( |
|||
name='reseninode', |
|||
options={'managed': False, 'verbose_name': 'Otištěné řešení (Node)', 'verbose_name_plural': 'Otištěná řešení (Node)'}, |
|||
), |
|||
migrations.AlterModelOptions( |
|||
name='rocniknode', |
|||
options={'managed': False, 'verbose_name': 'Ročník (Node)', 'verbose_name_plural': 'Ročníky (Node)'}, |
|||
), |
|||
migrations.AlterModelOptions( |
|||
name='temavcislenode', |
|||
options={'managed': False, 'verbose_name': 'Téma v čísle (Node)', 'verbose_name_plural': 'Témata v čísle (Node)'}, |
|||
), |
|||
migrations.AlterModelOptions( |
|||
name='text', |
|||
options={'managed': False, 'verbose_name': 'text', 'verbose_name_plural': 'texty'}, |
|||
), |
|||
migrations.AlterModelOptions( |
|||
name='textnode', |
|||
options={'managed': False, 'verbose_name': 'Text (Node)', 'verbose_name_plural': 'Text (Node)'}, |
|||
), |
|||
migrations.AlterModelOptions( |
|||
name='treenode', |
|||
options={'managed': False, 'verbose_name': 'TreeNode', 'verbose_name_plural': 'TreeNody'}, |
|||
), |
|||
migrations.AlterModelOptions( |
|||
name='ulohavzoraknode', |
|||
options={'managed': False, 'verbose_name': 'Vzorák úlohy (Node)', 'verbose_name_plural': 'Vzoráky úloh (Node)'}, |
|||
), |
|||
migrations.AlterModelOptions( |
|||
name='ulohazadaninode', |
|||
options={'managed': False, 'verbose_name': 'Zadání úlohy (Node)', 'verbose_name_plural': 'Zadání úloh (Node)'}, |
|||
), |
|||
] |
@ -0,0 +1,153 @@ |
|||
# Generated by Django 4.2.16 on 2024-11-02 20:47 |
|||
|
|||
from django.db import migrations |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('seminar', '0141_odstrel_treenode_unmanage'), |
|||
('odevzdavatko', '0008_odstrel_treenode_relink'), |
|||
('treenode', '0001_odstrel_treenode_create'), |
|||
] |
|||
|
|||
operations = [ |
|||
migrations.RemoveField( |
|||
model_name='cislonode', |
|||
name='cislo', |
|||
), |
|||
migrations.RemoveField( |
|||
model_name='cislonode', |
|||
name='treenode_ptr', |
|||
), |
|||
migrations.RemoveField( |
|||
model_name='mezicislonode', |
|||
name='treenode_ptr', |
|||
), |
|||
migrations.RemoveField( |
|||
model_name='obrazek', |
|||
name='text', |
|||
), |
|||
migrations.RemoveField( |
|||
model_name='orgtextnode', |
|||
name='organizator', |
|||
), |
|||
migrations.RemoveField( |
|||
model_name='orgtextnode', |
|||
name='treenode_ptr', |
|||
), |
|||
migrations.RemoveField( |
|||
model_name='pohadkanode', |
|||
name='pohadka', |
|||
), |
|||
migrations.RemoveField( |
|||
model_name='pohadkanode', |
|||
name='treenode_ptr', |
|||
), |
|||
migrations.RemoveField( |
|||
model_name='reseninode', |
|||
name='reseni', |
|||
), |
|||
migrations.RemoveField( |
|||
model_name='reseninode', |
|||
name='treenode_ptr', |
|||
), |
|||
migrations.RemoveField( |
|||
model_name='rocniknode', |
|||
name='rocnik', |
|||
), |
|||
migrations.RemoveField( |
|||
model_name='rocniknode', |
|||
name='treenode_ptr', |
|||
), |
|||
migrations.RemoveField( |
|||
model_name='temavcislenode', |
|||
name='tema', |
|||
), |
|||
migrations.RemoveField( |
|||
model_name='temavcislenode', |
|||
name='treenode_ptr', |
|||
), |
|||
migrations.RemoveField( |
|||
model_name='textnode', |
|||
name='text', |
|||
), |
|||
migrations.RemoveField( |
|||
model_name='textnode', |
|||
name='treenode_ptr', |
|||
), |
|||
migrations.RemoveField( |
|||
model_name='treenode', |
|||
name='first_child', |
|||
), |
|||
migrations.RemoveField( |
|||
model_name='treenode', |
|||
name='polymorphic_ctype', |
|||
), |
|||
migrations.RemoveField( |
|||
model_name='treenode', |
|||
name='root', |
|||
), |
|||
migrations.RemoveField( |
|||
model_name='treenode', |
|||
name='succ', |
|||
), |
|||
migrations.RemoveField( |
|||
model_name='ulohavzoraknode', |
|||
name='treenode_ptr', |
|||
), |
|||
migrations.RemoveField( |
|||
model_name='ulohavzoraknode', |
|||
name='uloha', |
|||
), |
|||
migrations.RemoveField( |
|||
model_name='ulohazadaninode', |
|||
name='treenode_ptr', |
|||
), |
|||
migrations.RemoveField( |
|||
model_name='ulohazadaninode', |
|||
name='uloha', |
|||
), |
|||
migrations.DeleteModel( |
|||
name='CastNode', |
|||
), |
|||
migrations.DeleteModel( |
|||
name='CisloNode', |
|||
), |
|||
migrations.DeleteModel( |
|||
name='MezicisloNode', |
|||
), |
|||
migrations.DeleteModel( |
|||
name='Obrazek', |
|||
), |
|||
migrations.DeleteModel( |
|||
name='OrgTextNode', |
|||
), |
|||
migrations.DeleteModel( |
|||
name='PohadkaNode', |
|||
), |
|||
migrations.DeleteModel( |
|||
name='ReseniNode', |
|||
), |
|||
migrations.DeleteModel( |
|||
name='RocnikNode', |
|||
), |
|||
migrations.DeleteModel( |
|||
name='TemaVCisleNode', |
|||
), |
|||
migrations.DeleteModel( |
|||
name='Text', |
|||
), |
|||
migrations.DeleteModel( |
|||
name='TextNode', |
|||
), |
|||
migrations.DeleteModel( |
|||
name='TreeNode', |
|||
), |
|||
migrations.DeleteModel( |
|||
name='UlohaVzorakNode', |
|||
), |
|||
migrations.DeleteModel( |
|||
name='UlohaZadaniNode', |
|||
), |
|||
] |
@ -0,0 +1,14 @@ |
|||
# Generated by Django 4.2.16 on 2024-11-02 20:52 |
|||
|
|||
from django.db import migrations |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('seminar', '0142_odstrel_treenode_delete'), |
|||
('treenode', '0003_odstrel_treenode_post'), |
|||
] |
|||
|
|||
operations = [ |
|||
] |
@ -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 = [ |
|||
] |
@ -0,0 +1,15 @@ |
|||
# Tento soubor slouží pouze pro shell a podobné. Nikde neimportovat v kódu! |
|||
|
|||
print("Naimportoval jsi `seminar.models`. Pevně věřím, že to nebylo nikde v kódu. Díky.") |
|||
|
|||
from galerie.models import * |
|||
from header_fotky.models import * |
|||
from korektury.models import * |
|||
from novinky.models import * |
|||
from odevzdavatko.models import * |
|||
from personalni.models import * |
|||
from prednasky.models import * |
|||
from soustredeni.models import * |
|||
from treenode.models import * |
|||
from tvorba.models import * |
|||
from various.models import * |
@ -1,13 +0,0 @@ |
|||
from .tvorba import * |
|||
from .odevzdavatko import * |
|||
from .base import * |
|||
from .pomocne import * |
|||
from .treenode import * |
|||
|
|||
from various.models import Nastaveni |
|||
from personalni.models import Organizator, Resitel, Skola, Prijemce, Osoba |
|||
from soustredeni.models import Soustredeni, Soustredeni_Ucastnici, Soustredeni_Organizatori, Konfera, Konfery_Ucastnici |
|||
from novinky.models import Novinky |
|||
|
|||
# Kvůli migr. 0041 |
|||
from soustredeni.models import generate_filename_konfera |
@ -1,22 +0,0 @@ |
|||
from django.urls import reverse |
|||
from django.db import models |
|||
|
|||
|
|||
class SeminarModelBase(models.Model): |
|||
|
|||
class Meta: |
|||
abstract = True |
|||
|
|||
def verejne(self): |
|||
return False |
|||
|
|||
# def get_absolute_url(self): |
|||
# return "https://" + str(get_current_site(None)) + self.verejne_url() |
|||
|
|||
def admin_url(self): |
|||
model_name = self.__class__.__name__.lower() |
|||
return reverse('admin:seminar_{}_change'.format(model_name), args=(self.id, )) |
|||
|
|||
# def verejne_url(self): |
|||
# return None |
|||
|
@ -1,69 +0,0 @@ |
|||
import logging |
|||
import os |
|||
from django.db import models |
|||
|
|||
from .base import SeminarModelBase |
|||
|
|||
logger = logging.getLogger(__name__) |
|||
|
|||
|
|||
class Text(SeminarModelBase): |
|||
class Meta: |
|||
db_table = 'seminar_texty' |
|||
verbose_name = 'text' |
|||
verbose_name_plural = 'texty' |
|||
|
|||
na_web = models.TextField( |
|||
'text na web', blank=True, |
|||
help_text='Text ke zveřejnění na webu') |
|||
|
|||
do_cisla = models.TextField( |
|||
'text do čísla', blank=True, |
|||
help_text='Text ke zveřejnění v čísle') |
|||
|
|||
# má OneToOneField s: |
|||
# Reseni (je u něj jako reseni_cele) |
|||
|
|||
# obrázky mají návaznost opačným směrem (vazba z druhé strany) |
|||
|
|||
def save(self, *args, **kwargs): |
|||
super().save(*args, **kwargs) |
|||
# *Node.save() aktualizuje název *Nodu. |
|||
for tn in self.textnode_set.all(): |
|||
tn.save() |
|||
|
|||
def __str__(self): |
|||
return str(self.na_web)[:20] |
|||
|
|||
|
|||
class Obrazek(SeminarModelBase): |
|||
class Meta: |
|||
db_table = 'seminar_obrazky' |
|||
verbose_name = 'obrázek' |
|||
verbose_name_plural = 'obrázky' |
|||
|
|||
# Interní ID |
|||
id = models.AutoField(primary_key=True) |
|||
|
|||
na_web = models.ImageField( |
|||
'obrázek na web', upload_to='obrazky/%Y/%m/%d/', |
|||
null=True, blank=True) |
|||
|
|||
text = models.ForeignKey( |
|||
Text, verbose_name='text', |
|||
help_text='text, ve kterém se obrázek vyskytuje', |
|||
null=False, blank=False, on_delete=models.CASCADE) |
|||
|
|||
do_cisla_barevny = models.FileField( |
|||
'barevný obrázek do čísla', |
|||
help_text='Barevná verze obrázku do čísla', |
|||
upload_to='obrazky/%Y/%m/%d/', blank=True, null=True) |
|||
|
|||
do_cisla_cernobily = models.FileField( |
|||
'černobílý obrázek do čísla', |
|||
help_text='Černobílá verze obrázku do čísla', |
|||
upload_to='obrazky/%Y/%m/%d/', blank=True, null=True) |
|||
|
|||
# TODO placement hint - chci ho tady / pred textem / za textem |
|||
|
|||
|
@ -0,0 +1,13 @@ |
|||
# Generated by Django 4.2.16 on 2024-10-30 01:07 |
|||
|
|||
from django.db import migrations |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('soustredeni', '0003_post_split_soustredeni'), |
|||
] |
|||
|
|||
operations = [ |
|||
] |
@ -0,0 +1,28 @@ |
|||
# Generated by Django 4.2.16 on 2024-10-30 13:18 |
|||
|
|||
from django.db import migrations, models |
|||
import django.db.models.deletion |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('tvorba', '0001_tvorba_create'), |
|||
('soustredeni', '0004_tvorba_pre'), |
|||
] |
|||
|
|||
operations = [ |
|||
## Konferu zmigrujeme jinak, kvůli <https://code.djangoproject.com/ticket/23521> jí nejde přepsat někde ve stavu `bases`. |
|||
## Proto si ji unmanagujeme a vyrobíme celou znovu, to by nemělo vadit (zvlášť když t.č. v DB žádná instance Konfery není). |
|||
## (Šlo by `SeparateStateAndData`, což v principu děláme taky ale ty migrace jsou lehce čitelnější a o poznání konzistentnější.) |
|||
#migrations.AlterField( |
|||
# model_name='konfera', |
|||
# name='problem_ptr', |
|||
# field=models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='tvorba.problem'), |
|||
#), |
|||
migrations.AlterField( |
|||
model_name='soustredeni', |
|||
name='rocnik', |
|||
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='soustredeni', to='tvorba.rocnik', verbose_name='ročník'), |
|||
), |
|||
] |
@ -0,0 +1,17 @@ |
|||
# Generated by Django 4.2.16 on 2024-10-30 19:37 |
|||
|
|||
from django.db import migrations |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('soustredeni', '0005_tvorba_relink'), |
|||
] |
|||
|
|||
operations = [ |
|||
migrations.AlterModelOptions( |
|||
name='konfera', |
|||
options={'managed': False, 'verbose_name': 'Konfera', 'verbose_name_plural': 'Konfery'}, |
|||
), |
|||
] |
@ -0,0 +1,15 @@ |
|||
# Generated by Django 4.2.16 on 2024-10-30 19:38 |
|||
|
|||
from django.db import migrations |
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('soustredeni', '0006_tvorba_relink2'), |
|||
] |
|||
|
|||
operations = [ |
|||
migrations.DeleteModel( |
|||
name='Konfera', |
|||
), |
|||
] |
@ -0,0 +1,34 @@ |
|||
# Generated by Django 4.2.16 on 2024-10-30 19:45 |
|||
|
|||
from django.db import migrations,models |
|||
import django.db.models.deletion |
|||
import soustredeni.models |
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('soustredeni', '0007_tvorba_relink3'), |
|||
] |
|||
|
|||
operations = [ |
|||
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='tvorba.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=('tvorba.problem',), |
|||
), |
|||
] |
@ -0,0 +1,17 @@ |
|||
# Generated by Django 4.2.16 on 2024-10-30 20:03 |
|||
|
|||
from django.db import migrations |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('soustredeni', '0008_tvorba_relink4'), |
|||
] |
|||
|
|||
operations = [ |
|||
migrations.AlterModelOptions( |
|||
name='konfera', |
|||
options={'verbose_name': 'Konfera', 'verbose_name_plural': 'Konfery'}, |
|||
), |
|||
] |
@ -0,0 +1,14 @@ |
|||
# Generated by Django 4.2.16 on 2024-10-30 21:35 |
|||
|
|||
from django.db import migrations |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('soustredeni', '0009_tvorba_relink5'), |
|||
('tvorba', '0003_tvorba_post'), |
|||
] |
|||
|
|||
operations = [ |
|||
] |
Some files were not shown because too many files changed in this diff
Loading…
Reference in new issue