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, |
Zde bývalo vše. Teď tu zbývají migrace. |
||||
přehled orgů, aktuální (k aktuálnímu číslu) věci, titulka a jak řešit. |
A kód pro `import seminar.models as m` pro ./manage.py shell. |
||||
|
""" |
||||
Také je tu generování testovacích (lokálních) dat. |
|
||||
""" |
|
||||
|
@ -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