diff --git a/Makefile b/Makefile index 49a888dc..1364572f 100644 --- a/Makefile +++ b/Makefile @@ -102,10 +102,10 @@ deploy_prod: venv_check sync_prod_flatpages: venv_check @echo Downloading current version of flatpages from mamweb-prod. ssh mam-web@gimli.ms.mff.cuni.cz \ - "cd /akce/mam/www/mamweb-prod; . env/bin/activate; ./manage.py dumpdata flatpages --indent=2 > flat.json" - rsync -ave ssh mam-web@gimli.ms.mff.cuni.cz:/akce/mam/www/mamweb-prod/flat.json ./flat.json + "cd /akce/mam/www/mamweb-prod; . env/bin/activate; ./manage.py dumpdata flatpages --indent=2 > flat.json; ./fix_json.py flat.json flat_fixed.json" + rsync -ave ssh mam-web@gimli.ms.mff.cuni.cz:/akce/mam/www/mamweb-prod/flat_fixed.json data/flat.json @echo "Applying downloaded flatpages." - ./manage.py loaddata flat.json + ./manage.py loaddata data/flat.json @echo "Done." # Sync test media directory with production @@ -114,24 +114,16 @@ sync_test_media: @if [ `readlink -f .` != "/aux/akce/mam/www/mamweb-test" ]; then echo "Only possible in /akce/mam/www/mamweb-test"; exit 1; fi rsync -av --delete /akce/mam/www/mamweb-prod/media/ ./media -# Sync test database with production database -sync_test_db: - @if [ ${USER} != "mam-web" ]; then echo "Only possible by user mam-web"; exit 1; fi - pg_dump mam_test > dump-test-`date +"%Y%m%d_%H%M"`.sql - pg_dump -Fc mam_prod > dump-prod.sql - pg_restore -c --if-exists -d mam_test dump-prod.sql - rm dump-prod.sql - @echo Done. - -# Aggresive variant: destroy original mam_test db with 'DROP OWNED BY "mam-web";' +# Sync (with drop) test database with production database sync_test_db_aggressive: @if [ ${USER} != "mam-web" ]; then echo "Only possible by user mam-web"; exit 1; fi pg_dump mam_test > dump-test-`date +"%Y%m%d_%H%M"`.sql pg_dump -Fc mam_prod > dump-prod.sql @# I am not sure which shell is used, so I am calling bash to make sure - bash -c "psql mam_test <<< 'DROP OWNED BY \"mam-web\";'" + psql mam_test -c 'DROP OWNED BY "mam-web";' pg_restore -c --if-exists -d mam_test dump-prod.sql rm dump-prod.sql + psql mam_test -c "UPDATE django_site SET name='MaMweb (test)', domain='mam-test.ks.matfyz.cz' WHERE id=1" @echo Done. # Sync test with production diff --git a/checklinks.sh b/checklinks.sh index 71b218f2..6102a6db 100755 --- a/checklinks.sh +++ b/checklinks.sh @@ -15,4 +15,4 @@ cd "$tmp" wget --spider -o "$logfile" -r -p -X '/soustredeni/*/fotogalerie/' "$@" || true # wget nejspíš skončí s chybou, že něco nestáhl… echo "Result: (a last few lines of the file $logfile)" -sed -ne '/^Found [0-9]* broken links/,$ p' "$logfile" +sed -ne '/^Found [0-9]* broken link/,$ p' "$logfile" diff --git a/data/flat.json b/data/flat.json index 3dcdc342..105c1876 100644 --- a/data/flat.json +++ b/data/flat.json @@ -91,7 +91,7 @@ }, { "fields": { - "content": "

Podzimní soustředění

\r\n\r\n

se uskuteční 16. - 24. října 2021.

", + "content": "

Jarní soustředění

\r\n\r\n

se uskuteční 2. – 10. dubna 2022.

", "enable_comments": false, "registration_required": false, "sites": [ @@ -136,7 +136,7 @@ }, { "fields": { - "content": "

Zážitkové akce

\r\n\r\n
Letní a Zimní Škola Matematiky a Fyziky
\r\n\r\n

ŠMFko je zážitková akce určená středoškolákům se zájmem o další sebevzdělání. Krom populárně naučných přednášek se na ŠMFku proběhneš venku, vyřádíš se ve sněhu, užiješ si veselý vnitřní program a taky se pobavíš během společného šarádění, lenošení nebo hraní na kytaru.

\r\n\r\n
InterSoB
\r\n\r\n

InterSoB je zábavná a poučná jednodenní soutěž středoškolských studentů, při které máte možnost podívat se netradičním způsobem do zákulisí Masarykovy univerzity, vyzkoušet si své schopnosti v mnoha různých oblastech, udělat si s kamarády zajímavý výlet po Brně a v neposlední řadě také poměřit svoje síly s dalšími týmy.

\r\n\r\n

Další semináře

\r\n\r\n
Korespondenční Seminář z Programování
\r\n\r\n

KSP je seminář určený pro studenty středních a základních škol, kteří mají zájem naučit se něco z oblasti algoritmů, logických úloh, programování a informatiky vůbec. Na své si však přijdou i příznivci matematiky (a vlastně libovolného přemýšlení), ježto oba obory mají mnoho společného.

\r\n\r\n
FYzikální KOrespondenční Seminář
\r\n\r\n

FYKOS pro vás představuje možnost si zajímavým způsobem rozšířit chápání fyziky a proniknout do dalších, dosud nepoznaných, oblastí této vědy. Cílem FYKOSu je rozvíjet fyzikální myšlení, protože člověk, který se umí nad (nejen fyzikálními) problémy zamyslet a cítí touhu dobrat se k nějakému řešení, se uplatní všude, kde si schopností lidského mozku cení.

\r\n\r\n
Matematický korespondenční seminář PraSe (PRAžský SEminář)
\r\n\r\n

Řešením úloh tohoto semináře získáš mnoho matematických znalostí a naučíš přesněji a srozumitelněji formulovat své myšlenky a závěry. Seminář je dobrou přípravou pro účast v nejrůznějších matematických soutěžích i pro další studium matematiky, ale schopnost logického myšlení, kterou si můžeš procvičit, se ti v životě bude hodit, i když se v něm třeba právě matematice věnovat nehodláš.

\r\n\r\n

Pro mladší sourozence

\r\n\r\n
Pikomat
\r\n\r\n

Pikomat je matematický korespondenční seminář určený žákům šestých až devátých tříd základních škol a studentům odpovídajících ročníků víceletých gymnázií. Spočívá v řešení několika úloh propojených příběhem. Na jaře se koná soustředění pro nejlepší řešitele, v létě pak tábor pro všechny zájemce.

\r\n\r\n
Výfuk (VÝpočty Fyzikálních UKolů)
\r\n\r\n

Výfuk je samostatný korespondenční seminář Matfyzu, který spadá pod Katedru didaktiky fyziky. Během školního roku kromě šesti sérií semináře organizátoři připravují i podzimní a jarní setkání, letní tábor a Náboj junior.

\r\n\r\n

Databáze mimoškolních aktivit

\r\n\r\n

Je-li ti výčet aktivit výše málo nebo tě žádná z nich nezaujala, doporučujeme navštívit web organizace ProStředoškoláky, jež zde připravila rozsáhlou databázi mimoškolních aktivit a akcí. Krom toho organizace pořádá soutěž Středoškolák roku, ve které každý rok oceňuje nejaktivnější středoškoláky. Věnuješ-li se tedy mimoškolně něčemu ve větším měřítku, neváhej se do soutěže přihlásit.

", + "content": "

Zážitkové akce

\r\n\r\n
Letní a Zimní Škola Matematiky a Fyziky
\r\n\r\n

ŠMFko je zážitková akce určená středoškolákům se zájmem o další sebevzdělání. Krom populárně naučných přednášek se na ŠMFku proběhneš venku, vyřádíš se ve sněhu, užiješ si veselý vnitřní program a taky se pobavíš během společného šarádění, lenošení nebo hraní na kytaru.

\r\n\r\n
InterSoB
\r\n\r\n

InterSoB je zábavná a poučná jednodenní soutěž středoškolských studentů, při které máte možnost podívat se netradičním způsobem do zákulisí Masarykovy univerzity, vyzkoušet si své schopnosti v mnoha různých oblastech, udělat si s kamarády zajímavý výlet po Brně a v neposlední řadě také poměřit svoje síly s dalšími týmy.

\r\n\r\n

Další semináře

\r\n\r\n
Korespondenční Seminář z Programování
\r\n\r\n

KSP je seminář určený pro studenty středních a základních škol, kteří mají zájem naučit se něco z oblasti algoritmů, logických úloh, programování a informatiky vůbec. Na své si však přijdou i příznivci matematiky (a vlastně libovolného přemýšlení), ježto oba obory mají mnoho společného.

\r\n\r\n
FYzikální KOrespondenční Seminář
\r\n\r\n

FYKOS pro vás představuje možnost si zajímavým způsobem rozšířit chápání fyziky a proniknout do dalších, dosud nepoznaných, oblastí této vědy. Cílem FYKOSu je rozvíjet fyzikální myšlení, protože člověk, který se umí nad (nejen fyzikálními) problémy zamyslet a cítí touhu dobrat se k nějakému řešení, se uplatní všude, kde si schopností lidského mozku cení.

\r\n\r\n\r\n
Matematický korespondenční seminář PraSe (PRAžský SEminář)
\r\n\r\n

Řešením úloh tohoto semináře získáš mnoho matematických znalostí a naučíš přesněji a srozumitelněji formulovat své myšlenky a závěry. Seminář je dobrou přípravou pro účast v nejrůznějších matematických soutěžích i pro další studium matematiky, ale schopnost logického myšlení, kterou si můžeš procvičit, se ti v životě bude hodit, i když se v něm třeba právě matematice věnovat nehodláš.

\r\n\r\n

Pro mladší sourozence

\r\n\r\n\r\n
Pikomat
\r\n\r\n

Pikomat je matematický korespondenční seminář určený žákům šestých až devátých tříd základních škol a studentům odpovídajících ročníků víceletých gymnázií. Spočívá v řešení několika úloh propojených příběhem. Na jaře se koná soustředění pro nejlepší řešitele, v létě pak tábor pro všechny zájemce.

\r\n\r\n\r\n
Výfuk (VÝpočty Fyzikálních UKolů)
\r\n\r\n

Výfuk je samostatný korespondenční seminář Matfyzu, který spadá pod Katedru didaktiky fyziky. Během školního roku kromě šesti sérií semináře organizátoři připravují i podzimní a jarní setkání, letní tábor a Náboj junior.

\r\n\r\n

Databáze mimoškolních aktivit

\r\n\r\n

Je-li ti výčet aktivit výše málo nebo tě žádná z nich nezaujala, doporučujeme navštívit web organizace ProStředoškoláky, jež zde připravila rozsáhlou databázi mimoškolních aktivit a akcí. Krom toho organizace pořádá soutěž Středoškolák roku, ve které každý rok oceňuje nejaktivnější středoškoláky. Věnuješ-li se tedy mimoškolně něčemu ve větším měřítku, neváhej se do soutěže přihlásit.

", "enable_comments": false, "registration_required": false, "sites": [ @@ -178,5 +178,20 @@ }, "model": "flatpages.flatpage", "pk": 29 + }, + { + "fields": { + "content": "
\r\n

Nápověda ke korekturovátku

\r\n\r\n

Korekturovátko slouží k přidávání korektur do PDF souborů. Umožňuje přidávat a komentovat korektury a označovat je jako k zanesení, zanesené nebo irelevantní. Rovněž umožňuje o PDF říci, že jsou právě zanášeny korektury nebo že je zastaralé.

\r\n\r\n

Použití

\r\n\r\n

Kliknu do PDF tam, kam chci zadat korekturu, napíši text a kliknu na Oprav! (nebo Ctrl-Enter). Korektura se zobrazí na pravé straně červeně. Pokud chci korekturu okomentovat, kliknu na ikonu , napíši komentář a kliknu na Oprav! (nebo Ctrl-Enter). Komentář se zobrazí pod původní korekturou.

\r\n\r\n

Tlačítka u korektury

\r\n\r\n\r\n\r\n

Stavy

\r\n\r\n

Korektura

\r\n\r\n\r\n\r\n

PDF

\r\n\r\n\r\n
", + "enable_comments": false, + "registration_required": false, + "sites": [ + 1 + ], + "template_name": "", + "title": "Nápověda ke korekturovátku", + "url": "/korektury/help/" + }, + "model": "flatpages.flatpage", + "pk": 30 } ] diff --git a/docs/zapisy/2021-12-06-testovani_dokumentace_codereview.md b/docs/zapisy/2021-12-06-testovani_dokumentace_codereview.md new file mode 100644 index 00000000..224ea529 --- /dev/null +++ b/docs/zapisy/2021-12-06-testovani_dokumentace_codereview.md @@ -0,0 +1,173 @@ +# Postup zkrášlení kódu M&Mího webu + +## Obecně o webu + +- Python, Django, spousta nějakých rozšíření, frontend HTML + CSS + trocha JS +- Velké břímě historie, kterou nejspíš nechceme zahodit + - Změny v M&M někdy dost zamotají potřebný kód (tituly) +- Občas je potřeba dělat opravy rychle + +## Aktuální stav + +- Zběsile zbastlený kód + - „Co je to ‚single responsibility principle‘?“ ☺ +- Dost netriviální množství objektů a jejich vazeb + - Dost možná do velké míry inherentní složitost +- Webaři aktuálně relativně zběhlí v programování (ale je potřeba myslet na to, že to tak být nemusí) +- Webaři stárnou (Jethro, Kristý, Anet) a mizí (Pavel, Káťa), je potřeba web připravit na předání +- Kód je rozdělený mezi orgy a jeden „nerozumí“ tomu, co druhý napsal (musí to vyčíst z kódu, nezná souvislosti, …) + - Noví orgové se aktuálně musí ptát, což je jim nepříjemné a nutí je umět formulovat dotazy + +### Invarianty + +- Není to práce, ale zábava-ish → libovolný proces nesmí být (moc) na obtíž. + - I malé nepohodlí je potřeba vyvážit relativně velkým přínosem + - nebo dostatečně zřejmou vidinou budoucího pohodlí / minimalizace nepohodlí +- Nejsme programátoři, spíš jsme bastlíři kódu (kteří znají rozumnou podmnožinu syntaxe Pythonu) + - Zvlášť noví orgové + - Nechceme cílit na mega-profi kód, je to nedosažitelný cíl + - Nejspíš to do nějaké míry ubastlené bude pořád, ta míra závisí na zkušenosti aktuálních webařů + - Nástroje nás nesmí moc mást. +- Děláme to zadarmo jeden večer v týdnu + - Vývoj jde pomalu, často pomaleji než vývoj knihoven + - → kód se rozbíjí i sám +- Běží to na Gimlim + - Debian (old)stable → nemůžeme používat moc nové featury Pythonu + - Aktuálně Python 3.7.3 +- Webaři jsou náhodně vzniklá skupina lidí. + - Různé nástroje, různé operační systémy + - Nechceme vynucovat konkrétní metody, multiplatformní nástroje asi požadovat můžeme + - Na serveru může běžet cokoliv, co tam jde rozběhnout + - Kód by neměl být moc složitý / matoucí / kompaktní (?) + - případně fakt hodně okomentovaný + +## O co se snažíme + +- Zpřístupnit vývoj novým webařům +- Umožnit chápání i cizího kódu co nejjednodušeji +- Nevzít si s sebou implementační tajemství ~~do hrobu~~ pryč z M&Mka + +```graphviz +digraph "Závislosti věcí" { + ss -> sdil -> doku -> cs; + ss -> cit ->ref -> cs; + ref -> nrt -> tst -> cs; + sdil -> cr -> cs + ss -> nrt; + ss[label="Současný stav",shape=box]; + cit[label="čitelný kód"]; + cs[label="Cílový stav",shape=box]; + ref[label="refactoring"]; + nrt[label="nerozbít to"]; + tst[label="testy"]; + doku[label="dokumentace (vývojářská)"]; + sdil[label="chápání kódu ostatních / stávajícího"]; + cr[label="code review"]; + nrt,sdil,cit[shape=hexagon]; + tst,doku,cr[color=blue]; +} +``` + +## Code review + +Aktuálně: Pavel občas z rozmaru čte diffy; párkrát jsme zkoušeli [programovat v páru](https://mam.mff.cuni.cz/wiki/Web/Tipy/PairProgramming), je to relativně časově náročné. + +- Nevynucovat +- Primární motivace je umožnit nějak vidět změny a případně k nim dávat komentáře, jak stylu „tohle mi není jasné“, tak i „tohle by chtělo přepsat“. +- Chceme hlavně vytvořit příležitost ke čtení cizího kódu a seznamování se s ním (i v zájmu zaučování nových webařů) + +### Názory + +- spíš post-hoc +- Možná code-review toho, co jde na produkci +- Chceme umět komentovat konkrétní řádky kódu + +- Gitea/gitlab? + - Klikátko a barevný řádky a vyhledávání jsou fajn (gitlab, gitea) + - Jethro: je fajn umět skočit na definici + - Kombinace s CI + - Pokud bude gitea v něčem nedostatečná, tak hrozí, že bude potřeba migrovat znovu, což je nepraktické + - Gitlab je asi častější než gitea → je lepší názor si na to zvyknout + +__Závěr:__ Zkusíme to hodit do GitLabu (nejspíš veřejného\*), zavedeme pull-requesty do `master` větve, náhodně se budeme přiřazovat a používat ho nějak intuitivně. + +\*: Ve fakultním neumíme přidávat další uživatele, v KAMím zas možná není CI. + +## Testy + +Aktuálně: pár testů na dohromady řádově 4 funkce, drobný pokus o TDD, jenž narazil na úskalí reálného světa. Lokální spuštění testů trvá relativně dlouho, nejspíš kvůli spoustě migrací. + +- Potřebujeme ověřit, že to funguje a že to _pořád_ funguje + +- CI? Coverage? + +### Názory + +- PyTest je fajn +- Testovat frontend? + - Jethro: při nasazení by se mohly dělat screenshoty celých vybraných stránek přes Selenium (nebo obdobné) a hlásit rozdíly + +__Závěr:__ Backend testujeme PyTestem (`./manage.py test`), u frontendu výhledově zkusíme ty vizuální diffy a pak se uvidí, CI podle webového klikátka na code review. Bylo by dobré mít rozumná testdata, ať se nemusí mockovat moc věcí. + +## Formát kódu + +Aktuálně: Jakýsi coding style zhruba existuje, není popsaný, šíří se lidovou slovesností. + +- Nesmí být striktně vynucovaný +- Musel by být hodně nastavitelný + - Nechceme mít kód plný `#NOQA: WTF42` +- Nejspíš vždycky bude mít false positives (`seminar.utils.roman_numerals`) i false negatives (`seminar.models.tvorba.Cislo.posli_cislo_mailem`) + - Možná dobrý sluha, ale určitě špatný pán (also: špatná zkušenost ☺) +- __Důsledek:__ Hrozí, že těch falešných varování bude moc, čímž to ztratí smysl úplně + - Potenciálně by šlo aplikovat jen lokálně na změny? + +### Názory + +- P: nemyslím si, že zvládneme mít „průhledný kód“ (dostatečně konzistentní kód, aby ho člověk přestal vnímat a spíš viděl myšlenky). + +- P: Kecadla do kódu trochu zavání větším peklem než užitkem (takže black a flake8 jsou ze hry); isort možná dává smysl; je otázka, jestli použít mypy, ale typové značky v kódu spíš chceme (zvlášť u věcí, které nejsou prostě django view – typicky utils.) + - J: Divné (=Pavlovo) groupování importů je spíš matoucí, spíš moc nepomáhalo + +- P (doplněno zpětně): pydocstyle vynucuje PEP-257, který se možná tluče se sphinxem… +- P (též zpětně): Možná by se mohl dát použít pylint, tomu jde aspoň vysvětlit coding style a nerazí tupě PEP-8, ale nastavovat ho je asi větší porod, než jak moc pomůže… + +__Závěr:__ Kecadla na formát spíš nechceme; isort by mohl být fajn, ale bylo by dobré mít rozdělené bloky „náš kód“, „standardní knihovna“ a „Django a další balíčky z PyPA“; u našeho kódu (utils, obecně ne-Django věci) chceme držet záměr (na úrovni dohody) psát signatury funkcí a v případě jejich přítomnosti se nechat varovat při porušení signatury. + +- P (večerní prokrastinace): Bandit vypadá, že hlásí jen strašně obvious věci by default, nepřijde mi jako moc úžasné vylepšení. Do CI možná dobrý + +## Dokumentace + +Aktuálně: něco málo je na wiki (`/Web/`), občas má nějaká funkce docstring, obecně je toho málo + +### Požadavky + +- Jedno autoritativní místo a dá se najít +- Dostatečně „blízko“ kódu + - nastavit mindset na psaní dokumentace „rovnou“? +- Umožnit i obecný text, ne jen komentáře kódu (modulů, funkcí) + + +### Bonusy + +- Zajišťování konzistence s uživatelskou dokumentací + - aktuálně wiki +- Podpora i dalších jazyků (Vue, Javascript, CSS, možná django-templates) + +### Názory + +- Jde to dělat sphinxem + - Stínovlas by mohl vědět v CZ.NICu se sphinx jede. Případně zkusit zjistit, co umí jejich Akademie +- Free-textová dokumentace (architektura ap.) má být nezávislá na dokumentaci konkrétního kódu, ale je fajn, když se to pak spojí dohromady, jde-li to. + - Lepší, když se obojí dá dělat stejným nástrojem +- Káťa má někdy pocit, že tráví spoustu času tím, že hledá který soubor vůbec upravit; to má v naší dokumentaci být. + +__Závěr:__ Zkusíme použít sphinx (z nedostatku vlastních zkušeností a kvůli jeho popularitě), když se nám to nebude líbit, tak budeme řešit dál. Bylo by fajn najít nějaký workshop, bude to rychlejší nalejvárna než číst dokumentaci. V krátkodobém výhledu stáhneme vývojovou dokumentaci z webu do repozitáře a zprovozníme někde automatické buildy (aby se dala číst jako člověk a ne jako stroj). + +## Uživatelská dokumentace + +- K: Dělat ji ve spolupráci s těma uživatelema +- P: Dávný Hedgedoc může případně sloužit jako základ osnovy +- K: Dost možná nevíme, co bolí víc a co míň +- Jethro: Musí být na wiki, jinak tím zmateme oržstvo + +__Závěr:__ Dokumentace bude na wiki (, výhledově možná ve stejné složce v dalších souborech), bude vznikat podle našich pocitů a dotazů od ostatních; výhledově bude schůzka na ukázání featur nového webu a tam se dosbírají náměty na to, co sepsat. diff --git a/galerie/templates/galerie/Galerie.html b/galerie/templates/galerie/Galerie.html index b2dfe994..aadc969e 100644 --- a/galerie/templates/galerie/Galerie.html +++ b/galerie/templates/galerie/Galerie.html @@ -62,11 +62,12 @@ {% endwith %} {% endif%} + {{obrazek.popis}} + class="obrazek"> {% if obrazky_dalsi %} {% with obrazky_dalsi|first as dalsi_obrazek %} diff --git a/korektury/admin.py b/korektury/admin.py index 79dfffb1..64b2032f 100644 --- a/korektury/admin.py +++ b/korektury/admin.py @@ -2,6 +2,8 @@ from django.contrib import admin from reversion.admin import VersionAdmin from korektury.models import KorekturovanePDF +from django.core.mail import send_mail +from django.urls import reverse # Register your models here. class KorekturovanePDFAdmin(VersionAdmin): @@ -16,11 +18,31 @@ class KorekturovanePDFAdmin(VersionAdmin): fieldsets = [ (None, {'fields': - ['pdf', 'cas', 'org', 'stran', 'nazev', 'komentar']}), + ['pdf', 'cas', 'org', 'stran', 'nazev', 'komentar', 'poslat_mail']}), # (u'PDF', {'fields': ['pdf']}), ] list_display = ['nazev', 'cas', 'stran', 'org'] list_filter = [] search_fields = [] + def save_model(self, request, obj, form, change): + super().save_model(request, obj, form, change) + if not change and obj.poslat_mail: # Je nový a má se poslat mail + odkaz = request.build_absolute_uri(reverse('korektury', kwargs={'pdf': obj.id})) + odesilatel = 'korekturovatko-nove-pdf@mam.mff.cuni.cz' + prijemce = 'org@mam.mff.cuni.cz' + predmet = f'Nové korektury: {obj.nazev}' + text = f'''\ +V korekturovátku se objevil nový soubor: {obj.nazev} +{odkaz} + +Popis souboru: +{obj.komentar} + +--- +S pozdravem a korekturám zdar! +Korekturovátko +''' + send_mail(predmet,text,odesilatel,[prijemce]) + admin.site.register(KorekturovanePDF, KorekturovanePDFAdmin) diff --git a/korektury/migrations/0018_korekturovanepdf_poslat_mail.py b/korektury/migrations/0018_korekturovanepdf_poslat_mail.py new file mode 100644 index 00000000..c93b957e --- /dev/null +++ b/korektury/migrations/0018_korekturovanepdf_poslat_mail.py @@ -0,0 +1,18 @@ +# Generated by Django 2.2.24 on 2021-12-05 23:09 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('korektury', '0017_auto_20190610_2358'), + ] + + operations = [ + migrations.AddField( + model_name='korekturovanepdf', + name='poslat_mail', + field=models.BooleanField(default=True, help_text='Určuje, zda se má o nově nahraném PDF poslat e-mail do mam-org. Při upravování existujícího souboru už nemá žádný vliv.', verbose_name='Poslat mail o novém PDF'), + ), + ] diff --git a/korektury/models.py b/korektury/models.py index f22c6874..240323a8 100644 --- a/korektury/models.py +++ b/korektury/models.py @@ -63,6 +63,10 @@ class KorekturovanePDF(models.Model): status = models.CharField(u'stav PDF',max_length=16, choices=STATUS_CHOICES, blank=False, default = STATUS_PRIDAVANI) + poslat_mail = models.BooleanField('Poslat mail o novém PDF', default=True, + help_text='Určuje, zda se má o nově nahraném PDF poslat e-mail do mam-org. Při upravování existujícího souboru už nemá žádný vliv.', + ) + #TODO Nepovinný foreign key k číslu diff --git a/korektury/static/korektury/opraf.css b/korektury/static/korektury/opraf.css index 4a731de4..d5b21da2 100644 --- a/korektury/static/korektury/opraf.css +++ b/korektury/static/korektury/opraf.css @@ -89,6 +89,7 @@ form { border: 4px solid red; border-radius: 10px; background-color: white; + opacity: 80%; } .close-button{ background-color: yellow; diff --git a/korektury/templates/korektury/opraf.html b/korektury/templates/korektury/opraf.html index 02af7d56..2dbc528b 100644 --- a/korektury/templates/korektury/opraf.html +++ b/korektury/templates/korektury/opraf.html @@ -4,10 +4,11 @@ + Korektury {{pdf.nazev}} - +

Korektury {{pdf.nazev}}

{% if pdf.status == 'zanaseni' %}

Probíhá zanášení korektur, zvažte, zda chcete přidávat nové

{% endif %} {% if pdf.status == 'zastarale' %}

Toto PDF je již zastaralé, nepřidávejte nové korektury

{% endif %} diff --git a/korektury/templates/korektury/seskupeny_seznam.html b/korektury/templates/korektury/seskupeny_seznam.html index 5809b6c0..1244eb45 100644 --- a/korektury/templates/korektury/seskupeny_seznam.html +++ b/korektury/templates/korektury/seskupeny_seznam.html @@ -22,9 +22,8 @@