diff --git a/seminar/admin.py b/seminar/admin.py index 811a309d..5267980f 100644 --- a/seminar/admin.py +++ b/seminar/admin.py @@ -84,7 +84,8 @@ class ResitelInline(admin.TabularInline): class CisloInline(admin.TabularInline): model = Cislo - fields = ['cislo', 'datum_vydani', 'datum_deadline', + fields = ['cislo', + 'datum_vydani', 'datum_deadline', 'datum_deadline_soustredeni', 'verejne_db', 'poznamka'] readonly_fields = ['cislo'] extra = 0 @@ -257,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', @@ -419,8 +421,9 @@ class ProblemAdmin(VersionAdmin): return readonly_fields if obj.cislo_zadani.faze != 'admin': readonly_fields += ['nazev', 'text_zadani', 'body'] - if obj.cislo_reseni.faze != 'admin': - readonly_fields += ['text_reseni'] + if obj.cislo_reseni: + if obj.cislo_reseni.faze != 'admin': + readonly_fields += ['text_reseni'] return readonly_fields def get_queryset(self, request): 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 08908185..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,7 +340,13 @@ 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í') + + verejne_db = models.BooleanField(u'číslo zveřejněno', + db_column='verejne', default=False) verejna_vysledkovka = models.BooleanField( u'zveřejněna výsledkovka', 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 5c7b3355..d074a8ac 100644 --- a/seminar/views.py +++ b/seminar/views.py @@ -101,11 +101,26 @@ 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 + context['deadline_soustredeni'] = deadline_soustredeni try: context['dead'] = datetime.combine(cas_deadline, datetime.max.time()) @@ -114,6 +129,7 @@ class TitulniStranaView(generic.ListView): context['dead'] = None else: context['dead'] = None + context['deadline_soustredeni'] = deadline_soustredeni return context class StareNovinkyView(generic.ListView):