diff --git a/.gitignore b/.gitignore index 6b8b5c02..2b08d3e8 100644 --- a/.gitignore +++ b/.gitignore @@ -23,3 +23,7 @@ # vim tmp files *~ + +# org poznamky +schemata +TODO diff --git a/seminar/admin.py b/seminar/admin.py index 1711108b..d9771f5e 100644 --- a/seminar/admin.py +++ b/seminar/admin.py @@ -84,7 +84,9 @@ 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 +258,8 @@ 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/0047_auto_20170120_2118.py b/seminar/migrations/0047_auto_20170120_2118.py new file mode 100644 index 00000000..1876fe25 --- /dev/null +++ b/seminar/migrations/0047_auto_20170120_2118.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', '0046_merge'), + ] + + operations = [ + migrations.AlterField( + model_name='cislo', + name='faze', + field=models.CharField(default='admin', help_text='B\u011bhem f\xe1ze "\xdapravy na webu" se obsah \u010d\xedsla vytv\xe1\u0159\xed (a p\u0159\xedpadn\u011b komentuje) ve webov\xe9m rozhran\xed. B\u011bhem f\xe1ze "\xdapravy v TeXu" u\u017e obsah ve webov\xe9m rozhran\xed editovat nelze a n\xe1vrhy na \xfapravy se p\xed\u0161\xed do korekturov\xe1tka a zan\xe1\u0161ej\xed do gitu. Z n\u011bj se pak vygeneruje verze pro web a \u010d\xedslo se p\u0159epne do f\xe1ze "Nahr\xe1no na web", co\u017e jen znamen\xe1, \u017ee u\u017e nejde automaticky st\xe1hnout obsah pro zalo\u017een\xed \u010d\xedsla v TeXu.', max_length=32, verbose_name='F\xe1ze vytv\xe1\u0159en\xed obsahu', choices=[('admin', '\xdapravy na webu'), ('tex', '\xdapravy v TeXu'), ('nahrano', 'Nahr\xe1no na web')]), + ), + ] 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..ad94324c 100644 --- a/seminar/models.py +++ b/seminar/models.py @@ -105,7 +105,9 @@ class Skola(SeminarModelBase): help_text=u'Neveřejná poznámka ke škole (plain text)') def __str__(self): - return force_unicode(u'%s, %s, %s' % (self.nazev, self.ulice, self.mesto)) + return force_unicode(u'%s, %s, %s' % (self.nazev, + self.ulice, + self.mesto)) @reversion.register(ignore_duplicate_revisions=True) @@ -338,10 +340,19 @@ 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') - verejne_db = models.BooleanField(u'číslo zveřejněno', db_column='verejne', default=False) + 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í') - verejna_vysledkovka = models.BooleanField(u'zveřejněna výsledkovka', default=False, - help_text=u'Je-li false u veřejného čísla, není výsledkovka zatím veřejná.') + 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, + help_text=u'Je-li false u veřejného čísla,\ + není výsledkovka zatím veřejná.') poznamka = models.TextField(u'neveřejná poznámka', blank=True, help_text=u'Neveřejná poznámka k číslu (plain text)') 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..d70ef712 100644 --- a/seminar/views.py +++ b/seminar/views.py @@ -101,18 +101,35 @@ 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 + context['deadline_soustredeni'] = deadline_soustredeni + try: + context['dead'] = datetime.combine(cas_deadline, + datetime.max.time()) + context['ted'] = datetime.now() + except: + context['dead'] = None else: context['dead'] = None + context['deadline_soustredeni'] = deadline_soustredeni return context class StareNovinkyView(generic.ListView):