Merge branch 'refs/heads/master' into split_sous
This commit is contained in:
		
						commit
						b41b912aa4
					
				
					 178 changed files with 3 additions and 741 deletions
				
			
		|  | @ -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 |  | ||||||
|  | @ -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 |  | ||||||
|  | @ -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 |  | ||||||
|  | @ -1,6 +1,3 @@ | ||||||
| """ |  | ||||||
| Soubor sloužící k pojmenování a jiným nastavením djangovské aplikace. |  | ||||||
| """ |  | ||||||
| from django.apps import AppConfig | from django.apps import AppConfig | ||||||
| 
 | 
 | ||||||
| class AesopConfig(AppConfig): | class AesopConfig(AppConfig): | ||||||
|  |  | ||||||
|  | @ -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 django.urls import path | ||||||
| from aesop import views | from aesop import views | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -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 | import django | ||||||
| from django.shortcuts import get_object_or_404 | from django.shortcuts import get_object_or_404 | ||||||
| from django.http import HttpResponse | from django.http import HttpResponse | ||||||
|  |  | ||||||
|  | @ -1,6 +1,3 @@ | ||||||
| """ |  | ||||||
| Soubor sloužící k pojmenování a jiným nastavením djangovské aplikace. |  | ||||||
| """ |  | ||||||
| from django.apps import AppConfig | from django.apps import AppConfig | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
							
								
								
									
										12
									
								
								api/urls.py
									
									
									
									
									
								
							
							
						
						
									
										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 django.urls import path | ||||||
| from . import views | from . import views | ||||||
| from seminar.utils import org_required | from seminar.utils import org_required | ||||||
|  |  | ||||||
|  | @ -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 .autocomplete import * | ||||||
| from .exports import * | from .exports import * | ||||||
|  |  | ||||||
|  | @ -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``. | 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 | data | ||||||
| ---- | ---- | ||||||
| Obsahuje data, která patří do databáze, ale jsou přímo součástí webu jako | Obsahuje data, která patří do databáze, ale jsou přímo součástí webu jako | ||||||
|  |  | ||||||
|  | @ -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: | Přidání obrázků do odměn: | ||||||
| admin -> flatpage odměn -> ikona přidat obrázek | admin -> flatpage odměn -> ikona přidat obrázek | ||||||
| záložka odeslat, vybrat obrázek, odeslat | záložka odeslat, vybrat obrázek, odeslat | ||||||
							
								
								
									
										25
									
								
								galerie/TODO
									
									
									
									
									
								
							
							
						
						
									
										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? |  | ||||||
| 
 |  | ||||||
|  | @ -1,5 +1,3 @@ | ||||||
| #coding: utf-8 |  | ||||||
| 
 |  | ||||||
| from galerie.models import Obrazek, Galerie | from galerie.models import Obrazek, Galerie | ||||||
| from django.contrib import admin | from django.contrib import admin | ||||||
| from django.http import HttpResponseRedirect | from django.http import HttpResponseRedirect | ||||||
|  |  | ||||||
|  | @ -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) |  | ||||||
|  | @ -1,5 +1,3 @@ | ||||||
| #coding: utf-8 |  | ||||||
| 
 |  | ||||||
| from django import forms | from django import forms | ||||||
| 
 | 
 | ||||||
| class KomentarForm(forms.Form): | class KomentarForm(forms.Form): | ||||||
|  |  | ||||||
|  | @ -1,4 +1,3 @@ | ||||||
| # -*- coding: utf-8 -*- |  | ||||||
| from __future__ import unicode_literals | from __future__ import unicode_literals | ||||||
| 
 | 
 | ||||||
| from django.db import models, migrations | from django.db import models, migrations | ||||||
|  |  | ||||||
|  | @ -1,4 +1,3 @@ | ||||||
| # -*- coding: utf-8 -*- |  | ||||||
| from __future__ import unicode_literals | from __future__ import unicode_literals | ||||||
| 
 | 
 | ||||||
| from django.db import models, migrations | from django.db import models, migrations | ||||||
|  |  | ||||||
|  | @ -1,4 +1,3 @@ | ||||||
| # -*- coding: utf-8 -*- |  | ||||||
| from __future__ import unicode_literals | from __future__ import unicode_literals | ||||||
| 
 | 
 | ||||||
| from django.db import models, migrations | from django.db import models, migrations | ||||||
|  |  | ||||||
|  | @ -1,4 +1,3 @@ | ||||||
| # -*- coding: utf-8 -*- |  | ||||||
| from __future__ import unicode_literals | from __future__ import unicode_literals | ||||||
| 
 | 
 | ||||||
| from django.db import models, migrations | from django.db import models, migrations | ||||||
|  |  | ||||||
|  | @ -1,4 +1,3 @@ | ||||||
| # -*- coding: utf-8 -*- |  | ||||||
| from __future__ import unicode_literals | from __future__ import unicode_literals | ||||||
| 
 | 
 | ||||||
| from django.db import models, migrations | from django.db import models, migrations | ||||||
|  |  | ||||||
|  | @ -1,4 +1,3 @@ | ||||||
| # -*- coding: utf-8 -*- |  | ||||||
| from __future__ import unicode_literals | from __future__ import unicode_literals | ||||||
| 
 | 
 | ||||||
| from django.db import models, migrations | from django.db import models, migrations | ||||||
|  |  | ||||||
|  | @ -1,4 +1,3 @@ | ||||||
| # -*- coding: utf-8 -*- |  | ||||||
| from __future__ import unicode_literals | from __future__ import unicode_literals | ||||||
| 
 | 
 | ||||||
| from django.db import models, migrations | from django.db import models, migrations | ||||||
|  |  | ||||||
|  | @ -1,4 +1,3 @@ | ||||||
| # -*- coding: utf-8 -*- |  | ||||||
| # Generated by Django 1.11.20 on 2019-04-30 21:40 | # Generated by Django 1.11.20 on 2019-04-30 21:40 | ||||||
| from __future__ import unicode_literals | from __future__ import unicode_literals | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -1,4 +1,3 @@ | ||||||
| # -*- coding: utf-8 -*- |  | ||||||
| # Generated by Django 1.11.21 on 2019-06-10 21:58 | # Generated by Django 1.11.21 on 2019-06-10 21:58 | ||||||
| from __future__ import unicode_literals | from __future__ import unicode_literals | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -1,5 +1,3 @@ | ||||||
| # coding: utf-8 |  | ||||||
| 
 |  | ||||||
| from django.db import models | from django.db import models | ||||||
| #from django.db.models import Q | #from django.db.models import Q | ||||||
| from imagekit.models import ImageSpecField | from imagekit.models import ImageSpecField | ||||||
|  |  | ||||||
|  | @ -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 django.urls import path | ||||||
| from seminar.utils import org_required | from seminar.utils import org_required | ||||||
| from . import views | from . import views | ||||||
|  |  | ||||||
|  | @ -1,5 +1,3 @@ | ||||||
| # coding: utf-8 |  | ||||||
| 
 |  | ||||||
| import random | import random | ||||||
| 
 | 
 | ||||||
| from django.http import HttpResponse, Http404 | from django.http import HttpResponse, Http404 | ||||||
|  |  | ||||||
|  | @ -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 import admin | ||||||
| from django.contrib.admin import ModelAdmin | from django.contrib.admin import ModelAdmin | ||||||
| import header_fotky.models as m | import header_fotky.models as m | ||||||
|  |  | ||||||
|  | @ -1,6 +1,3 @@ | ||||||
| """ |  | ||||||
| Soubor sloužící k pojmenování a jiným nastavením djangovské aplikace. |  | ||||||
| """ |  | ||||||
| from django.apps import AppConfig | from django.apps import AppConfig | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -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.core.exceptions import ValidationError | ||||||
| from django.db import models | from django.db import models | ||||||
| from django.utils import timezone | from django.utils import timezone | ||||||
|  |  | ||||||
|  | @ -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? |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|  | @ -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 django.contrib import admin | ||||||
| from reversion.admin import VersionAdmin | from reversion.admin import VersionAdmin | ||||||
| from korektury.models import KorekturovanePDF | from korektury.models import KorekturovanePDF | ||||||
|  | @ -15,7 +5,6 @@ from korektury.models import KorekturovanePDF | ||||||
| from django.core.mail import EmailMessage | from django.core.mail import EmailMessage | ||||||
| from django.urls import reverse | from django.urls import reverse | ||||||
| 
 | 
 | ||||||
| # Register your models here. |  | ||||||
| class KorekturovanePDFAdmin(VersionAdmin): | class KorekturovanePDFAdmin(VersionAdmin): | ||||||
| 	""" | 	""" | ||||||
| 	nastaví čas vložení (:attr:`~koretkury.models.KorekturovanePDF.cas`) a počet | 	nastaví čas vložení (:attr:`~koretkury.models.KorekturovanePDF.cas`) a počet | ||||||
|  |  | ||||||
|  | @ -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 | from django import forms | ||||||
| 
 | 
 | ||||||
| class OpravaForm(forms.Form): | class OpravaForm(forms.Form): | ||||||
|  |  | ||||||
|  | @ -1,4 +1,3 @@ | ||||||
| # -*- coding: utf-8 -*- |  | ||||||
| from __future__ import unicode_literals | from __future__ import unicode_literals | ||||||
| 
 | 
 | ||||||
| from django.db import models, migrations | from django.db import models, migrations | ||||||
|  |  | ||||||
|  | @ -1,4 +1,3 @@ | ||||||
| # -*- coding: utf-8 -*- |  | ||||||
| from __future__ import unicode_literals | from __future__ import unicode_literals | ||||||
| 
 | 
 | ||||||
| from django.db import models, migrations | from django.db import models, migrations | ||||||
|  |  | ||||||
|  | @ -1,4 +1,3 @@ | ||||||
| # -*- coding: utf-8 -*- |  | ||||||
| from __future__ import unicode_literals | from __future__ import unicode_literals | ||||||
| 
 | 
 | ||||||
| from django.db import models, migrations | from django.db import models, migrations | ||||||
|  |  | ||||||
|  | @ -1,4 +1,3 @@ | ||||||
| # -*- coding: utf-8 -*- |  | ||||||
| from __future__ import unicode_literals | from __future__ import unicode_literals | ||||||
| 
 | 
 | ||||||
| from django.db import models, migrations | from django.db import models, migrations | ||||||
|  |  | ||||||
|  | @ -1,4 +1,3 @@ | ||||||
| # -*- coding: utf-8 -*- |  | ||||||
| from __future__ import unicode_literals | from __future__ import unicode_literals | ||||||
| 
 | 
 | ||||||
| from django.db import models, migrations | from django.db import models, migrations | ||||||
|  |  | ||||||
|  | @ -1,4 +1,3 @@ | ||||||
| # -*- coding: utf-8 -*- |  | ||||||
| from __future__ import unicode_literals | from __future__ import unicode_literals | ||||||
| 
 | 
 | ||||||
| from django.db import models, migrations | from django.db import models, migrations | ||||||
|  |  | ||||||
|  | @ -1,4 +1,3 @@ | ||||||
| # -*- coding: utf-8 -*- |  | ||||||
| from __future__ import unicode_literals | from __future__ import unicode_literals | ||||||
| 
 | 
 | ||||||
| from django.db import models, migrations | from django.db import models, migrations | ||||||
|  |  | ||||||
|  | @ -1,4 +1,3 @@ | ||||||
| # -*- coding: utf-8 -*- |  | ||||||
| from __future__ import unicode_literals | from __future__ import unicode_literals | ||||||
| 
 | 
 | ||||||
| from django.db import models, migrations | from django.db import models, migrations | ||||||
|  |  | ||||||
|  | @ -1,4 +1,3 @@ | ||||||
| # -*- coding: utf-8 -*- |  | ||||||
| from __future__ import unicode_literals | from __future__ import unicode_literals | ||||||
| 
 | 
 | ||||||
| from django.db import migrations, models | from django.db import migrations, models | ||||||
|  |  | ||||||
|  | @ -1,4 +1,3 @@ | ||||||
| # -*- coding: utf-8 -*- |  | ||||||
| from __future__ import unicode_literals | from __future__ import unicode_literals | ||||||
| 
 | 
 | ||||||
| from django.db import migrations, models | from django.db import migrations, models | ||||||
|  |  | ||||||
|  | @ -1,4 +1,3 @@ | ||||||
| # -*- coding: utf-8 -*- |  | ||||||
| from __future__ import unicode_literals | from __future__ import unicode_literals | ||||||
| 
 | 
 | ||||||
| from django.db import migrations, models | from django.db import migrations, models | ||||||
|  |  | ||||||
|  | @ -1,4 +1,3 @@ | ||||||
| # -*- coding: utf-8 -*- |  | ||||||
| from __future__ import unicode_literals | from __future__ import unicode_literals | ||||||
| 
 | 
 | ||||||
| from django.db import migrations, models | from django.db import migrations, models | ||||||
|  |  | ||||||
|  | @ -1,4 +1,3 @@ | ||||||
| # -*- coding: utf-8 -*- |  | ||||||
| from __future__ import unicode_literals | from __future__ import unicode_literals | ||||||
| 
 | 
 | ||||||
| from django.db import migrations, models | from django.db import migrations, models | ||||||
|  |  | ||||||
|  | @ -1,4 +1,3 @@ | ||||||
| # -*- coding: utf-8 -*- |  | ||||||
| from __future__ import unicode_literals | from __future__ import unicode_literals | ||||||
| 
 | 
 | ||||||
| from django.db import migrations, models | from django.db import migrations, models | ||||||
|  |  | ||||||
|  | @ -1,4 +1,3 @@ | ||||||
| # -*- coding: utf-8 -*- |  | ||||||
| from __future__ import unicode_literals | from __future__ import unicode_literals | ||||||
| 
 | 
 | ||||||
| from django.db import migrations, models | from django.db import migrations, models | ||||||
|  |  | ||||||
|  | @ -1,4 +1,3 @@ | ||||||
| # -*- coding: utf-8 -*- |  | ||||||
| # Generated by Django 1.11.20 on 2019-04-30 21:40 | # Generated by Django 1.11.20 on 2019-04-30 21:40 | ||||||
| from __future__ import unicode_literals | from __future__ import unicode_literals | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -1,4 +1,3 @@ | ||||||
| # -*- coding: utf-8 -*- |  | ||||||
| # Generated by Django 1.11.21 on 2019-06-10 21:58 | # Generated by Django 1.11.21 on 2019-06-10 21:58 | ||||||
| from __future__ import unicode_literals | from __future__ import unicode_literals | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -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 | import os | ||||||
| from django.db import models | from django.db import models | ||||||
| from django.utils import timezone | from django.utils import timezone | ||||||
|  |  | ||||||
|  | @ -1,3 +0,0 @@ | ||||||
| from django.test import TestCase |  | ||||||
| 
 |  | ||||||
| # Create your tests here. |  | ||||||
|  | @ -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 django.urls import path | ||||||
| from seminar.utils import org_required | from seminar.utils import org_required | ||||||
| from . import views | from . import views | ||||||
|  |  | ||||||
|  | @ -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.shortcuts import get_object_or_404, render | ||||||
| from django.views import generic | from django.views import generic | ||||||
| from django.conf import settings | from django.conf import settings | ||||||
|  | @ -199,13 +194,6 @@ class KorekturyView(generic.TemplateView): | ||||||
| 		if email: | 		if email: | ||||||
| 			emails.discard(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( | 		EmailMessage( | ||||||
| 			subject=subject, | 			subject=subject, | ||||||
| 			body=text, | 			body=text, | ||||||
|  |  | ||||||
|  | @ -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 |  | ||||||
|  | @ -68,9 +68,6 @@ MIDDLEWARE = ( | ||||||
| 	'django.contrib.sessions.middleware.SessionMiddleware', | 	'django.contrib.sessions.middleware.SessionMiddleware', | ||||||
| 	'django.middleware.common.CommonMiddleware', | 	'django.middleware.common.CommonMiddleware', | ||||||
| 	'django.middleware.csrf.CsrfViewMiddleware', | 	'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.auth.middleware.AuthenticationMiddleware', | ||||||
| 	'django.contrib.messages.middleware.MessageMiddleware', | 	'django.contrib.messages.middleware.MessageMiddleware', | ||||||
| 	'django.middleware.clickjacking.XFrameOptionsMiddleware', | 	'django.middleware.clickjacking.XFrameOptionsMiddleware', | ||||||
|  | @ -345,10 +342,6 @@ KOREKTURY_IMG_DIR = os.path.join('korektury', 'img') | ||||||
| CISLO_IMG_DIR = os.path.join('cislo', 'img') | CISLO_IMG_DIR = os.path.join('cislo', 'img') | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| # E-MAIL NOTIFICATIONS |  | ||||||
| POSLI_MAILOVOU_NOTIFIKACI = False |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 | 
 | ||||||
| # Logování chyb | # Logování chyb | ||||||
| class InvalidTemplateVariable(str): | class InvalidTemplateVariable(str): | ||||||
|  |  | ||||||
|  | @ -1,5 +1,3 @@ | ||||||
| # -*- coding: utf-8 -*- |  | ||||||
| 
 |  | ||||||
| import os.path | import os.path | ||||||
| 
 | 
 | ||||||
| # | # | ||||||
|  | @ -70,5 +68,4 @@ LOGGING['handlers']['registration_error_log']['filename'] = '/home/mam-web/logs/ | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| # E-MAIL NOTIFICATIONS | # E-MAIL NOTIFICATIONS | ||||||
| POSLI_MAILOVOU_NOTIFIKACI = True |  | ||||||
| LOCAL_TEST_PROD = "prod" | LOCAL_TEST_PROD = "prod" | ||||||
|  |  | ||||||
|  | @ -1,5 +1,3 @@ | ||||||
| # -*- coding: utf-8 -*- |  | ||||||
| 
 |  | ||||||
| import os.path | import os.path | ||||||
| 
 | 
 | ||||||
| # | # | ||||||
|  | @ -74,7 +72,6 @@ LOGGING['handlers']['registration_error_log']['filename'] = '/home/mam-web/logs/ | ||||||
| FILE_UPLOAD_PERMISSIONS = 0o440 | FILE_UPLOAD_PERMISSIONS = 0o440 | ||||||
| 
 | 
 | ||||||
| # Testování e-mailů | # Testování e-mailů | ||||||
| POSLI_MAILOVOU_NOTIFIKACI = True |  | ||||||
| EMAIL_BACKEND = 'various.mail_prefixer.PrefixingMailBackend' | EMAIL_BACKEND = 'various.mail_prefixer.PrefixingMailBackend' | ||||||
| # TODO Pouze na otestování testu… Zvolit konferu! | # TODO Pouze na otestování testu… Zvolit konferu! | ||||||
| # XXX: Je to pole, protože implementační detail backendu. | # XXX: Je to pole, protože implementační detail backendu. | ||||||
|  |  | ||||||
|  | @ -1,18 +1,5 @@ | ||||||
| """ | """ | ||||||
| Soubor sloužící jako základní „router“, tj. zde se includují veškeré ostatní urls: | 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` |  | ||||||
| """ | """ | ||||||
| from django.urls import path, include | from django.urls import path, include | ||||||
| from django.contrib.staticfiles.urls import staticfiles_urlpatterns | from django.contrib.staticfiles.urls import staticfiles_urlpatterns | ||||||
|  |  | ||||||
|  | @ -1,6 +1,5 @@ | ||||||
| from django.apps import AppConfig | from django.apps import AppConfig | ||||||
| 
 | 
 | ||||||
| class NovinkyConfig(AppConfig): | class NovinkyConfig(AppConfig): | ||||||
|     default_auto_field = 'django.db.models.BigAutoField' |  | ||||||
|     name = 'novinky' |     name = 'novinky' | ||||||
|     verbose_name = 'Novinky' |     verbose_name = 'Novinky' | ||||||
|  |  | ||||||
|  | @ -1,3 +0,0 @@ | ||||||
| from django.test import TestCase |  | ||||||
| 
 |  | ||||||
| # Create your tests here. |  | ||||||
|  | @ -1,3 +0,0 @@ | ||||||
| from django.shortcuts import render |  | ||||||
| 
 |  | ||||||
| # Create your views here. |  | ||||||
|  | @ -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.contrib import admin | ||||||
| from django_reverse_admin import ReverseModelAdmin | from django_reverse_admin import ReverseModelAdmin | ||||||
| import seminar.models as m | import seminar.models as m | ||||||
|  |  | ||||||
|  | @ -1,6 +1,3 @@ | ||||||
| """ |  | ||||||
| Soubor sloužící k pojmenování a jiným nastavením djangovské aplikace. |  | ||||||
| """ |  | ||||||
| from django.apps import AppConfig | from django.apps import AppConfig | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -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.urls import path | ||||||
| 
 | 
 | ||||||
| from seminar.utils import org_required, resitel_required, viewMethodSwitch, \ | from seminar.utils import org_required, resitel_required, viewMethodSwitch, \ | ||||||
|  |  | ||||||
|  | @ -1,6 +1,3 @@ | ||||||
| """ |  | ||||||
| Soubor sloužící k pojmenování a jiným nastavením djangovské aplikace. |  | ||||||
| """ |  | ||||||
| from django.apps import AppConfig | from django.apps import AppConfig | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -1,4 +1,3 @@ | ||||||
| # -*- coding: utf-8 -*- |  | ||||||
| import logging | import logging | ||||||
| 
 | 
 | ||||||
| from django.db import models | from django.db import models | ||||||
|  |  | ||||||
|  | @ -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.urls import path | ||||||
| from django.contrib.auth.decorators import login_required | from django.contrib.auth.decorators import login_required | ||||||
| from . import views | from . import views | ||||||
|  |  | ||||||
|  | @ -1,4 +1,3 @@ | ||||||
| # -*- coding: utf-8 -*- |  | ||||||
| from django.contrib import admin | from django.contrib import admin | ||||||
| from django.contrib import messages | from django.contrib import messages | ||||||
| from reversion.admin import VersionAdmin | from reversion.admin import VersionAdmin | ||||||
|  |  | ||||||
|  | @ -1,4 +1,3 @@ | ||||||
| # coding: utf-8 |  | ||||||
| from django import forms | from django import forms | ||||||
| 
 | 
 | ||||||
| class NewPrednaskyForm(forms.Form): | class NewPrednaskyForm(forms.Form): | ||||||
|  |  | ||||||
|  | @ -1,4 +1,3 @@ | ||||||
| # -*- coding: utf-8 -*- |  | ||||||
| from __future__ import unicode_literals | from __future__ import unicode_literals | ||||||
| 
 | 
 | ||||||
| from django.db import migrations, models | from django.db import migrations, models | ||||||
|  |  | ||||||
|  | @ -1,4 +1,3 @@ | ||||||
| # -*- coding: utf-8 -*- |  | ||||||
| from __future__ import unicode_literals | from __future__ import unicode_literals | ||||||
| 
 | 
 | ||||||
| from django.db import migrations, models | from django.db import migrations, models | ||||||
|  |  | ||||||
|  | @ -1,4 +1,3 @@ | ||||||
| # -*- coding: utf-8 -*- |  | ||||||
| from __future__ import unicode_literals | from __future__ import unicode_literals | ||||||
| 
 | 
 | ||||||
| from django.db import migrations, models | from django.db import migrations, models | ||||||
|  |  | ||||||
|  | @ -1,4 +1,3 @@ | ||||||
| # -*- coding: utf-8 -*- |  | ||||||
| from __future__ import unicode_literals | from __future__ import unicode_literals | ||||||
| 
 | 
 | ||||||
| from django.db import migrations, models | from django.db import migrations, models | ||||||
|  |  | ||||||
|  | @ -1,4 +1,3 @@ | ||||||
| # -*- coding: utf-8 -*- |  | ||||||
| from __future__ import unicode_literals | from __future__ import unicode_literals | ||||||
| 
 | 
 | ||||||
| from django.db import migrations, models | from django.db import migrations, models | ||||||
|  |  | ||||||
|  | @ -1,4 +1,3 @@ | ||||||
| # -*- coding: utf-8 -*- |  | ||||||
| from __future__ import unicode_literals | from __future__ import unicode_literals | ||||||
| 
 | 
 | ||||||
| from django.db import migrations, models | from django.db import migrations, models | ||||||
|  |  | ||||||
|  | @ -1,4 +1,3 @@ | ||||||
| # -*- coding: utf-8 -*- |  | ||||||
| from __future__ import unicode_literals | from __future__ import unicode_literals | ||||||
| 
 | 
 | ||||||
| from django.db import migrations, models | from django.db import migrations, models | ||||||
|  |  | ||||||
|  | @ -1,4 +1,3 @@ | ||||||
| # -*- coding: utf-8 -*- |  | ||||||
| from __future__ import unicode_literals | from __future__ import unicode_literals | ||||||
| 
 | 
 | ||||||
| from django.db import migrations, models | from django.db import migrations, models | ||||||
|  |  | ||||||
|  | @ -1,4 +1,3 @@ | ||||||
| # -*- coding: utf-8 -*- |  | ||||||
| from __future__ import unicode_literals | from __future__ import unicode_literals | ||||||
| 
 | 
 | ||||||
| from django.db import migrations, models | from django.db import migrations, models | ||||||
|  |  | ||||||
|  | @ -1,4 +1,3 @@ | ||||||
| # -*- coding: utf-8 -*- |  | ||||||
| from __future__ import unicode_literals | from __future__ import unicode_literals | ||||||
| 
 | 
 | ||||||
| from django.db import migrations, models | from django.db import migrations, models | ||||||
|  |  | ||||||
|  | @ -1,4 +1,3 @@ | ||||||
| # -*- coding: utf-8 -*- |  | ||||||
| # Generated by Django 1.11.20 on 2019-04-30 21:40 | # Generated by Django 1.11.20 on 2019-04-30 21:40 | ||||||
| from __future__ import unicode_literals | from __future__ import unicode_literals | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -1,4 +1,3 @@ | ||||||
| # -*- coding: utf-8 -*- |  | ||||||
| # Generated by Django 1.11.21 on 2019-06-10 21:58 | # Generated by Django 1.11.21 on 2019-06-10 21:58 | ||||||
| from __future__ import unicode_literals | from __future__ import unicode_literals | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -1,5 +1,3 @@ | ||||||
| # -*- coding: utf-8 -*- |  | ||||||
| 
 |  | ||||||
| from django.db import models | from django.db import models | ||||||
| 
 | 
 | ||||||
| from soustredeni.models import Soustredeni | from soustredeni.models import Soustredeni | ||||||
|  |  | ||||||
|  | @ -1,3 +0,0 @@ | ||||||
| from django.test import TestCase |  | ||||||
| 
 |  | ||||||
| # Create your tests here. |  | ||||||
|  | @ -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 django.urls import path | ||||||
| from seminar.utils import org_required, resitel_or_org_required | from seminar.utils import org_required, resitel_or_org_required | ||||||
| from . import views | from . import views | ||||||
|  |  | ||||||
|  | @ -1,4 +1,3 @@ | ||||||
| # -*- coding: utf-8 -*- |  | ||||||
| from django.shortcuts import render, get_object_or_404 | from django.shortcuts import render, get_object_or_404 | ||||||
| from django.views import generic | from django.views import generic | ||||||
| from django.shortcuts import HttpResponseRedirect | from django.shortcuts import HttpResponseRedirect | ||||||
|  |  | ||||||
|  | @ -1,4 +1,3 @@ | ||||||
| # -*- coding: utf-8 -*- |  | ||||||
| -c constraints.txt | -c constraints.txt | ||||||
| # basic libs | # basic libs | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -178,11 +178,6 @@ class TextAdminInline(admin.TabularInline): | ||||||
| 
 | 
 | ||||||
| admin.site.register(m.Text) | admin.site.register(m.Text) | ||||||
| 
 | 
 | ||||||
| class ResitelInline(admin.TabularInline): |  | ||||||
| 	model = m.Resitel |  | ||||||
| 	extra = 1 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| # admin.site.register(m.Pohadka) | # admin.site.register(m.Pohadka) | ||||||
| admin.site.register(m.Obrazek) | admin.site.register(m.Obrazek) | ||||||
| admin.site.register(m.Nastaveni, SingletonModelAdmin) | admin.site.register(m.Nastaveni, SingletonModelAdmin) | ||||||
|  |  | ||||||
|  | @ -1,7 +1,6 @@ | ||||||
| from django.apps import AppConfig | from django.apps import AppConfig | ||||||
| 
 | 
 | ||||||
| class SeminarConfig(AppConfig): | class SeminarConfig(AppConfig): | ||||||
|     default_auto_field = 'django.db.models.BigAutoField' |  | ||||||
|     name = 'seminar' |     name = 'seminar' | ||||||
|     verbose_name = 'Seminář' |     verbose_name = 'Seminář' | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -1,5 +1,3 @@ | ||||||
| # -*- coding: utf-8 -*- |  | ||||||
| 
 |  | ||||||
| from django.core.management.base import BaseCommand | from django.core.management.base import BaseCommand | ||||||
| from django.contrib.sessions.models import Session | from django.contrib.sessions.models import Session | ||||||
| from django.contrib.auth.models import Group, Permission | from django.contrib.auth.models import Group, Permission | ||||||
|  |  | ||||||
|  | @ -1,5 +1,3 @@ | ||||||
| # -*- coding: utf-8 -*- |  | ||||||
| 
 |  | ||||||
| from django.core.management.base import BaseCommand | from django.core.management.base import BaseCommand | ||||||
| from django.contrib.sessions.models import Session | from django.contrib.sessions.models import Session | ||||||
| from django.contrib.auth.models import Group, Permission | from django.contrib.auth.models import Group, Permission | ||||||
|  |  | ||||||
|  | @ -1,5 +1,3 @@ | ||||||
| # -*- coding: utf-8 -*- |  | ||||||
| 
 |  | ||||||
| import datetime | import datetime | ||||||
| import os | import os | ||||||
| import random | import random | ||||||
|  |  | ||||||
|  | @ -1,4 +1,3 @@ | ||||||
| # -*- coding: utf-8 -*- |  | ||||||
| from __future__ import unicode_literals | from __future__ import unicode_literals | ||||||
| 
 | 
 | ||||||
| from django.db import models, migrations | from django.db import models, migrations | ||||||
|  |  | ||||||
|  | @ -1,4 +1,3 @@ | ||||||
| # -*- coding: utf-8 -*- |  | ||||||
| from __future__ import unicode_literals | from __future__ import unicode_literals | ||||||
| 
 | 
 | ||||||
| from django.db import models, migrations | from django.db import models, migrations | ||||||
|  |  | ||||||
|  | @ -1,4 +1,3 @@ | ||||||
| # -*- coding: utf-8 -*- |  | ||||||
| from __future__ import unicode_literals | from __future__ import unicode_literals | ||||||
| 
 | 
 | ||||||
| from django.db import models, migrations | from django.db import models, migrations | ||||||
|  |  | ||||||
|  | @ -1,4 +1,3 @@ | ||||||
| # -*- coding: utf-8 -*- |  | ||||||
| from __future__ import unicode_literals | from __future__ import unicode_literals | ||||||
| 
 | 
 | ||||||
| from django.db import models, migrations | from django.db import models, migrations | ||||||
|  |  | ||||||
|  | @ -1,4 +1,3 @@ | ||||||
| # -*- coding: utf-8 -*- |  | ||||||
| from __future__ import unicode_literals | from __future__ import unicode_literals | ||||||
| 
 | 
 | ||||||
| from django.db import models, migrations | from django.db import models, migrations | ||||||
|  |  | ||||||
|  | @ -1,4 +1,3 @@ | ||||||
| # -*- coding: utf-8 -*- |  | ||||||
| from __future__ import unicode_literals | from __future__ import unicode_literals | ||||||
| 
 | 
 | ||||||
| from django.db import models, migrations | from django.db import models, migrations | ||||||
|  |  | ||||||
|  | @ -1,4 +1,3 @@ | ||||||
| # -*- coding: utf-8 -*- |  | ||||||
| from __future__ import unicode_literals | from __future__ import unicode_literals | ||||||
| 
 | 
 | ||||||
| from django.db import models, migrations | from django.db import models, migrations | ||||||
|  |  | ||||||
|  | @ -1,4 +1,3 @@ | ||||||
| # -*- coding: utf-8 -*- |  | ||||||
| from __future__ import unicode_literals | from __future__ import unicode_literals | ||||||
| 
 | 
 | ||||||
| from django.db import models, migrations | from django.db import models, migrations | ||||||
|  |  | ||||||
Some files were not shown because too many files have changed in this diff Show more
		Loading…
	
		Reference in a new issue