Browse Source

Merge branch 'refs/heads/master' into split_sous

pull/56/head
Jonas Havelka 5 months ago
parent
commit
b41b912aa4
  1. 16
      _git_hooks/README.md
  2. 30
      _git_hooks/pre-commit
  3. 61
      _git_hooks/update
  4. 3
      aesop/apps.py
  5. 7
      aesop/urls.py
  6. 5
      aesop/views.py
  7. 3
      api/apps.py
  8. 12
      api/urls.py
  9. 5
      api/views/__init__.py
  10. 6
      docs/dalsi_soubory.rst
  11. 1
      docs/jak_nahrat_do_flatpage
  12. 25
      galerie/TODO
  13. 2
      galerie/admin.py
  14. 47
      galerie/autocomplete_light_registry.py.old
  15. 2
      galerie/forms.py
  16. 1
      galerie/migrations/0001_initial.py
  17. 1
      galerie/migrations/0002_auto_20151013_1145.py
  18. 1
      galerie/migrations/0003_add_galerie_poradi.py
  19. 1
      galerie/migrations/0004_nepovinna_galerie_u_obrazku.py
  20. 1
      galerie/migrations/0005_obrazek_ordering_datum.py
  21. 1
      galerie/migrations/0006_django_imagekit.py
  22. 1
      galerie/migrations/0007_obrazek_odstranen_datum.py
  23. 1
      galerie/migrations/0008_auto_20190430_2340.py
  24. 1
      galerie/migrations/0009_auto_20190610_2358.py
  25. 2
      galerie/models.py
  26. 9
      galerie/urls.py
  27. 2
      galerie/views.py
  28. 13
      header_fotky/admin.py
  29. 3
      header_fotky/apps.py
  30. 14
      header_fotky/models.py
  31. 11
      korektury/TODO
  32. 11
      korektury/admin.py
  33. 10
      korektury/forms.py
  34. 1
      korektury/migrations/0001_initial.py
  35. 1
      korektury/migrations/0002_auto_20151202_2351.py
  36. 1
      korektury/migrations/0003_auto_20151204_1855.py
  37. 1
      korektury/migrations/0004_auto_20151204_2240.py
  38. 1
      korektury/migrations/0005_auto_20151204_2244.py
  39. 1
      korektury/migrations/0006_oprava_pdf.py
  40. 1
      korektury/migrations/0007_auto_20151225_1237.py
  41. 1
      korektury/migrations/0008_auto_20151229_1556.py
  42. 1
      korektury/migrations/0009_trizeni_korektur_v_seznamu.py
  43. 1
      korektury/migrations/0010_Pridani_odkazu_na_organizatora.py
  44. 1
      korektury/migrations/0011_prevod_autora_z_charField_na_Organizator.py
  45. 1
      korektury/migrations/0012_delete_autor.py
  46. 1
      korektury/migrations/0013_rename_autor_org.py
  47. 1
      korektury/migrations/0014_add_org_to_pdf.py
  48. 1
      korektury/migrations/0015_auto_20161004_2005.py
  49. 1
      korektury/migrations/0016_auto_20190430_2340.py
  50. 1
      korektury/migrations/0017_auto_20190610_2358.py
  51. 14
      korektury/models.py
  52. 3
      korektury/tests.py
  53. 8
      korektury/urls.py
  54. 12
      korektury/views.py
  55. 88
      mamweb/middleware.py
  56. 7
      mamweb/settings_common.py
  57. 3
      mamweb/settings_prod.py
  58. 3
      mamweb/settings_test.py
  59. 15
      mamweb/urls.py
  60. 1
      novinky/apps.py
  61. 3
      novinky/tests.py
  62. 3
      novinky/views.py
  63. 6
      odevzdavatko/admin.py
  64. 3
      odevzdavatko/apps.py
  65. 14
      odevzdavatko/urls.py
  66. 3
      personalni/apps.py
  67. 1
      personalni/models.py
  68. 14
      personalni/urls.py
  69. 1
      prednasky/admin.py
  70. 1
      prednasky/forms.py
  71. 1
      prednasky/migrations/0001_initial.py
  72. 1
      prednasky/migrations/0002_auto_20160417_2347.py
  73. 1
      prednasky/migrations/0003_auto_20160929_0117.py
  74. 1
      prednasky/migrations/0004_remove_prednaska_seznam.py
  75. 1
      prednasky/migrations/0005_auto_20160929_0153.py
  76. 1
      prednasky/migrations/0006_hlasovani_seznam.py
  77. 1
      prednasky/migrations/0007_prednaska_seznamy.py
  78. 1
      prednasky/migrations/0008_auto_20160929_0225.py
  79. 1
      prednasky/migrations/0009_auto_20160929_0354.py
  80. 1
      prednasky/migrations/0010_auto_20160929_0508.py
  81. 1
      prednasky/migrations/0011_auto_20190430_2340.py
  82. 1
      prednasky/migrations/0012_auto_20190610_2358.py
  83. 2
      prednasky/models.py
  84. 3
      prednasky/tests.py
  85. 9
      prednasky/urls.py
  86. 1
      prednasky/views.py
  87. 1
      requirements.txt
  88. 5
      seminar/admin.py
  89. 1
      seminar/apps.py
  90. 2
      seminar/management/commands/load_org_permissions.py
  91. 2
      seminar/management/commands/save_org_permissions.py
  92. 2
      seminar/management/commands/testdata.py
  93. 1
      seminar/migrations/0001_initial.py
  94. 1
      seminar/migrations/0002_add_body_views.py
  95. 1
      seminar/migrations/0003_add_skola_zs_ss.py
  96. 1
      seminar/migrations/0004_add_old_dakos_id.py
  97. 1
      seminar/migrations/0005_alter_problem_autor.py
  98. 1
      seminar/migrations/0006_problem_add_timestamp.py
  99. 1
      seminar/migrations/0007_problem_zamereni.py
  100. 1
      seminar/migrations/0008_reseni_forma.py

16
_git_hooks/README.md

@ -1,16 +0,0 @@
git hooks
=========
Kontrola stylu pythoních zdrojáků pomocí flake8. Kontrolujeme jen změny,
abychom nenutili lidi dělat nesouvisející úpravy, které by rozbíjely historii
(git blame).
pre-commit
----------
* kontrola změn před commitnutím
* instalace: lokálně zkopírovat do .git/hooks (musí být spustitelný)
update
------
* kontrola změn přicházejících s pushem
* instalace: na atreyi zkopírovat do /akce/MaM/MaMweb/mamweb.git/hooks

30
_git_hooks/pre-commit

@ -1,30 +0,0 @@
#!/bin/sh
#
# Git hook script to verify what is about to be committed.
# Checks that the changes don't introduce new flake8 errors.
TMPDIFF=`tempfile`
FLAKE8="`git rev-parse --show-toplevel`/bin/flake8"
status=0
# select only changed python files which are not migrations
changed=`git diff --cached --name-only | grep 'py$' | grep -v 'migrations/[0-9]'`
if [ -z $changed ] ; then
# Nothing to check. Note the exit is necessary -- we would not pass any
# paths to git diff below and it would output the diff unfiltered.
exit 0
fi
git diff --unified=1 --cached HEAD -- $changed > $TMPDIFF
# only do the check when there are some changes to be commited
# otherwise flake8 would hang waiting for input
if [ -s $TMPDIFF ] ; then
cat $TMPDIFF | $FLAKE8 --diff
status=$?
fi
rm -f $TMPDIFF
exit $status

61
_git_hooks/update

@ -1,61 +0,0 @@
#!/bin/sh
# git update hook to check that pushed changes don't introduce new flake8
# errors
# --- Command line
refname="$1"
oldrev="$2"
newrev="$3"
# --- Safety check
if [ -z "$GIT_DIR" ]; then
echo "Don't run this script from the command line." >&2
echo " (if you want, you could supply GIT_DIR then run" >&2
echo " $0 <ref> <oldrev> <newrev>)" >&2
exit 1
fi
if [ -z "$refname" -o -z "$oldrev" -o -z "$newrev" ]; then
echo "usage: $0 <ref> <oldrev> <newrev>" >&2
exit 1
fi
TMPDIR=`mktemp -d`
TMPDIFF=`tempfile`
[ $refname != "refs/heads/master" -a $refname != "refs/heads/stable" ] && exit 0
# select only changed python files which are not migrations
changed=`git diff --name-only $oldrev $newrev | grep 'py$' | grep -v 'migrations/[0-9]'`
if [ -z $changed ] ; then
# Nothing to check. Note the exit is necessary -- we would not pass any
# paths to git diff below and it would output the diff unfiltered.
exit 0
fi
git diff --unified=1 $oldrev $newrev -- $changed >${TMPDIFF}
# there is no working tree in bare git repository, so we recreate it for flake8
git archive $newrev | tar -x -C ${TMPDIR}
cd ${TMPDIR}
# report only errors on lines in diff
# (if threre was flake8 installed on atrey, we could just call flake8)
/akce/MaM/WWW/mamweb-test/bin/flake8 --diff <${TMPDIFF}
status=$?
if [ $status != 0 ] ; then
echo
echo -n "Změny, které se snažíte pushnout, obsahují kód v pythonu "
echo -n "nevyhovující flake8 (viz výše). Opravte je a zkuste to znovu. "
echo -n "Nezapomeňte, že můžete editovat historii (git commit --amend, "
echo -n "git rebase -i). Pokud byste chybu příště raději odhalili už při "
echo "commitu, zkopírujte si pre-commit hook z _git_hooks do .git/hooks."
echo
fi
rm -rf ${TMPDIR}
rm -f ${TMPDIFF}
exit $status

3
aesop/apps.py

@ -1,6 +1,3 @@
"""
Soubor sloužící k pojmenování a jiným nastavením djangovské aplikace.
"""
from django.apps import AppConfig
class AesopConfig(AppConfig):

7
aesop/urls.py

@ -1,10 +1,3 @@
"""
Soubor sloužící jako router, tj. zde se definují url adresy a na co ukazují:
- ``aesop-export/mam-rocnik-<int:prvni_rok>.csv`` (seminar_export_rocnik) :class:`~aesop.views.ExportRocnikView`
- ``aesop-export/mam-sous-<str:datum_zacatku>.csv`` (seminar_export_sous) :class:`~aesop.views.ExportSousView`
- ``aesop-export/index.csv`` (seminar_export_index) :class:`~aesop.views.ExportIndexView`
"""
from django.urls import path
from aesop import views

5
aesop/views.py

@ -1,8 +1,3 @@
"""
Soubor sloužící k deklaraci jednotlivých views (nejčastěji funkce beroucí request
a vracející :func:`django.shortcuts.render` respektive nějakou response, nebo
třídy většinou rozšiřující nějakou třídu z :mod:`django.views.generic`)
"""
import django
from django.shortcuts import get_object_or_404
from django.http import HttpResponse

3
api/apps.py

@ -1,6 +1,3 @@
"""
Soubor sloužící k pojmenování a jiným nastavením djangovské aplikace.
"""
from django.apps import AppConfig

12
api/urls.py

@ -1,15 +1,3 @@
"""
Soubor sloužící jako router, tj. zde se definují url adresy a na co ukazují:
- ``api/expor/skoly/`` (export_skoly) :func:`~api.views.exports.exportSkolView`
- ``api/autocomplete/skola/`` (autocomplete_skola) :class:`~api.views.autocomplete.SkolaAutocomplete`
- ``api/autocomplete/resitel/`` (autocomplete_resitel) :class:`~api.views.autocomplete.ResitelAutocomplete`
- ``api/autocomplete/problem/odevzdatelny`` (autocomplete_problem_odevzdatelny) :class:`~api.views.autocomplete.OdevzdatelnyProblemAutocomplete`
Na autocomplete v3 čeká:
- ``autocomplete/organizatori/`` (seminar_autocomplete_organizator) :class:`~api.views.autocomplete.OrganizatorAutocomplete`
"""
from django.urls import path
from . import views
from seminar.utils import org_required

5
api/views/__init__.py

@ -1,7 +1,2 @@
"""
Soubory sloužící k deklaraci jednotlivých views (nejčastěji funkce beroucí request
a vracející :func:`django.shortcuts.render` respektive nějakou response, nebo
třídy většinou rozšiřující nějakou třídu z :mod:`django.views.generic`)
"""
from .autocomplete import *
from .exports import *

6
docs/dalsi_soubory.rst

@ -9,12 +9,6 @@ static
------
Složka, kam django nakopíruje všechno ze složek static a pak na to z templatů / kódu jde ukazovat pomocí ``static``.
_git_hooks
----------
Hooky do gitu pro kontrolu Pythoního stylu. Především ``flake8``.
Zbylo tu z minulosti mamwebu.
data
----
Obsahuje data, která patří do databáze, ale jsou přímo součástí webu jako

1
ilustrace_odmeny/jak_nahrat_do_flatpage → docs/jak_nahrat_do_flatpage

@ -1,3 +1,4 @@
FIXME přepsat do rst, přidat i další věci a případně přesunout na wiki
Přidání obrázků do odměn:
admin -> flatpage odměn -> ikona přidat obrázek
záložka odeslat, vybrat obrázek, odeslat

25
galerie/TODO

@ -1,25 +0,0 @@
========
| TODO |
|======|
Aktualni
* co s titulni fotkou
* do CSS
* nahledy
* nastylovat tabulku s nahledy
* komentare uz na nahledy?
* detail
* nahledy pred a po
* opravit prechodove sipky
* vyrobit prechodove sipky ve M&M-stylu
Dlouhodobe
* sipky na prechazeni mezi fotkami
* hromadne PRIDANI fotek do jiz existujici galerie
Fylozoficke
* zvolit velikosti velke a male fotky
* je potreba i jine razeni nez automaticky podle casu nebo staci podgalerie?
* napr. dve hry na dvou ruznych mistech ve stejny cas
* fotky od ucastniku ze hry (skupinky se pohybuji ve stejny cas, ale maji sled fotek) -- nestaci to pripadne vrazit do podgalerii?

2
galerie/admin.py

@ -1,5 +1,3 @@
#coding: utf-8
from galerie.models import Obrazek, Galerie
from django.contrib import admin
from django.http import HttpResponseRedirect

47
galerie/autocomplete_light_registry.py.old

@ -1,47 +0,0 @@
# -*- coding: utf-8 -*-
from autocomplete_light import shortcuts as autocomplete_light
from .models import Obrazek, Galerie
from .views import cesta_od_korene
class ObrazekAutocomplete(autocomplete_light.AutocompleteModelBase):
model = Obrazek
search_fields = ['nazev', 'popis']
split_words = True
limit_choices = 15
attrs = {
# This will set the input placeholder attribute:
'placeholder': u'Obrázek',
# This will set the yourlabs.Autocomplete.minimumCharacters
# options, the naming conversion is handled by jQuery
'data-autocomplete-minimum-characters': 1,
}
choice_html_format = '''
<span class="block" data-value="{}">
<span class="block">
{}
<span class="block">{}</span>
</span>
</span>
'''
def choice_label(self, obrazek):
cesta = "/".join(g.nazev for g in cesta_od_korene(obrazek.galerie))
popis = "{}<br>".format(obrazek.popis) if obrazek.popis else ""
return '{}<br>{}{}'.format(obrazek.nazev, popis, cesta)
def choice_html(self, obrazek):
"""Vrátí kus html i s obrázkem, které se pak ukazuje v nabídce"""
return self.choice_html_format.format(self.choice_value(obrazek),
obrazek.obrazek_maly_tag(), self.choice_label(obrazek))
widget_attrs={
'data-widget-maximum-values': 15,
'class': 'modern-style',
}
autocomplete_light.register(ObrazekAutocomplete)

2
galerie/forms.py

@ -1,5 +1,3 @@
#coding: utf-8
from django import forms
class KomentarForm(forms.Form):

1
galerie/migrations/0001_initial.py

@ -1,4 +1,3 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models, migrations

1
galerie/migrations/0002_auto_20151013_1145.py

@ -1,4 +1,3 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models, migrations

1
galerie/migrations/0003_add_galerie_poradi.py

@ -1,4 +1,3 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models, migrations

1
galerie/migrations/0004_nepovinna_galerie_u_obrazku.py

@ -1,4 +1,3 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models, migrations

1
galerie/migrations/0005_obrazek_ordering_datum.py

@ -1,4 +1,3 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models, migrations

1
galerie/migrations/0006_django_imagekit.py

@ -1,4 +1,3 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models, migrations

1
galerie/migrations/0007_obrazek_odstranen_datum.py

@ -1,4 +1,3 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models, migrations

1
galerie/migrations/0008_auto_20190430_2340.py

@ -1,4 +1,3 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.20 on 2019-04-30 21:40
from __future__ import unicode_literals

1
galerie/migrations/0009_auto_20190610_2358.py

@ -1,4 +1,3 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.21 on 2019-06-10 21:58
from __future__ import unicode_literals

2
galerie/models.py

@ -1,5 +1,3 @@
# coding: utf-8
from django.db import models
#from django.db.models import Q
from imagekit.models import ImageSpecField

9
galerie/urls.py

@ -1,12 +1,3 @@
"""
Soubor sloužící jako router, tj. zde se definují url adresy a na co ukazují:
- ``<int:pk>/`` :func:`~galerie.views.nahled`
- ``<int:pk>/<int:fotka>/`` :func:`~galerie.views.detail`
- ``<int:galerie>/new/`` :func:`~galerie.views.new_galerie`
- ``<int:galerie>/plus/<int:subgalerie>/`` :func:`~galerie.views.plus_galerie`
- ``<int:galerie>/minus/<int:subgalerie>/`` :func:`~galerie.views.minus_galerie`
"""
from django.urls import path
from seminar.utils import org_required
from . import views

2
galerie/views.py

@ -1,5 +1,3 @@
# coding: utf-8
import random
from django.http import HttpResponse, Http404

13
header_fotky/admin.py

@ -1,14 +1,3 @@
"""
Soubor sloužící k definici toho, co bude v adminu. Většinou pouhým zavoláním
funkce :func:`django.contrib.admin.site.register`, v případě, že chceme něco
upravit, tak jako třída rozšiřující :class:`django.contrib.admin.ModelAdmin`
s dekorátorem :func:`django.contrib.admin.register`.
Zde se definuje admin pro:
- :class:`~header_fotky.models.FotkaHeader`
- :class:`~header_fotky.models.FotkaUrlVazba`
"""
from django.contrib import admin
from django.contrib.admin import ModelAdmin
import header_fotky.models as m
@ -22,4 +11,4 @@ class FotkaPozadiAdmin(ModelAdmin):
readonly_fields = ['cas']
admin.site.register(m.FotkaHeader, FotkaPozadiAdmin)
admin.site.register(m.FotkaUrlVazba)
admin.site.register(m.FotkaUrlVazba)

3
header_fotky/apps.py

@ -1,6 +1,3 @@
"""
Soubor sloužící k pojmenování a jiným nastavením djangovské aplikace.
"""
from django.apps import AppConfig

14
header_fotky/models.py

@ -1,17 +1,3 @@
"""
Tento soubor slouží k definici databázového modelu.
Třídy rozšiřují většinou :class:`django.db.models.Model` a jejich atributy jsou
většinou sloupce v databázi (tj. nastaví se na hodnotu něčeho z :mod:`django.db.models`).
Na výběr jsou:
- :class:`django.db.models.TextField`
- :class:`django.db.models.ForeignKey`
- :class:`django.db.models.DateField`
- :class:`django.db.models.DateTimeField`
- :class:`django.db.models.ImageField`
- :class:`django.db.models.CharField`
"""
from django.core.exceptions import ValidationError
from django.db import models
from django.utils import timezone

11
korektury/TODO

@ -1,11 +0,0 @@
- korektura potrebuje reakci
+ komentáře fixně na username
- používat skutečné jméno?
- vyžádat pozornost autora obsahu
- zvednout upload limit na 5MB
- sbalit a rozbalit korekturu
- nahrávání jiných věcí než PDF - kontrolovat?
- stylování
- seznam PDF - co zobrazovat?

11
korektury/admin.py

@ -1,13 +1,3 @@
"""
Soubor sloužící k definici toho, co bude v adminu. Většinou pouhým zavoláním
funkce :func:`django.contrib.admin.site.register`, v případě, že chceme něco
upravit, tak jako třída rozšiřující :class:`django.contrib.admin.ModelAdmin`
s dekorátorem :func:`django.contrib.admin.register`.
Zde se definuje admin pro:
- :class:`korektury.models.KorekturovanePDF`
"""
from django.contrib import admin
from reversion.admin import VersionAdmin
from korektury.models import KorekturovanePDF
@ -15,7 +5,6 @@ from korektury.models import KorekturovanePDF
from django.core.mail import EmailMessage
from django.urls import reverse
# Register your models here.
class KorekturovanePDFAdmin(VersionAdmin):
"""
nastaví čas vložení (:attr:`~koretkury.models.KorekturovanePDF.cas`) a počet

10
korektury/forms.py

@ -1,13 +1,3 @@
"""
Formuláře (:class:`django.forms.Form`) umožňují jednoduchou tvorbu formulářů,
které lze pak jednoduše dát do frontendu i zpracovat na backendu.
Pro přidání políčka do formuláře je potřeba
- mít v modelu tu položku, kterou chci upravovat
- přidat do views (prihlaskaView, resitelEditView)
- přidat do forms
- includovat do html
"""
from django import forms
class OpravaForm(forms.Form):

1
korektury/migrations/0001_initial.py

@ -1,4 +1,3 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models, migrations

1
korektury/migrations/0002_auto_20151202_2351.py

@ -1,4 +1,3 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models, migrations

1
korektury/migrations/0003_auto_20151204_1855.py

@ -1,4 +1,3 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models, migrations

1
korektury/migrations/0004_auto_20151204_2240.py

@ -1,4 +1,3 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models, migrations

1
korektury/migrations/0005_auto_20151204_2244.py

@ -1,4 +1,3 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models, migrations

1
korektury/migrations/0006_oprava_pdf.py

@ -1,4 +1,3 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models, migrations

1
korektury/migrations/0007_auto_20151225_1237.py

@ -1,4 +1,3 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models, migrations

1
korektury/migrations/0008_auto_20151229_1556.py

@ -1,4 +1,3 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models, migrations

1
korektury/migrations/0009_trizeni_korektur_v_seznamu.py

@ -1,4 +1,3 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations, models

1
korektury/migrations/0010_Pridani_odkazu_na_organizatora.py

@ -1,4 +1,3 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations, models

1
korektury/migrations/0011_prevod_autora_z_charField_na_Organizator.py

@ -1,4 +1,3 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations, models

1
korektury/migrations/0012_delete_autor.py

@ -1,4 +1,3 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations, models

1
korektury/migrations/0013_rename_autor_org.py

@ -1,4 +1,3 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations, models

1
korektury/migrations/0014_add_org_to_pdf.py

@ -1,4 +1,3 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations, models

1
korektury/migrations/0015_auto_20161004_2005.py

@ -1,4 +1,3 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations, models

1
korektury/migrations/0016_auto_20190430_2340.py

@ -1,4 +1,3 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.20 on 2019-04-30 21:40
from __future__ import unicode_literals

1
korektury/migrations/0017_auto_20190610_2358.py

@ -1,4 +1,3 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.21 on 2019-06-10 21:58
from __future__ import unicode_literals

14
korektury/models.py

@ -1,17 +1,3 @@
"""
Tento soubor slouží k definici databázového modelu.
Třídy rozšiřují většinou :class:`django.db.models.Model` a jejich atributy jsou
většinou sloupce v databázi (tj. nastaví se na hodnotu něčeho z :mod:`django.db.models`).
Na výběr jsou:
- :class:`django.db.models.TextField`
- :class:`django.db.models.ForeignKey`
- :class:`django.db.models.DateField`
- :class:`django.db.models.DateTimeField`
- :class:`django.db.models.ImageField`
- :class:`django.db.models.CharField`
"""
import os
from django.db import models
from django.utils import timezone

3
korektury/tests.py

@ -1,3 +0,0 @@
from django.test import TestCase
# Create your tests here.

8
korektury/urls.py

@ -1,11 +1,3 @@
"""
Soubor sloužící jako router, tj. zde se definují url adresy a na co ukazují:
- ``korektury/`` (korektury_list) :class:`~korektury.views.KorekturySeskupeneListView`
- ``korektury/neseskupene/`` (korektury_neseskupene_list) :class:`~korektury.views.KorekturyAktualniListView`
- ``korektury/zastarale/`` (korektury_stare_list) :class:`~korektury.views.KorekturyZastaraleListView`
- ``korektury/<int:pdf>/`` (korektury) :class:`~korektury.views.KorekturyView`
"""
from django.urls import path
from seminar.utils import org_required
from . import views

12
korektury/views.py

@ -1,8 +1,3 @@
"""
Soubor sloužící k deklaraci jednotlivých views (nejčastěji funkce beroucí request
a vracející :func:`django.shortcuts.render` respektive nějakou response, nebo
třídy většinou rozšiřující nějakou třídu z :mod:`django.views.generic`)
"""
from django.shortcuts import get_object_or_404, render
from django.views import generic
from django.conf import settings
@ -199,13 +194,6 @@ class KorekturyView(generic.TemplateView):
if email:
emails.discard(email)
if not settings.POSLI_MAILOVOU_NOTIFIKACI:
print("Poslal bych upozornění na tyto adresy: ", " ".join(emails))
print("---- Upozornění:")
print(text)
print("---- Konec upozornění")
return
EmailMessage(
subject=subject,
body=text,

88
mamweb/middleware.py

@ -1,88 +0,0 @@
from datetime import datetime, date
from django.conf import settings
from django.http import HttpResponse, HttpResponseRedirect
class LoggedInHintCookieMiddleware(object):
"""Middleware to securely help with 'logged-in' detection for dual HTTP/HTTPS sites.
On insecure requests: Checks for a (non-secure) cookie settings.LOGGED_IN_HINT_COOKIE_NAME
and if present, redirects to HTTPS (same adress).
Note this usually breaks non-GET (POST) requests.
On secure requests: Updates cookie settings.LOGGED_IN_HINT_COOKIE_NAME to reflect
whether an user is logged in in the current session (cookie set to 'True' or cleared).
The cookie is set to expire at the same time as the sessionid cookie.
By default, LOGGED_IN_HINT_COOKIE_NAME = 'logged_in_hint'.
"""
def __init__(self):
if hasattr(settings, 'LOGGED_IN_HINT_COOKIE_NAME'):
self.cookie_name = settings.LOGGED_IN_HINT_COOKIE_NAME
else: self.cookie_name = 'logged_in_hint'
self.cookie_value = 'True'
def cookie_correct(self, request):
return self.cookie_name in request.COOKIES and request.COOKIES[self.cookie_name] == self.cookie_value
def process_request(self, request):
if not request.is_secure():
if self.cookie_correct(request):
# redirect insecure (assuming http) requests with hint cookie to https
url = request.build_absolute_uri()
assert url[:5] == 'http:'
return HttpResponseRedirect('https:' + url[5:])
return None
def process_response(self, request, response):
if request.is_secure():
# assuming full session info (as the conn. is secure)
try:
user = request.user
except AttributeError: # no user - ajax or other special request
return response
if user.is_authenticated():
if not self.cookie_correct(request):
expiry = None if request.session.get_expire_at_browser_close() else request.session.get_expiry_date()
response.set_cookie(self.cookie_name, value=self.cookie_value, expires=expiry, secure=False)
else:
if self.cookie_name in request.COOKIES:
response.delete_cookie(self.cookie_name)
return response
class vzhled:
def process_request(self, request):
return None
def process_view(self, request, view_func, view_args, view_kwargs):
#print "====== process_request ======"
#print view_func
#print view_args
#print view_kwargs
#print "============================="
return None
def process_template_response(self, request, response):
hodin = datetime.now().hour
if (hodin <= 6) or (hodin >= 14): # TODO 20
response.context_data['noc'] = True
else:
response.context_data['noc'] = False
return response
def process_response(self, request, response):
#hodin = datetime.now().hour
#if (hodin <= 6) or (hodin >= 14): # TODO 20
#response.context_data['noc'] = True
#else:
#response.context_data['noc'] = False
return response
##def process_exception(request, exception):
#pass

7
mamweb/settings_common.py

@ -68,9 +68,6 @@ MIDDLEWARE = (
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
# FIXME: rozbilo se při přechodu na Django 2.0, nevím, jestli
# se to dá zahodit bez náhrady
# 'mamweb.middleware.LoggedInHintCookieMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
@ -345,10 +342,6 @@ KOREKTURY_IMG_DIR = os.path.join('korektury', 'img')
CISLO_IMG_DIR = os.path.join('cislo', 'img')
# E-MAIL NOTIFICATIONS
POSLI_MAILOVOU_NOTIFIKACI = False
# Logování chyb
class InvalidTemplateVariable(str):

3
mamweb/settings_prod.py

@ -1,5 +1,3 @@
# -*- coding: utf-8 -*-
import os.path
#
@ -70,5 +68,4 @@ LOGGING['handlers']['registration_error_log']['filename'] = '/home/mam-web/logs/
# E-MAIL NOTIFICATIONS
POSLI_MAILOVOU_NOTIFIKACI = True
LOCAL_TEST_PROD = "prod"

3
mamweb/settings_test.py

@ -1,5 +1,3 @@
# -*- coding: utf-8 -*-
import os.path
#
@ -74,7 +72,6 @@ LOGGING['handlers']['registration_error_log']['filename'] = '/home/mam-web/logs/
FILE_UPLOAD_PERMISSIONS = 0o440
# Testování e-mailů
POSLI_MAILOVOU_NOTIFIKACI = True
EMAIL_BACKEND = 'various.mail_prefixer.PrefixingMailBackend'
# TODO Pouze na otestování testu… Zvolit konferu!
# XXX: Je to pole, protože implementační detail backendu.

15
mamweb/urls.py

@ -1,18 +1,5 @@
"""
Soubor sloužící jako základní router, tj. zde se includují veškeré ostatní urls:
- ``admin/`` :mod:`django.contrib.admin.site.urls`
- ``ckeditor/`` :mod:`ckeditor_uploader.urls`
- :mod:`seminar.urls`
- :mod:`odevzdavatko.urls`
- :mod:`korektury.urls`
- :mod:`prednasky.urls`
- :mod:`soustredeni.urls`
- :mod:`personalni.urls`
- :mod:`various.autentizace.urls`
- :mod:`api.urls`
- :mod:`treenode.urls`
- :mod:`aesop.urls`
Soubor sloužící jako základní router, tj. zde se includují veškeré ostatní urls.
"""
from django.urls import path, include
from django.contrib.staticfiles.urls import staticfiles_urlpatterns

1
novinky/apps.py

@ -1,6 +1,5 @@
from django.apps import AppConfig
class NovinkyConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'novinky'
verbose_name = 'Novinky'

3
novinky/tests.py

@ -1,3 +0,0 @@
from django.test import TestCase
# Create your tests here.

3
novinky/views.py

@ -1,3 +0,0 @@
from django.shortcuts import render
# Create your views here.

6
odevzdavatko/admin.py

@ -1,9 +1,3 @@
"""
Soubor sloužící k definici toho, co bude v adminu. Většinou pouhým zavoláním
funkce :func:`django.contrib.admin.site.register`, v případě, že chceme něco
upravit, tak jako třída rozšiřující :class:`django.contrib.admin.ModelAdmin`
s dekorátorem :func:`django.contrib.admin.register`.
"""
from django.contrib import admin
from django_reverse_admin import ReverseModelAdmin
import seminar.models as m

3
odevzdavatko/apps.py

@ -1,6 +1,3 @@
"""
Soubor sloužící k pojmenování a jiným nastavením djangovské aplikace.
"""
from django.apps import AppConfig

14
odevzdavatko/urls.py

@ -1,17 +1,3 @@
"""
Soubor sloužící jako router, tj. zde se definují url adresy a na co ukazují:
- ``org/add_solution`` (seminar_vloz_reseni) :class:`~odevzdavatko.views.PosliReseniView`
- ``resitel/nahraj_reseni`` (seminar_nahraj_reseni) :class:`~odevzdavatko.views.NahrajReseniView`
- ``resitel/odevzdana_reseni/`` (seminar_resitel_odevzdana_reseni) :class:`~odevzdavatko.views.PrehledOdevzdanychReseni`
- ``org/reseni/`` (odevzdavatko_tabulka) :class:`~odevzdavatko.views.TabulkaOdevzdanychReseniView`
- ``org/reseni/rocnik/<int:rocnik>/`` (odevzdavatko_tabulka) :class:`~odevzdavatko.views.TabulkaOdevzdanychReseniView`
- ``org/reseni/<int:problem>/<int:resitel>/`` (odevzdavatko_reseni_resitele_k_problemu) :class:`~odevzdavatko.views.ReseniProblemuView`
- ``org/reseni/<int:pk>/`` (odevzdavatko_detail_reseni) :func:`~seminar.utils.viewMethodSwitch` + :class:`~odevzdavatko.views.DetailReseniView` + :func:`~odevzdavatko.views.hodnoceniReseniView`
- ``org/reseni/all`` :class:`~odevzdavatko.views.SeznamReseniView`
- ``org/reseni/akt`` :class:`~odevzdavatko.views.TabulkaOdevzdanychReseniView`
- ``resitel/reseni/<int:pk>`` (odevzdavatko_resitel_reseni) :class:`~odevzdavatko.views.ResitelReseniView`
"""
from django.urls import path
from seminar.utils import org_required, resitel_required, viewMethodSwitch, \

3
personalni/apps.py

@ -1,6 +1,3 @@
"""
Soubor sloužící k pojmenování a jiným nastavením djangovské aplikace.
"""
from django.apps import AppConfig

1
personalni/models.py

@ -1,4 +1,3 @@
# -*- coding: utf-8 -*-
import logging
from django.db import models

14
personalni/urls.py

@ -1,17 +1,3 @@
"""
Soubor sloužící jako router, tj. zde se definují url adresy a na co ukazují:
- ``org/add_solution`` (seminar_vloz_reseni) :class:`~odevzdavatko.views.PosliReseniView`
- ``resitel/nahraj_reseni`` (seminar_nahraj_reseni) :class:`~odevzdavatko.views.NahrajReseniView`
- ``resitel/odevzdana_reseni/`` (seminar_resitel_odevzdana_reseni) :class:`~odevzdavatko.views.PrehledOdevzdanychReseni`
- ``org/reseni/`` (odevzdavatko_tabulka) :class:`~odevzdavatko.views.TabulkaOdevzdanychReseniView`
- ``org/reseni/rocnik/<int:rocnik>/`` (odevzdavatko_tabulka) :class:`~odevzdavatko.views.TabulkaOdevzdanychReseniView`
- ``org/reseni/<int:problem>/<int:resitel>/`` (odevzdavatko_reseni_resitele_k_problemu) :class:`~odevzdavatko.views.ReseniProblemuView`
- ``org/reseni/<int:pk>/`` (odevzdavatko_detail_reseni) :func:`~seminar.utils.viewMethodSwitch` + :class:`~odevzdavatko.views.DetailReseniView` + :func:`~odevzdavatko.views.hodnoceniReseniView`
- ``org/reseni/all`` :class:`~odevzdavatko.views.SeznamReseniView`
- ``org/reseni/akt`` :class:`~odevzdavatko.views.TabulkaOdevzdanychReseniView`
- ``resitel/reseni/<int:pk>`` (odevzdavatko_resitel_reseni) :class:`~odevzdavatko.views.ResitelReseniView`
"""
from django.urls import path
from django.contrib.auth.decorators import login_required
from . import views

1
prednasky/admin.py

@ -1,4 +1,3 @@
# -*- coding: utf-8 -*-
from django.contrib import admin
from django.contrib import messages
from reversion.admin import VersionAdmin

1
prednasky/forms.py

@ -1,4 +1,3 @@
# coding: utf-8
from django import forms
class NewPrednaskyForm(forms.Form):

1
prednasky/migrations/0001_initial.py

@ -1,4 +1,3 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations, models

1
prednasky/migrations/0002_auto_20160417_2347.py

@ -1,4 +1,3 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations, models

1
prednasky/migrations/0003_auto_20160929_0117.py

@ -1,4 +1,3 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations, models

1
prednasky/migrations/0004_remove_prednaska_seznam.py

@ -1,4 +1,3 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations, models

1
prednasky/migrations/0005_auto_20160929_0153.py

@ -1,4 +1,3 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations, models

1
prednasky/migrations/0006_hlasovani_seznam.py

@ -1,4 +1,3 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations, models

1
prednasky/migrations/0007_prednaska_seznamy.py

@ -1,4 +1,3 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations, models

1
prednasky/migrations/0008_auto_20160929_0225.py

@ -1,4 +1,3 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations, models

1
prednasky/migrations/0009_auto_20160929_0354.py

@ -1,4 +1,3 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations, models

1
prednasky/migrations/0010_auto_20160929_0508.py

@ -1,4 +1,3 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations, models

1
prednasky/migrations/0011_auto_20190430_2340.py

@ -1,4 +1,3 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.20 on 2019-04-30 21:40
from __future__ import unicode_literals

1
prednasky/migrations/0012_auto_20190610_2358.py

@ -1,4 +1,3 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.21 on 2019-06-10 21:58
from __future__ import unicode_literals

2
prednasky/models.py

@ -1,5 +1,3 @@
# -*- coding: utf-8 -*-
from django.db import models
from soustredeni.models import Soustredeni

3
prednasky/tests.py

@ -1,3 +0,0 @@
from django.test import TestCase
# Create your tests here.

9
prednasky/urls.py

@ -1,12 +1,3 @@
"""
Soubor sloužící jako router, tj. zde se definují url adresy a na co ukazují:
- ``prednasky/`` :func:`~prednasky.views.newPrednaska`
- ``prednasky/hotovo`` :func:`~prednasky.views.Prednaska_hotovo`
- ``prednasky/metaseznam_prednasek`` (metaseznam-list) :class:`~prednasky.views.MetaSeznamListView`
- ``prednasky/seznam_prednasek/<int:seznam>/export`` (seznam-export) :func:`~prednasky.views.SeznamExportView`
- ``prednasky/seznam_prednasek/<int:seznam>/`` (seznam-list) :class:`~prednasky.views.SeznamListView`
"""
from django.urls import path
from seminar.utils import org_required, resitel_or_org_required
from . import views

1
prednasky/views.py

@ -1,4 +1,3 @@
# -*- coding: utf-8 -*-
from django.shortcuts import render, get_object_or_404
from django.views import generic
from django.shortcuts import HttpResponseRedirect

1
requirements.txt

@ -1,4 +1,3 @@
# -*- coding: utf-8 -*-
-c constraints.txt
# basic libs

5
seminar/admin.py

@ -178,11 +178,6 @@ class TextAdminInline(admin.TabularInline):
admin.site.register(m.Text)
class ResitelInline(admin.TabularInline):
model = m.Resitel
extra = 1
# admin.site.register(m.Pohadka)
admin.site.register(m.Obrazek)
admin.site.register(m.Nastaveni, SingletonModelAdmin)

1
seminar/apps.py

@ -1,7 +1,6 @@
from django.apps import AppConfig
class SeminarConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'seminar'
verbose_name = 'Seminář'

2
seminar/management/commands/load_org_permissions.py

@ -1,5 +1,3 @@
# -*- coding: utf-8 -*-
from django.core.management.base import BaseCommand
from django.contrib.sessions.models import Session
from django.contrib.auth.models import Group, Permission

2
seminar/management/commands/save_org_permissions.py

@ -1,5 +1,3 @@
# -*- coding: utf-8 -*-
from django.core.management.base import BaseCommand
from django.contrib.sessions.models import Session
from django.contrib.auth.models import Group, Permission

2
seminar/management/commands/testdata.py

@ -1,5 +1,3 @@
# -*- coding: utf-8 -*-
import datetime
import os
import random

1
seminar/migrations/0001_initial.py

@ -1,4 +1,3 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models, migrations

1
seminar/migrations/0002_add_body_views.py

@ -1,4 +1,3 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models, migrations

1
seminar/migrations/0003_add_skola_zs_ss.py

@ -1,4 +1,3 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models, migrations

1
seminar/migrations/0004_add_old_dakos_id.py

@ -1,4 +1,3 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models, migrations

1
seminar/migrations/0005_alter_problem_autor.py

@ -1,4 +1,3 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models, migrations

1
seminar/migrations/0006_problem_add_timestamp.py

@ -1,4 +1,3 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models, migrations

1
seminar/migrations/0007_problem_zamereni.py

@ -1,4 +1,3 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models, migrations

1
seminar/migrations/0008_reseni_forma.py

@ -1,4 +1,3 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models, migrations

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save