diff --git a/data/groups.json b/data/groups.json new file mode 100644 index 00000000..df9516a0 --- /dev/null +++ b/data/groups.json @@ -0,0 +1,645 @@ +[ + { + "fields": { + "name": "org", + "permissions": [ + [ + "org", + "auth", + "user" + ], + [ + "add_flatpage", + "flatpages", + "flatpage" + ], + [ + "delete_flatpage", + "flatpages", + "flatpage" + ], + [ + "change_flatpage", + "flatpages", + "flatpage" + ], + [ + "view_flatpage", + "flatpages", + "flatpage" + ], + [ + "add_galerie", + "galerie", + "galerie" + ], + [ + "delete_galerie", + "galerie", + "galerie" + ], + [ + "change_galerie", + "galerie", + "galerie" + ], + [ + "view_galerie", + "galerie", + "galerie" + ], + [ + "add_obrazek", + "galerie", + "obrazek" + ], + [ + "delete_obrazek", + "galerie", + "obrazek" + ], + [ + "change_obrazek", + "galerie", + "obrazek" + ], + [ + "view_obrazek", + "galerie", + "obrazek" + ], + [ + "add_fotkaheader", + "header_fotky", + "fotkaheader" + ], + [ + "change_fotkaheader", + "header_fotky", + "fotkaheader" + ], + [ + "view_fotkaheader", + "header_fotky", + "fotkaheader" + ], + [ + "add_fotkaurlvazba", + "header_fotky", + "fotkaurlvazba" + ], + [ + "change_fotkaurlvazba", + "header_fotky", + "fotkaurlvazba" + ], + [ + "view_fotkaurlvazba", + "header_fotky", + "fotkaurlvazba" + ], + [ + "add_komentar", + "korektury", + "komentar" + ], + [ + "delete_komentar", + "korektury", + "komentar" + ], + [ + "change_komentar", + "korektury", + "komentar" + ], + [ + "view_komentar", + "korektury", + "komentar" + ], + [ + "add_korekturovanepdf", + "korektury", + "korekturovanepdf" + ], + [ + "delete_korekturovanepdf", + "korektury", + "korekturovanepdf" + ], + [ + "change_korekturovanepdf", + "korektury", + "korekturovanepdf" + ], + [ + "view_korekturovanepdf", + "korektury", + "korekturovanepdf" + ], + [ + "add_oprava", + "korektury", + "oprava" + ], + [ + "delete_oprava", + "korektury", + "oprava" + ], + [ + "change_oprava", + "korektury", + "oprava" + ], + [ + "view_oprava", + "korektury", + "oprava" + ], + [ + "add_novinky", + "novinky", + "novinky" + ], + [ + "delete_novinky", + "novinky", + "novinky" + ], + [ + "change_novinky", + "novinky", + "novinky" + ], + [ + "view_novinky", + "novinky", + "novinky" + ], + [ + "change_organizator", + "personalni", + "organizator" + ], + [ + "view_organizator", + "personalni", + "organizator" + ], + [ + "change_osoba", + "personalni", + "osoba" + ], + [ + "view_osoba", + "personalni", + "osoba" + ], + [ + "add_prijemce", + "personalni", + "prijemce" + ], + [ + "delete_prijemce", + "personalni", + "prijemce" + ], + [ + "change_prijemce", + "personalni", + "prijemce" + ], + [ + "view_prijemce", + "personalni", + "prijemce" + ], + [ + "change_resitel", + "personalni", + "resitel" + ], + [ + "view_resitel", + "personalni", + "resitel" + ], + [ + "add_skola", + "personalni", + "skola" + ], + [ + "delete_skola", + "personalni", + "skola" + ], + [ + "change_skola", + "personalni", + "skola" + ], + [ + "view_skola", + "personalni", + "skola" + ], + [ + "add_hlasovani", + "prednasky", + "hlasovani" + ], + [ + "delete_hlasovani", + "prednasky", + "hlasovani" + ], + [ + "change_hlasovani", + "prednasky", + "hlasovani" + ], + [ + "view_hlasovani", + "prednasky", + "hlasovani" + ], + [ + "add_prednaska", + "prednasky", + "prednaska" + ], + [ + "delete_prednaska", + "prednasky", + "prednaska" + ], + [ + "change_prednaska", + "prednasky", + "prednaska" + ], + [ + "view_prednaska", + "prednasky", + "prednaska" + ], + [ + "add_seznam", + "prednasky", + "seznam" + ], + [ + "delete_seznam", + "prednasky", + "seznam" + ], + [ + "change_seznam", + "prednasky", + "seznam" + ], + [ + "view_seznam", + "prednasky", + "seznam" + ], + [ + "add_konfera", + "soustredeni", + "konfera" + ], + [ + "delete_konfera", + "soustredeni", + "konfera" + ], + [ + "change_konfera", + "soustredeni", + "konfera" + ], + [ + "view_konfera", + "soustredeni", + "konfera" + ], + [ + "add_konfery_ucastnici", + "soustredeni", + "konfery_ucastnici" + ], + [ + "delete_konfery_ucastnici", + "soustredeni", + "konfery_ucastnici" + ], + [ + "change_konfery_ucastnici", + "soustredeni", + "konfery_ucastnici" + ], + [ + "view_konfery_ucastnici", + "soustredeni", + "konfery_ucastnici" + ], + [ + "add_soustredeni", + "soustredeni", + "soustredeni" + ], + [ + "delete_soustredeni", + "soustredeni", + "soustredeni" + ], + [ + "change_soustredeni", + "soustredeni", + "soustredeni" + ], + [ + "view_soustredeni", + "soustredeni", + "soustredeni" + ], + [ + "add_soustredeni_organizatori", + "soustredeni", + "soustredeni_organizatori" + ], + [ + "delete_soustredeni_organizatori", + "soustredeni", + "soustredeni_organizatori" + ], + [ + "change_soustredeni_organizatori", + "soustredeni", + "soustredeni_organizatori" + ], + [ + "view_soustredeni_organizatori", + "soustredeni", + "soustredeni_organizatori" + ], + [ + "add_soustredeni_ucastnici", + "soustredeni", + "soustredeni_ucastnici" + ], + [ + "delete_soustredeni_ucastnici", + "soustredeni", + "soustredeni_ucastnici" + ], + [ + "change_soustredeni_ucastnici", + "soustredeni", + "soustredeni_ucastnici" + ], + [ + "view_soustredeni_ucastnici", + "soustredeni", + "soustredeni_ucastnici" + ], + [ + "add_tag", + "taggit", + "tag" + ], + [ + "delete_tag", + "taggit", + "tag" + ], + [ + "change_tag", + "taggit", + "tag" + ], + [ + "view_tag", + "taggit", + "tag" + ], + [ + "add_taggeditem", + "taggit", + "taggeditem" + ], + [ + "delete_taggeditem", + "taggit", + "taggeditem" + ], + [ + "change_taggeditem", + "taggit", + "taggeditem" + ], + [ + "view_taggeditem", + "taggit", + "taggeditem" + ], + [ + "add_cislo", + "tvorba", + "cislo" + ], + [ + "delete_cislo", + "tvorba", + "cislo" + ], + [ + "change_cislo", + "tvorba", + "cislo" + ], + [ + "view_cislo", + "tvorba", + "cislo" + ], + [ + "add_clanek", + "tvorba", + "clanek" + ], + [ + "delete_clanek", + "tvorba", + "clanek" + ], + [ + "change_clanek", + "tvorba", + "clanek" + ], + [ + "view_clanek", + "tvorba", + "clanek" + ], + [ + "add_deadline", + "tvorba", + "deadline" + ], + [ + "change_deadline", + "tvorba", + "deadline" + ], + [ + "view_deadline", + "tvorba", + "deadline" + ], + [ + "add_pohadka", + "tvorba", + "pohadka" + ], + [ + "delete_pohadka", + "tvorba", + "pohadka" + ], + [ + "change_pohadka", + "tvorba", + "pohadka" + ], + [ + "view_pohadka", + "tvorba", + "pohadka" + ], + [ + "add_problem", + "tvorba", + "problem" + ], + [ + "delete_problem", + "tvorba", + "problem" + ], + [ + "change_problem", + "tvorba", + "problem" + ], + [ + "view_problem", + "tvorba", + "problem" + ], + [ + "add_rocnik", + "tvorba", + "rocnik" + ], + [ + "delete_rocnik", + "tvorba", + "rocnik" + ], + [ + "change_rocnik", + "tvorba", + "rocnik" + ], + [ + "view_rocnik", + "tvorba", + "rocnik" + ], + [ + "add_tema", + "tvorba", + "tema" + ], + [ + "delete_tema", + "tvorba", + "tema" + ], + [ + "change_tema", + "tvorba", + "tema" + ], + [ + "view_tema", + "tvorba", + "tema" + ], + [ + "add_uloha", + "tvorba", + "uloha" + ], + [ + "delete_uloha", + "tvorba", + "uloha" + ], + [ + "change_uloha", + "tvorba", + "uloha" + ], + [ + "view_uloha", + "tvorba", + "uloha" + ], + [ + "add_nastaveni", + "various", + "nastaveni" + ], + [ + "delete_nastaveni", + "various", + "nastaveni" + ], + [ + "change_nastaveni", + "various", + "nastaveni" + ], + [ + "view_nastaveni", + "various", + "nastaveni" + ] + ] + }, + "model": "auth.group", + "pk": 1 + }, + { + "fields": { + "name": "resitel", + "permissions": [ + [ + "resitel", + "auth", + "user" + ] + ] + }, + "model": "auth.group", + "pk": 2 + } +] \ No newline at end of file diff --git a/deploy_v2/admin_org_prava.json b/deploy_v2/admin_org_prava.json deleted file mode 100644 index c7fc8c7d..00000000 --- a/deploy_v2/admin_org_prava.json +++ /dev/null @@ -1,622 +0,0 @@ -[ - { - "codename": "org", - "ct_app_label": "auth", - "ct_model": "user" - }, - { - "codename": "add_flatpage", - "ct_app_label": "flatpages", - "ct_model": "flatpage" - }, - { - "codename": "change_flatpage", - "ct_app_label": "flatpages", - "ct_model": "flatpage" - }, - { - "codename": "delete_flatpage", - "ct_app_label": "flatpages", - "ct_model": "flatpage" - }, - { - "codename": "view_flatpage", - "ct_app_label": "flatpages", - "ct_model": "flatpage" - }, - { - "codename": "add_galerie", - "ct_app_label": "galerie", - "ct_model": "galerie" - }, - { - "codename": "change_galerie", - "ct_app_label": "galerie", - "ct_model": "galerie" - }, - { - "codename": "delete_galerie", - "ct_app_label": "galerie", - "ct_model": "galerie" - }, - { - "codename": "view_galerie", - "ct_app_label": "galerie", - "ct_model": "galerie" - }, - { - "codename": "add_obrazek", - "ct_app_label": "galerie", - "ct_model": "obrazek" - }, - { - "codename": "change_obrazek", - "ct_app_label": "galerie", - "ct_model": "obrazek" - }, - { - "codename": "delete_obrazek", - "ct_app_label": "galerie", - "ct_model": "obrazek" - }, - { - "codename": "view_obrazek", - "ct_app_label": "galerie", - "ct_model": "obrazek" - }, - { - "codename": "add_fotkaheader", - "ct_app_label": "header_fotky", - "ct_model": "fotkaheader" - }, - { - "codename": "change_fotkaheader", - "ct_app_label": "header_fotky", - "ct_model": "fotkaheader" - }, - { - "codename": "view_fotkaheader", - "ct_app_label": "header_fotky", - "ct_model": "fotkaheader" - }, - { - "codename": "add_fotkaurlvazba", - "ct_app_label": "header_fotky", - "ct_model": "fotkaurlvazba" - }, - { - "codename": "change_fotkaurlvazba", - "ct_app_label": "header_fotky", - "ct_model": "fotkaurlvazba" - }, - { - "codename": "view_fotkaurlvazba", - "ct_app_label": "header_fotky", - "ct_model": "fotkaurlvazba" - }, - { - "codename": "add_komentar", - "ct_app_label": "korektury", - "ct_model": "komentar" - }, - { - "codename": "change_komentar", - "ct_app_label": "korektury", - "ct_model": "komentar" - }, - { - "codename": "delete_komentar", - "ct_app_label": "korektury", - "ct_model": "komentar" - }, - { - "codename": "view_komentar", - "ct_app_label": "korektury", - "ct_model": "komentar" - }, - { - "codename": "add_korekturovanepdf", - "ct_app_label": "korektury", - "ct_model": "korekturovanepdf" - }, - { - "codename": "change_korekturovanepdf", - "ct_app_label": "korektury", - "ct_model": "korekturovanepdf" - }, - { - "codename": "delete_korekturovanepdf", - "ct_app_label": "korektury", - "ct_model": "korekturovanepdf" - }, - { - "codename": "view_korekturovanepdf", - "ct_app_label": "korektury", - "ct_model": "korekturovanepdf" - }, - { - "codename": "add_oprava", - "ct_app_label": "korektury", - "ct_model": "oprava" - }, - { - "codename": "change_oprava", - "ct_app_label": "korektury", - "ct_model": "oprava" - }, - { - "codename": "delete_oprava", - "ct_app_label": "korektury", - "ct_model": "oprava" - }, - { - "codename": "view_oprava", - "ct_app_label": "korektury", - "ct_model": "oprava" - }, - { - "codename": "add_hlasovani", - "ct_app_label": "prednasky", - "ct_model": "hlasovani" - }, - { - "codename": "change_hlasovani", - "ct_app_label": "prednasky", - "ct_model": "hlasovani" - }, - { - "codename": "delete_hlasovani", - "ct_app_label": "prednasky", - "ct_model": "hlasovani" - }, - { - "codename": "view_hlasovani", - "ct_app_label": "prednasky", - "ct_model": "hlasovani" - }, - { - "codename": "add_prednaska", - "ct_app_label": "prednasky", - "ct_model": "prednaska" - }, - { - "codename": "change_prednaska", - "ct_app_label": "prednasky", - "ct_model": "prednaska" - }, - { - "codename": "delete_prednaska", - "ct_app_label": "prednasky", - "ct_model": "prednaska" - }, - { - "codename": "view_prednaska", - "ct_app_label": "prednasky", - "ct_model": "prednaska" - }, - { - "codename": "add_seznam", - "ct_app_label": "prednasky", - "ct_model": "seznam" - }, - { - "codename": "change_seznam", - "ct_app_label": "prednasky", - "ct_model": "seznam" - }, - { - "codename": "delete_seznam", - "ct_app_label": "prednasky", - "ct_model": "seznam" - }, - { - "codename": "view_seznam", - "ct_app_label": "prednasky", - "ct_model": "seznam" - }, - { - "codename": "add_cislo", - "ct_app_label": "tvorba", - "ct_model": "cislo" - }, - { - "codename": "change_cislo", - "ct_app_label": "tvorba", - "ct_model": "cislo" - }, - { - "codename": "delete_cislo", - "ct_app_label": "tvorba", - "ct_model": "cislo" - }, - { - "codename": "view_cislo", - "ct_app_label": "tvorba", - "ct_model": "cislo" - }, - { - "codename": "add_clanek", - "ct_app_label": "tvorba", - "ct_model": "clanek" - }, - { - "codename": "change_clanek", - "ct_app_label": "tvorba", - "ct_model": "clanek" - }, - { - "codename": "delete_clanek", - "ct_app_label": "tvorba", - "ct_model": "clanek" - }, - { - "codename": "view_clanek", - "ct_app_label": "tvorba", - "ct_model": "clanek" - }, - { - "codename": "add_deadline", - "ct_app_label": "tvorba", - "ct_model": "deadline" - }, - { - "codename": "change_deadline", - "ct_app_label": "tvorba", - "ct_model": "deadline" - }, - { - "codename": "view_deadline", - "ct_app_label": "tvorba", - "ct_model": "deadline" - }, - { - "codename": "add_konfera", - "ct_app_label": "soustredeni", - "ct_model": "konfera" - }, - { - "codename": "change_konfera", - "ct_app_label": "soustredeni", - "ct_model": "konfera" - }, - { - "codename": "delete_konfera", - "ct_app_label": "soustredeni", - "ct_model": "konfera" - }, - { - "codename": "view_konfera", - "ct_app_label": "soustredeni", - "ct_model": "konfera" - }, - { - "codename": "add_konfery_ucastnici", - "ct_app_label": "soustredeni", - "ct_model": "konfery_ucastnici" - }, - { - "codename": "change_konfery_ucastnici", - "ct_app_label": "soustredeni", - "ct_model": "konfery_ucastnici" - }, - { - "codename": "delete_konfery_ucastnici", - "ct_app_label": "soustredeni", - "ct_model": "konfery_ucastnici" - }, - { - "codename": "view_konfery_ucastnici", - "ct_app_label": "soustredeni", - "ct_model": "konfery_ucastnici" - }, - { - "codename": "add_nastaveni", - "ct_app_label": "various", - "ct_model": "nastaveni" - }, - { - "codename": "change_nastaveni", - "ct_app_label": "various", - "ct_model": "nastaveni" - }, - { - "codename": "delete_nastaveni", - "ct_app_label": "various", - "ct_model": "nastaveni" - }, - { - "codename": "view_nastaveni", - "ct_app_label": "various", - "ct_model": "nastaveni" - }, - { - "codename": "add_novinky", - "ct_app_label": "novinky", - "ct_model": "novinky" - }, - { - "codename": "change_novinky", - "ct_app_label": "novinky", - "ct_model": "novinky" - }, - { - "codename": "delete_novinky", - "ct_app_label": "novinky", - "ct_model": "novinky" - }, - { - "codename": "view_novinky", - "ct_app_label": "novinky", - "ct_model": "novinky" - }, - { - "codename": "change_organizator", - "ct_app_label": "personalni", - "ct_model": "organizator" - }, - { - "codename": "view_organizator", - "ct_app_label": "personalni", - "ct_model": "organizator" - }, - { - "codename": "change_osoba", - "ct_app_label": "personalni", - "ct_model": "osoba" - }, - { - "codename": "view_osoba", - "ct_app_label": "personalni", - "ct_model": "osoba" - }, - { - "codename": "add_pohadka", - "ct_app_label": "tvorba", - "ct_model": "pohadka" - }, - { - "codename": "change_pohadka", - "ct_app_label": "tvorba", - "ct_model": "pohadka" - }, - { - "codename": "delete_pohadka", - "ct_app_label": "tvorba", - "ct_model": "pohadka" - }, - { - "codename": "view_pohadka", - "ct_app_label": "tvorba", - "ct_model": "pohadka" - }, - { - "codename": "add_prijemce", - "ct_app_label": "personalni", - "ct_model": "prijemce" - }, - { - "codename": "change_prijemce", - "ct_app_label": "personalni", - "ct_model": "prijemce" - }, - { - "codename": "delete_prijemce", - "ct_app_label": "personalni", - "ct_model": "prijemce" - }, - { - "codename": "view_prijemce", - "ct_app_label": "personalni", - "ct_model": "prijemce" - }, - { - "codename": "add_problem", - "ct_app_label": "tvorba", - "ct_model": "problem" - }, - { - "codename": "change_problem", - "ct_app_label": "tvorba", - "ct_model": "problem" - }, - { - "codename": "delete_problem", - "ct_app_label": "tvorba", - "ct_model": "problem" - }, - { - "codename": "view_problem", - "ct_app_label": "tvorba", - "ct_model": "problem" - }, - { - "codename": "change_resitel", - "ct_app_label": "personalni", - "ct_model": "resitel" - }, - { - "codename": "view_resitel", - "ct_app_label": "personalni", - "ct_model": "resitel" - }, - { - "codename": "add_rocnik", - "ct_app_label": "tvorba", - "ct_model": "rocnik" - }, - { - "codename": "change_rocnik", - "ct_app_label": "tvorba", - "ct_model": "rocnik" - }, - { - "codename": "delete_rocnik", - "ct_app_label": "tvorba", - "ct_model": "rocnik" - }, - { - "codename": "view_rocnik", - "ct_app_label": "tvorba", - "ct_model": "rocnik" - }, - { - "codename": "add_skola", - "ct_app_label": "personalni", - "ct_model": "skola" - }, - { - "codename": "change_skola", - "ct_app_label": "personalni", - "ct_model": "skola" - }, - { - "codename": "delete_skola", - "ct_app_label": "personalni", - "ct_model": "skola" - }, - { - "codename": "view_skola", - "ct_app_label": "personalni", - "ct_model": "skola" - }, - { - "codename": "add_soustredeni", - "ct_app_label": "soustredeni", - "ct_model": "soustredeni" - }, - { - "codename": "change_soustredeni", - "ct_app_label": "soustredeni", - "ct_model": "soustredeni" - }, - { - "codename": "delete_soustredeni", - "ct_app_label": "soustredeni", - "ct_model": "soustredeni" - }, - { - "codename": "view_soustredeni", - "ct_app_label": "soustredeni", - "ct_model": "soustredeni" - }, - { - "codename": "add_soustredeni_organizatori", - "ct_app_label": "soustredeni", - "ct_model": "soustredeni_organizatori" - }, - { - "codename": "change_soustredeni_organizatori", - "ct_app_label": "soustredeni", - "ct_model": "soustredeni_organizatori" - }, - { - "codename": "delete_soustredeni_organizatori", - "ct_app_label": "soustredeni", - "ct_model": "soustredeni_organizatori" - }, - { - "codename": "view_soustredeni_organizatori", - "ct_app_label": "soustredeni", - "ct_model": "soustredeni_organizatori" - }, - { - "codename": "add_soustredeni_ucastnici", - "ct_app_label": "soustredeni", - "ct_model": "soustredeni_ucastnici" - }, - { - "codename": "change_soustredeni_ucastnici", - "ct_app_label": "soustredeni", - "ct_model": "soustredeni_ucastnici" - }, - { - "codename": "delete_soustredeni_ucastnici", - "ct_app_label": "soustredeni", - "ct_model": "soustredeni_ucastnici" - }, - { - "codename": "view_soustredeni_ucastnici", - "ct_app_label": "soustredeni", - "ct_model": "soustredeni_ucastnici" - }, - { - "codename": "add_tema", - "ct_app_label": "tvorba", - "ct_model": "tema" - }, - { - "codename": "change_tema", - "ct_app_label": "tvorba", - "ct_model": "tema" - }, - { - "codename": "delete_tema", - "ct_app_label": "tvorba", - "ct_model": "tema" - }, - { - "codename": "view_tema", - "ct_app_label": "tvorba", - "ct_model": "tema" - }, - { - "codename": "add_uloha", - "ct_app_label": "tvorba", - "ct_model": "uloha" - }, - { - "codename": "change_uloha", - "ct_app_label": "tvorba", - "ct_model": "uloha" - }, - { - "codename": "delete_uloha", - "ct_app_label": "tvorba", - "ct_model": "uloha" - }, - { - "codename": "view_uloha", - "ct_app_label": "tvorba", - "ct_model": "uloha" - }, - { - "codename": "add_tag", - "ct_app_label": "taggit", - "ct_model": "tag" - }, - { - "codename": "change_tag", - "ct_app_label": "taggit", - "ct_model": "tag" - }, - { - "codename": "delete_tag", - "ct_app_label": "taggit", - "ct_model": "tag" - }, - { - "codename": "view_tag", - "ct_app_label": "taggit", - "ct_model": "tag" - }, - { - "codename": "add_taggeditem", - "ct_app_label": "taggit", - "ct_model": "taggeditem" - }, - { - "codename": "change_taggeditem", - "ct_app_label": "taggit", - "ct_model": "taggeditem" - }, - { - "codename": "delete_taggeditem", - "ct_app_label": "taggit", - "ct_model": "taggeditem" - }, - { - "codename": "view_taggeditem", - "ct_app_label": "taggit", - "ct_model": "taggeditem" - } -] diff --git a/deploy_v2/full_redeploy.sh b/deploy_v2/full_redeploy.sh index cec9c15c..f050bb63 100644 --- a/deploy_v2/full_redeploy.sh +++ b/deploy_v2/full_redeploy.sh @@ -13,7 +13,6 @@ make install_venv make install deploy_v2/pre_migration.py make deploy_test -./manage.py load_org_permissions admin_org_prava.json ./manage.py loaddata data/* systemctl --user start mamweb-test.service ./manage.py generate_thumbnails diff --git a/docs/index.rst b/docs/index.rst index d06c7e4a..af3b0c12 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -30,6 +30,7 @@ Dokumentace (jak v ``docs/``, tak přímo v kódu) je psaná ve zavislosti sphinx skripty + zkratky modules/modules dalsi_soubory zapisy/zapisy diff --git a/docs/sphinx.rst b/docs/sphinx.rst index 6a9b7a53..b450375c 100644 --- a/docs/sphinx.rst +++ b/docs/sphinx.rst @@ -1,13 +1,15 @@ Sphinx na našem webu ==================== -Dokumentace se zkompiluje příkazem ``make html`` ve složce ``doc``. +Dokumentace se zkompiluje příkazem ``make html`` ve složce ``docs``. (Musíte mít zapnutý virtualenv) Složka ``modules`` je automaticiky generována a přegenerovávána. (**Nic v ní neupravovat!**) -Jinak všechny rst, co jsou ve složce ``doc`` a jejích podsložkách nezačínajících podtržítkem, budou v dokumentaci a to je přesně to, co editovat pro změnu dokumentace (kromě dokumentace přímo v Pythonu). +Jinak všechny rst, co jsou ve složce ``docs`` a jejích podsložkách nezačínajících podtržítkem, budou v dokumentaci a to je přesně to, co editovat pro změnu dokumentace (kromě dokumentace přímo v Pythonu). Sphinx se píše v rst: `Návod na syntaxi rst`_ `Cheat sheet`_ +Pokud něco chcete protlačit do bočního meníčka, je potřeba to připsat do souboru ``docs/index.rst`` (Zatím není úplně konsensus nad tím, co tam má a nemá být, takže pokud si nejste jistí, cpěte tam *všechno* ☺) + To je snad vše, co je potřeba vědět k dokumentaci mamwebu. Následující sekce jsou o tom, co jsem provedl Sphinxu, aby to fungovalo: .. _Návod na syntaxi rst: https://sphinx-tutorial.readthedocs.io/step-1/#sections diff --git a/docs/zkratky.rst b/docs/zkratky.rst new file mode 100644 index 00000000..95902921 --- /dev/null +++ b/docs/zkratky.rst @@ -0,0 +1,86 @@ +Zkratky aplikací ve zdrojácích +@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ + +Ve zdrojácích (zejména různé ``models.py``, ``views.py`` ap.) používáme spoustu +modelů. Někdy je praktičtější / někdo preferuje importovat celou aplikaci jako +jedno jméno a používat modely bez explicitních importů, tj:: + + # „hromadné“ importy: + import personalni.models as p + ... + p.Organizator.objects.all() + + # „explicitní“ importy: + from personalni.models import Organizator + ... + Organizator.objects.all() + +Na webschůzce 2024-11-05 jsme na toto téma otevřeli diskusi, tady je její závěr. + +.. admonition:: Historické okénko + :class: note + + Kdysi jsme měli (prakticky) všechny modely v jedné aplikaci, ``seminar``. Na + různých místech se pak ``seminar.models`` importovalo typicky jako ``s`` + nebo jako ``m``. + + Přirozeně, toto už nejde tak snadno, protože už neexistuje jedno místo, ze + kterého chceme tahat modely v kódu. + +Konvence +======== + +Shodli jsme se, že nám rozhodně nevadí explicitní importy a z pohledu +čitelnosti je preferujeme. Nicméně při psaní kódu to některým webařům přijde +nepohodlné, takže očekáváme, že bude existovat spousta kódu, která bude chtít +importovat hromadně. Usnesli jsme se proto na následujících kanonických +zkratkách, aby se aplikace alespoň zkracovaly konzistentně. + +V závorkách je uvedené případné jméno, ale nepředpokládáme, že někdo bude danou +aplikaci chtít importovat hromadně. Některé aplikace zkratku nemají, ty se +importují vždy pod plným jménem nebo explicitně. + +.. list-table:: + :header-rows: 1 + + * - Model + - Zkratka + * - ``aesop`` + - --- + * - ``api`` + - --- (``api``) + * - ``galerie`` + - ``g`` + * - ``header_fotky`` + - --- (``hdr``) + * - ``korektury`` + - ``kor`` + * - ``novinky`` + - ``nov`` + * - ``odevzdavatko`` + - ``odev`` + * - ``personální`` + - ``pers``/``p`` + * - ``sifrovacka`` + - (``sifr``) + * - ``soustredeni`` + - ``sou`` + * - ``treenode`` + - ``tn`` + * - ``tvorba`` + - ``tv`` + * - ``various`` + - ``v``/``var`` + * - ``vyroci`` + - --- + * - ``vysledkovky`` + - ``vysl`` + + +.. admonition:: O všech modelech pod jedním jménem + :class: warning + + Historické okénko výš zatajuje jeden detail: Při práci v shellu se hodí mít + modely k dispozici a nemuset přemýšlet nad dělením do aplikací, takže ve + skutečnosti existuje ``mamweb.vsechno``, jenž všechny modely obsahuje. + Z čitelnostních důvodů je ale *zakázáno* tento modul používat v kódu. diff --git a/korektury/static/korektury/imgs/check.png b/korektury/static/korektury/imgs/check.png index c4d5504e..36197800 100644 Binary files a/korektury/static/korektury/imgs/check.png and b/korektury/static/korektury/imgs/check.png differ diff --git a/korektury/static/korektury/imgs/cross.png b/korektury/static/korektury/imgs/cross.png index f3add6aa..195cdfa8 100644 Binary files a/korektury/static/korektury/imgs/cross.png and b/korektury/static/korektury/imgs/cross.png differ diff --git a/korektury/static/korektury/imgs/tex.png b/korektury/static/korektury/imgs/tex.png index 26b3e58d..ad80c8a3 100644 Binary files a/korektury/static/korektury/imgs/tex.png and b/korektury/static/korektury/imgs/tex.png differ diff --git a/korektury/static/korektury/imgs/undo.png b/korektury/static/korektury/imgs/undo.png index 973b5939..504ff43b 100644 Binary files a/korektury/static/korektury/imgs/undo.png and b/korektury/static/korektury/imgs/undo.png differ diff --git a/make/init_local b/make/init_local index 76448a3c..90474f44 100755 --- a/make/init_local +++ b/make/init_local @@ -8,4 +8,3 @@ ensure_venv ./manage.py testdata ./manage.py loaddata data/* #make/sync_prod_flatpages -./manage.py load_org_permissions deploy_v2/admin_org_prava.json diff --git a/mamweb/admin.py b/mamweb/admin.py index a58df505..a0ccf69e 100644 --- a/mamweb/admin.py +++ b/mamweb/admin.py @@ -7,6 +7,7 @@ import locale from django.contrib import admin from django.contrib.admin import AdminSite from django.contrib.flatpages.models import FlatPage +import logging # Note: we are renaming the original Admin and Form as we import them! from django.contrib.flatpages.admin import FlatPageAdmin as FlatPageAdminOld @@ -56,8 +57,13 @@ def get_app_list(self, request, app_label=None): # Sort the models alphabetically within each app. - for app in app_list: - app['models'].sort(key=lambda x: locale.strxfrm(x['name'].lower())) + try: # na macu nefunguje locale.strxfrm :-/ proto je tu try except block + for app in app_list: + app['models'].sort(key=lambda x: locale.strxfrm(x['name'].lower())) + except OSError as e: + # locale.strxfrm nefunguje na macu... :-/ -> neprovede se řazení + logger = logging.getLogger(__name__) + logger.error(e) return app_list diff --git a/mamweb/static/css/constants.css b/mamweb/static/css/constants.css index 959897b4..361e01dc 100644 --- a/mamweb/static/css/constants.css +++ b/mamweb/static/css/constants.css @@ -10,6 +10,8 @@ --orgovska-fialova: #6a0043; --orgovska-svetla-fialova: #eee4ec; + --resitelska-fialova: #f296b3; + --resitelska-svetla-fialova: #f2E5EF; --barva-pozadi: #fffbf6; } diff --git a/mamweb/static/css/modules.css b/mamweb/static/css/modules.css index 6f612f27..02a9b2bf 100644 --- a/mamweb/static/css/modules.css +++ b/mamweb/static/css/modules.css @@ -17,7 +17,27 @@ border: var(--orgovska-fialova) 2px dashed; & .mam-org-only { - border: 0; + /* Vnitřní rámečky mají být taky vidět */ + border-width: 1px; + background-color: rgba(0, 0, 0, 0.06); + } + + & li { + padding: 3px 0; + margin: -2px 0; + } +} + +.mam-resitel-only { + background: var(--resitelska-svetla-fialova); + padding: 10px; + margin: 10px -10px; + border: var(--resitelska-fialova) 2px dashed; + + & .mam-resitel-only { + /* Vnitřní rámečky mají být taky vidět */ + border-width: 1px; + background-color: rgba(0, 0, 0, 0.06); } & li { diff --git a/prednasky/views.py b/prednasky/views.py index 368c98d9..f0694dc5 100644 --- a/prednasky/views.py +++ b/prednasky/views.py @@ -67,7 +67,7 @@ class SeznamListView(generic.ListView): def get_queryset(self): self.seznam = get_object_or_404(Seznam, id=self.kwargs["seznam"]) prednasky = Prednaska.objects.filter(seznamy=self.seznam).order_by( - 'org__user__first_name', 'org__user__last_name' + 'org__osoba__user__first_name', 'org__osoba__user__last_name' ) return prednasky diff --git a/soustredeni/templates/soustredeni/seznam_soustredeni.html b/soustredeni/templates/soustredeni/seznam_soustredeni.html index 7ba6cd29..75db6f37 100644 --- a/soustredeni/templates/soustredeni/seznam_soustredeni.html +++ b/soustredeni/templates/soustredeni/seznam_soustredeni.html @@ -36,12 +36,16 @@ {% endfor %} {% endif %} - {% for i in soustredeni.ucastnici.all %} - {% if i.osoba.user == user %} - {% if soustredeni.kontaktnicek_pdf %}
  • kontaktnicek pdf
  • {% endif %} - {% if soustredeni.kontaktnicek_vcf %}
  • kontaktnicek vcf
  • {% endif %} - {% endif %} - {% endfor %} + {% if soustredeni.kontaktnicek_pdf or soustredeni.kontaktnicek_vcf %} + {% for i in soustredeni.ucastnici.all %} + {% if i.osoba.user == user %} +
    + {% if soustredeni.kontaktnicek_pdf %}
  • kontaktnicek pdf
  • {% endif %} + {% if soustredeni.kontaktnicek_vcf %}
  • kontaktnicek vcf
  • {% endif %} +
    + {% endif %} + {% endfor %} + {% endif %} {% if user.je_org %} diff --git a/tvorba/templates/tvorba/archiv/cislo_vysledkovka.tex b/tvorba/templates/tvorba/archiv/cislo_vysledkovka.tex index de271652..6858c9cc 100644 --- a/tvorba/templates/tvorba/archiv/cislo_vysledkovka.tex +++ b/tvorba/templates/tvorba/archiv/cislo_vysledkovka.tex @@ -1,5 +1,17 @@ +\ifnum\mmrocnik=0{{vysledkovka.cislo.rocnik.rocnik}} \else\TODO[Ročník výsledkovky se neshoduje s ročníkem čísla! Pokud je to tak správně, smaž tento řádek.]\par\fi +\ifnum\mmcislo=0{{vysledkovka.cislo.poradi|add:1}} \else\TODO[Číslo výsledkovky se neshoduje s pořadovým číslem čísla! Nestáhnul jsi špatnou výsledkovku? Pokud je to tak správně, smaž tento řádek.]\par\fi +{% if rocnik %}\ifmmposledni\else\TODO[Importoval jsi výsledkovku posledního čísla do čísla, které není poslední (v headru nebylo \texttt{documentclass[\ldots,posledni]\{mam\}})! Pokud je to tak správně, smaž tento řádek.]\par\fi{% endif %} +% +\VysledkyCisla{Výsledky {% if vysledkovka.od_deadlinu %}2.~deadlinu {{vysledkovka.od_deadlinu.cislo.poradi}}.~čísla a~{% endif %}{% if rocnik %}celého{% else %}1.~deadlinu{% endif %} {{vysledkovka.cislo.poradi}}.~čísla} +\vspace{-1em}\nobreak +\begin{center} +% \setlength{\tabcolsep}{3pt} +\renewcommand{\arraystretch}{1.2} +\noindent\small +% {% if vysledkovka.je_nejake_ostatni %}\global\vysledkovkaostatnitrue{% else %}\global\vysledkovkaostatnifalse{% endif %} +{% if vysledkovka.od_deadlinu %}\global\VysledkovkaJedenDeadlinefalse{% else %}\global\VysledkovkaJedenDeadlinetrue{% endif %} \begin{longtable}{|r|l|c|r|{% for p in vysledkovka.temata_a_spol %}c@{\hskip.5em}{% endfor %}{% if vysledkovka.je_nejake_ostatni %}|c@{\hskip.5em}{% endif %}|r|r|}\hline & & & & \multicolumn{ {{ vysledkovka.temata_a_spol|length}} }{c|}{\textbf{Témata}} & & {% if vysledkovka.je_nejake_ostatni %}&{\hskip.5em}{% endif %} \\\textbf{Poř.}& \textbf{Jméno}& \textbf{R.}& \raisebox{0.7mm}{$\sum_{-1}$}& {% for p in vysledkovka.temata_a_spol %}\textbf{ {{ p.kod_v_rocniku }} }&{% endfor %}{% if vysledkovka.je_nejake_ostatni %}\textbf{O}&{% endif %}\raisebox{0.7mm}{$\sum_0$}&\raisebox{0.7mm}{$\sum_1$}\\\hline \endhead @@ -8,3 +20,4 @@ {% for rv in vysledkovka.radky_vysledkovky %}{{rv.poradi}}&{% if rv.titul %}\titul{ {{ rv.titul}}}{% endif %}{{rv.resitel.osoba.jmeno|slice:":1"}}. {{rv.resitel.osoba.prijmeni}}&{{rv.rocnik_resitele|default:""}}&{{rv.body_celkem_odjakziva}}&{% for b in rv.body_za_temata_seznam %}{{b}}&{% endfor %}{{rv.body_cislo}}&{{rv.body_rocnik|default:0}}\\ {% endfor %} \end{longtable} +\end{center} diff --git a/tvorba/templates/tvorba/archiv/rocnik_vysledkovka.tex b/tvorba/templates/tvorba/archiv/rocnik_vysledkovka.tex index a74d5e28..ea57aeb6 100644 --- a/tvorba/templates/tvorba/archiv/rocnik_vysledkovka.tex +++ b/tvorba/templates/tvorba/archiv/rocnik_vysledkovka.tex @@ -1,14 +1,27 @@ {% with lb="{" %} {% with rb="}" %} {% with vysledkovka=vysledkovka_neverejna %} +% +\ifnum\mmrocnik=0{{rocnik.rocnik}} \else\TODO[Ročník výsledkovky se neshoduje s ročníkem čísla! Pokud je to tak správně, smaž tento řádek.]\par\fi +\ifmmposledni\else\TODO[Importoval jsi výsledkovku ročníku do čísla, které není poslední (v headru nebylo \texttt{documentclass[\ldots,posledni]\{mam\}})! Pokud je to tak správně, smaž tento řádek.]\par\fi +% +\VysledkyRocniku{Výsledková listina {{rocnik.rocnik}}.~ročníku} +\vspace{-1em}\nobreak +\begin{center} +% \setlength{\tabcolsep}{3pt} +\renewcommand{\arraystretch}{1.2} +\noindent +% \begin{longtable}{|r|l|c|r|{% for cislo in vysledkovka.cisla_rocniku %}c{% if not forloop.last %}@{\hskip.5em}{% endif %}{% endfor %}|r|}\hline & & & & \multicolumn{{ lb }}{{ vysledkovka.cisla_rocniku|length }}}{c|}{\textbf{Číslo}} & \\\textbf{Poř.} & \textbf{Jméno} & \textbf{R.} & \raisebox{0.7mm}{$\sum_{-1}$} & {% for cislo in vysledkovka.cisla_rocniku %}\textbf{{ lb }}{{ cislo.poradi }}{{ rb }} & {% endfor %}\raisebox{0.7mm}{$\sum_1$} \\\hline \endhead \hline \endfoot {% for rv in vysledkovka.radky_vysledkovky %}{{ rv.poradi }} & {% if rv.titul %}\titul{{ lb }}{{ rv.titul }}}~{% endif %}{{ rv.resitel.osoba.jmeno|slice:":1" }}.~{{ rv.resitel.osoba.prijmeni }} & {% if rv.rocnik_resitele %}{{ rv.rocnik_resitele }}{% endif %} & {{ rv.body_celkem_odjakziva }} {% for b in rv.body_cisla_seznam %} & {{ b }}{% endfor %} & {{ rv.body_rocnik }} \\ -{% endfor %}\end{longtable} +{% endfor %} +\end{longtable} +\end{center} {% endwith %} {% endwith %} {% endwith %} diff --git a/tvorba/templates/tvorba/archiv/tituly.tex b/tvorba/templates/tvorba/archiv/tituly.tex index aca444df..41e69eba 100644 --- a/tvorba/templates/tvorba/archiv/tituly.tex +++ b/tvorba/templates/tvorba/archiv/tituly.tex @@ -1,3 +1,10 @@ +{% if cislo is None %} +\ifmmposledni\else\AtBeginDocument{\TODO[Importoval jsi tituly posledního čísla do čísla, které není poslední (v headru nebylo \texttt{documentclass[\ldots,posledni]\{mam\}})! Pokud je to tak správně, smaž tento řádek v \texttt{tituly.tex}.]\par}\fi +{% else %} +\ifmmposledni\AtBeginDocument{\TODO[Importoval jsi průběžné tituly do posledního čísla (v headru bylo \texttt{documentclass[\ldots,posledni]\{mam\}})! Pokud je to tak správně, smaž tento řádek v \texttt{tituly.tex}.]\par}\fi +\ifnum\mmcislo=0{{cislo|add:1}} \else\AtBeginDocument{\TODO[Číslo titulů se neshoduje s pořadovým číslem čísla! Nestáhnul jsi špatné tituly? Pokud je to tak správně, smaž tento řádek v \texttt{tituly.tex}.]\par}\fi +{% endif %} + {% if broken %} POZOR! Kolize jmen! Dva řešitelé mají stejné makro! {% endif %} diff --git a/tvorba/templates/tvorba/zadani/AktualniZadani.html b/tvorba/templates/tvorba/zadani/AktualniZadani.html index c463129d..d20a666b 100644 --- a/tvorba/templates/tvorba/zadani/AktualniZadani.html +++ b/tvorba/templates/tvorba/zadani/AktualniZadani.html @@ -18,7 +18,7 @@ Termíny pro odeslání řešení {{ac.poradi}}. série:
    {% for deadline in ac.deadline_v_cisle.all %} - {% if deadline.typ == deadline.TYP_SOUS or deadline.typ == deadline.TYP_PRVNI_A_SOUS %} + {% if deadline.typ == deadline.TYP_SOUS or deadline.typ == deadline.TYP_PRVNI_A_SOUS or deadline.typ == deadline.TYP_CISLA_A_SOUS %} {{deadline.deadline.date}} pro účast na soustředění
    {% endif %} @@ -26,7 +26,7 @@ {{deadline.deadline.date}} pro otištění v dalším čísle
    {% endif %} - {% if deadline.typ == deadline.TYP_CISLA %} + {% if deadline.typ == deadline.TYP_CISLA or deadline.typ == deadline.TYP_CISLA_A_SOUS %} {{deadline.deadline.date}} definitivní deadline
    {% endif %} {% endfor %} diff --git a/tvorba/views/__init__.py b/tvorba/views/__init__.py index 6647d89e..006a4e50 100644 --- a/tvorba/views/__init__.py +++ b/tvorba/views/__init__.py @@ -523,7 +523,7 @@ def TitulyView(request, rocnik, cislo): jmenovci = True return render(request, 'tvorba/archiv/tituly.tex', - {'resitele': resitele,'jmenovci':jmenovci},content_type="text/plain") + {'resitele': resitele,'jmenovci':jmenovci,'cislo':cislo},content_type="text/plain") ### Články diff --git a/various/management/commands/load_org_permissions.py b/various/management/commands/load_org_permissions.py deleted file mode 100644 index 6b4f9e0a..00000000 --- a/various/management/commands/load_org_permissions.py +++ /dev/null @@ -1,30 +0,0 @@ -from django.core.management.base import BaseCommand -from django.contrib.sessions.models import Session -from django.contrib.auth.models import Group, Permission -from django.contrib.contenttypes.models import ContentType -from django.core.exceptions import ObjectDoesNotExist -import json -import argparse - -class Command(BaseCommand): - """ - - """ - def add_arguments(self, parser): - parser.add_argument('file', nargs=1, type=argparse.FileType('r', encoding='utf8')) - - - def handle(self, *args, **options): - try: - orgroup = Group.objects.get(name='org') - except ObjectDoesNotExist: - orgroup = Group(name='org') - orgroup.save() - permissions = json.load(options['file'][0]) - orgroup.permissions.clear() - for jp in permissions: - ct = ContentType.objects.get(app_label = jp['ct_app_label'], model = jp['ct_model']) - perm = Permission.objects.get(content_type = ct, codename = jp['codename']) - orgroup.permissions.add(perm) - orgroup.save() - diff --git a/various/management/commands/save_org_permissions.py b/various/management/commands/save_org_permissions.py deleted file mode 100644 index 216f9e4b..00000000 --- a/various/management/commands/save_org_permissions.py +++ /dev/null @@ -1,20 +0,0 @@ -from django.core.management.base import BaseCommand -from django.contrib.sessions.models import Session -from django.contrib.auth.models import Group, Permission -import json - -class Command(BaseCommand): - """ - Dump permissions for group 'org' such that them can be used on an other machine. - - """ - def handle(self, *args, **options): - orgroup = Group.objects.get(name='org') - permissions = [] - for p in orgroup.permissions.all(): - permissions.append({ - 'codename': p.codename, - 'ct_app_label': p.content_type.app_label, - 'ct_model': p.content_type.model}) - print(json.dumps(permissions)) -