From 5adc4eecb977ab09782069bc30a1cdb37c3d2a8a Mon Sep 17 00:00:00 2001 From: "Bc. Petr Pecha" Date: Fri, 20 Jan 2017 21:57:43 +0100 Subject: [PATCH] seminar | Cislo | pridan datum pro ucast na soustredeni --- seminar/admin.py | 4 +-- ...48_add_cislo_datum_deadline_soustredeni.py | 19 ++++++++++++ seminar/models.py | 5 +++ seminar/templates/seminar/titulnistrana.html | 2 +- .../seminar/zadani/AktualniZadani.html | 20 ++++++++---- seminar/views.py | 31 ++++++++++++++----- 6 files changed, 64 insertions(+), 17 deletions(-) create mode 100644 seminar/migrations/0048_add_cislo_datum_deadline_soustredeni.py diff --git a/seminar/admin.py b/seminar/admin.py index 89901c6b..e9a8801c 100644 --- a/seminar/admin.py +++ b/seminar/admin.py @@ -84,7 +84,7 @@ class ResitelInline(admin.TabularInline): class CisloInline(admin.TabularInline): model = Cislo - fields = ['cislo', 'datum_vydani', 'datum_deadline', 'verejne_db', 'poznamka'] + fields = ['cislo', 'datum_vydani', 'datum_deadline', 'datum_deadline_soustredeni', 'verejne_db', 'poznamka'] readonly_fields = ['cislo'] extra = 0 formfield_overrides = { @@ -256,7 +256,7 @@ class CisloAdmin(VersionAdmin): 'pdf' ] }), - (u'Data', {'fields': ['datum_vydani', 'datum_deadline']}), + (u'Data', {'fields': ['datum_vydani', 'datum_deadline', 'datum_deadline_soustredeni']}), ] list_display = [ 'kod', diff --git a/seminar/migrations/0048_add_cislo_datum_deadline_soustredeni.py b/seminar/migrations/0048_add_cislo_datum_deadline_soustredeni.py new file mode 100644 index 00000000..134a00a8 --- /dev/null +++ b/seminar/migrations/0048_add_cislo_datum_deadline_soustredeni.py @@ -0,0 +1,19 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('seminar', '0047_auto_20170120_2118'), + ] + + operations = [ + migrations.AddField( + model_name='cislo', + name='datum_deadline_soustredeni', + field=models.DateField(help_text='Datum pro p\u0159\xedjem \u0159e\u0161en\xed pro \xfa\u010dast na soust\u0159ed\u011bn\xed', null=True, verbose_name='datum deadline soust\u0159ed\u011bn\xed', blank=True), + ), + ] diff --git a/seminar/models.py b/seminar/models.py index 79b49eea..00237230 100644 --- a/seminar/models.py +++ b/seminar/models.py @@ -338,6 +338,11 @@ class Cislo(SeminarModelBase): datum_deadline = models.DateField(u'datum deadline', blank=True, null=True, help_text=u'Datum pro příjem řešení úloh zadaných v tomto čísle') + datum_deadline_soustredeni = models.DateField( + u'datum deadline soustředění', + blank=True, null=True, + help_text=u'Datum pro příjem řešení pro účast na soustředění') + verejne_db = models.BooleanField(u'číslo zveřejněno', db_column='verejne', default=False) verejna_vysledkovka = models.BooleanField(u'zveřejněna výsledkovka', default=False, diff --git a/seminar/templates/seminar/titulnistrana.html b/seminar/templates/seminar/titulnistrana.html index 7f4b2799..d73e65e3 100644 --- a/seminar/templates/seminar/titulnistrana.html +++ b/seminar/templates/seminar/titulnistrana.html @@ -20,7 +20,7 @@ M&M je korespondenční seminář. Několikrát do roka zdarma vydáváme č
{% if dead %}
-

Do konce odeslání řešení zbývá:
+

Do konce odeslání řešení {% if deadline_soustredeni %}(pro účast na soustředění) {% endif %}zbývá:
{{ted|timesince:dead}}

{% endif %} diff --git a/seminar/templates/seminar/zadani/AktualniZadani.html b/seminar/templates/seminar/zadani/AktualniZadani.html index ab870c2b..b611eee9 100644 --- a/seminar/templates/seminar/zadani/AktualniZadani.html +++ b/seminar/templates/seminar/zadani/AktualniZadani.html @@ -19,12 +19,20 @@ {% if user.is_staff or verejne %} {% if user.is_staff and not verejne %}
{% endif %} - {% if ac.zadane_problemy.all %} -
- Termín odeslání {{ac.cislo}}. série: {{ac.datum_deadline}} -
- {% endif %} - {#TODO a co speciální deadline pro účast na soustředění? #} + {% if ac.zadane_problemy.all %} + {% if ac.datum_deadline_soustredeni %} +
+ Termín odeslání {{ac.cislo}}. série pro účast na soustředění: + {{ac.datum_deadline_soustredeni}} +
+ {% endif %} + {% endif %} + {% if ac.zadane_problemy.all %} +
+ Termín odeslání {{ac.cislo}}. série: {{ac.datum_deadline}} +
+ {% endif %} + {% if ac.pdf %}

Aktuální číslo v PDF

diff --git a/seminar/views.py b/seminar/views.py index 08a27162..c04e7d13 100644 --- a/seminar/views.py +++ b/seminar/views.py @@ -101,16 +101,31 @@ class TitulniStranaView(generic.ListView): def get_context_data(self, **kwargs): context = super(TitulniStranaView, self).get_context_data(**kwargs) nastaveni = get_object_or_404(Nastaveni) - cas_deadline = nastaveni.aktualni_cislo.datum_deadline + + # zjisteni spravneho terminu + if nastaveni.aktualni_cislo.datum_deadline_soustredeni: + cas_deadline_soustredeni = nastaveni.aktualni_cislo.datum_deadline_soustredeni + if (datetime.now().date() < cas_deadline_soustredeni): + cas_deadline = cas_deadline_soustredeni + deadline_soustredeni = True + else: + cas_deadline = nastaveni.aktualni_cislo.datum_deadline + deadline_soustredeni = False + else: + cas_deadline = nastaveni.aktualni_cislo.datum_deadline + deadline_soustredeni = False + # Pokud neni zverejnene cislo nezverejnuj odpocet if nastaveni.aktualni_cislo.verejne(): - # pokus se zjistit termin odeslani a pokud neni zadany, - # nezverejnuj odpocet - try: - context['dead'] = datetime.combine(cas_deadline, datetime.max.time()) - context['ted'] = datetime.now() - except: - context['dead'] = None + # pokus se zjistit termin odeslani a pokud neni zadany, + # nezverejnuj odpocet + try: + context['dead'] = datetime.combine(cas_deadline, + datetime.max.time()) + context['ted'] = datetime.now() + context['deadline_soustredeni'] = deadline_soustredeni + except: + context['dead'] = None else: context['dead'] = None return context