Merge branch 'master' into stable
This commit is contained in:
commit
ea0f03d27f
8 changed files with 102 additions and 21 deletions
4
.gitignore
vendored
4
.gitignore
vendored
|
@ -23,3 +23,7 @@
|
||||||
|
|
||||||
# vim tmp files
|
# vim tmp files
|
||||||
*~
|
*~
|
||||||
|
|
||||||
|
# org poznamky
|
||||||
|
schemata
|
||||||
|
TODO
|
||||||
|
|
|
@ -84,7 +84,9 @@ class ResitelInline(admin.TabularInline):
|
||||||
|
|
||||||
class CisloInline(admin.TabularInline):
|
class CisloInline(admin.TabularInline):
|
||||||
model = Cislo
|
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']
|
readonly_fields = ['cislo']
|
||||||
extra = 0
|
extra = 0
|
||||||
formfield_overrides = {
|
formfield_overrides = {
|
||||||
|
@ -256,7 +258,8 @@ class CisloAdmin(VersionAdmin):
|
||||||
'pdf'
|
'pdf'
|
||||||
]
|
]
|
||||||
}),
|
}),
|
||||||
(u'Data', {'fields': ['datum_vydani', 'datum_deadline']}),
|
(u'Data', {'fields': ['datum_vydani', 'datum_deadline',
|
||||||
|
'datum_deadline_soustredeni']}),
|
||||||
]
|
]
|
||||||
list_display = [
|
list_display = [
|
||||||
'kod',
|
'kod',
|
||||||
|
|
19
seminar/migrations/0047_auto_20170120_2118.py
Normal file
19
seminar/migrations/0047_auto_20170120_2118.py
Normal file
|
@ -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')]),
|
||||||
|
),
|
||||||
|
]
|
|
@ -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),
|
||||||
|
),
|
||||||
|
]
|
|
@ -105,7 +105,9 @@ class Skola(SeminarModelBase):
|
||||||
help_text=u'Neveřejná poznámka ke škole (plain text)')
|
help_text=u'Neveřejná poznámka ke škole (plain text)')
|
||||||
|
|
||||||
def __str__(self):
|
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)
|
@reversion.register(ignore_duplicate_revisions=True)
|
||||||
|
@ -338,10 +340,19 @@ class Cislo(SeminarModelBase):
|
||||||
datum_deadline = models.DateField(u'datum deadline', blank=True, null=True,
|
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')
|
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,
|
verejne_db = models.BooleanField(u'číslo zveřejněno',
|
||||||
help_text=u'Je-li false u veřejného čísla, není výsledkovka zatím veřejná.')
|
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,
|
poznamka = models.TextField(u'neveřejná poznámka', blank=True,
|
||||||
help_text=u'Neveřejná poznámka k číslu (plain text)')
|
help_text=u'Neveřejná poznámka k číslu (plain text)')
|
||||||
|
|
|
@ -20,7 +20,7 @@ M&M je korespondenční seminář. Několikrát do roka zdarma vydáváme č
|
||||||
<div class="novinky">
|
<div class="novinky">
|
||||||
{% if dead %}
|
{% if dead %}
|
||||||
<div class="odpocet">
|
<div class="odpocet">
|
||||||
<p><b>Do konce <a href="https://mam.mff.cuni.cz/zadani/aktualni/">odeslání řešení</a> zbývá:<br>
|
<p><b>Do konce <a href="https://mam.mff.cuni.cz/zadani/aktualni/">odeslání řešení</a> {% if deadline_soustredeni %}(pro účast na soustředění) {% endif %}zbývá:<br>
|
||||||
<big>{{ted|timesince:dead}}</big></b></p>
|
<big>{{ted|timesince:dead}}</big></b></p>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
|
@ -19,12 +19,20 @@
|
||||||
{% if user.is_staff or verejne %}
|
{% if user.is_staff or verejne %}
|
||||||
{% if user.is_staff and not verejne %}<div class="mam-org-only">{% endif %}
|
{% if user.is_staff and not verejne %}<div class="mam-org-only">{% endif %}
|
||||||
|
|
||||||
{% if ac.zadane_problemy.all %}
|
{% if ac.zadane_problemy.all %}
|
||||||
<div class="zadani_azad_termin">
|
{% if ac.datum_deadline_soustredeni %}
|
||||||
Termín odeslání {{ac.cislo}}. série: {{ac.datum_deadline}}
|
<div class="zadani_azad_termin">
|
||||||
</div>
|
Termín odeslání {{ac.cislo}}. série pro účast na soustředění:
|
||||||
{% endif %}
|
{{ac.datum_deadline_soustredeni}}
|
||||||
{#TODO a co speciální deadline pro účast na soustředění? #}
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
{% endif %}
|
||||||
|
{% if ac.zadane_problemy.all %}
|
||||||
|
<div class="zadani_azad_termin">
|
||||||
|
Termín odeslání {{ac.cislo}}. série: {{ac.datum_deadline}}
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
|
||||||
{% if ac.pdf %}
|
{% if ac.pdf %}
|
||||||
<p><a href="{{ac.pdf.url}}">Aktuální číslo v PDF</a></p>
|
<p><a href="{{ac.pdf.url}}">Aktuální číslo v PDF</a></p>
|
||||||
|
|
|
@ -101,18 +101,35 @@ class TitulniStranaView(generic.ListView):
|
||||||
def get_context_data(self, **kwargs):
|
def get_context_data(self, **kwargs):
|
||||||
context = super(TitulniStranaView, self).get_context_data(**kwargs)
|
context = super(TitulniStranaView, self).get_context_data(**kwargs)
|
||||||
nastaveni = get_object_or_404(Nastaveni)
|
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
|
# Pokud neni zverejnene cislo nezverejnuj odpocet
|
||||||
if nastaveni.aktualni_cislo.verejne():
|
if nastaveni.aktualni_cislo.verejne():
|
||||||
# pokus se zjistit termin odeslani a pokud neni zadany,
|
# pokus se zjistit termin odeslani a pokud neni zadany,
|
||||||
# nezverejnuj odpocet
|
# nezverejnuj odpocet
|
||||||
try:
|
context['deadline_soustredeni'] = deadline_soustredeni
|
||||||
context['dead'] = datetime.combine(cas_deadline, datetime.max.time())
|
try:
|
||||||
context['ted'] = datetime.now()
|
context['dead'] = datetime.combine(cas_deadline,
|
||||||
except:
|
datetime.max.time())
|
||||||
context['dead'] = None
|
context['ted'] = datetime.now()
|
||||||
|
except:
|
||||||
|
context['dead'] = None
|
||||||
else:
|
else:
|
||||||
context['dead'] = None
|
context['dead'] = None
|
||||||
|
context['deadline_soustredeni'] = deadline_soustredeni
|
||||||
return context
|
return context
|
||||||
|
|
||||||
class StareNovinkyView(generic.ListView):
|
class StareNovinkyView(generic.ListView):
|
||||||
|
|
Loading…
Reference in a new issue