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 | ||||
| *~ | ||||
| 
 | ||||
| # org poznamky | ||||
| schemata | ||||
| TODO | ||||
|  |  | |||
|  | @ -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', | ||||
|  |  | |||
							
								
								
									
										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)') | ||||
| 
 | ||||
|     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)') | ||||
|  |  | |||
|  | @ -20,7 +20,7 @@ M&M je korespondenční seminář. Několikrát do roka zdarma vydáváme č | |||
| <div class="novinky"> | ||||
|   {% if dead %} | ||||
|   <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> | ||||
|   </div> | ||||
|   {% endif %} | ||||
|  |  | |||
|  | @ -19,12 +19,20 @@ | |||
| {% if user.is_staff or verejne %} | ||||
| {% if user.is_staff and not verejne %}<div class="mam-org-only">{% endif %} | ||||
| 
 | ||||
|       {% if ac.zadane_problemy.all %} | ||||
| 	<div class="zadani_azad_termin"> | ||||
| 		Termín odeslání {{ac.cislo}}. série: {{ac.datum_deadline}} | ||||
| 	</div> | ||||
|       {% endif %} | ||||
|       {#TODO a co speciální deadline pro účast na soustředění? #} | ||||
|   {% if ac.zadane_problemy.all %} | ||||
|     {% if ac.datum_deadline_soustredeni %} | ||||
|    	  <div class="zadani_azad_termin"> | ||||
| 	  	  Termín odeslání {{ac.cislo}}. série pro účast na soustředění: | ||||
|         {{ac.datum_deadline_soustredeni}} | ||||
|   	  </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 %} | ||||
|       <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): | ||||
|         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): | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue
	
	 Bc. Petr Pecha
						Bc. Petr Pecha