From 0b56226c5fd074ccf3853b3c149b756e8d48e320 Mon Sep 17 00:00:00 2001 From: "Bc. Petr Pecha" Date: Thu, 4 Feb 2016 19:06:11 +0100 Subject: [PATCH] seminar | pridan prispevek k tematum + uprava neprovedenych migraci Pridan prispevek k tematum. Docasne jsem se vratil zpet od reseni s partial, protoze me nefunguji migrace, tvari se to jakoze to neni serializovatelne. Zakomentovany model konfery, protoze k nemu chybi migrace. --- seminar/migrations/0037_prispevek.py | 29 ++++++ seminar/models.py | 147 +++++++++++++++------------ 2 files changed, 110 insertions(+), 66 deletions(-) create mode 100644 seminar/migrations/0037_prispevek.py diff --git a/seminar/migrations/0037_prispevek.py b/seminar/migrations/0037_prispevek.py new file mode 100644 index 00000000..fd3df05a --- /dev/null +++ b/seminar/migrations/0037_prispevek.py @@ -0,0 +1,29 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('seminar', '0036_add_org_to_soustredeni'), + ] + + operations = [ + migrations.CreateModel( + name='Prispevek', + fields=[ + ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), + ('nazev', models.CharField(max_length=200, verbose_name=b'N\xc3\xa1zev')), + ('text_org', models.TextField(null=True, verbose_name=b'Orgovsk\xc3\xbd text', blank=True)), + ('text_resitel', models.TextField(null=True, verbose_name=b'\xc5\x98e\xc5\xa1itelsk\xc3\xbd text', blank=True)), + ('zverejnit', models.BooleanField(verbose_name=b'Zve\xc5\x99ejnit?')), + ('problem', models.ForeignKey(verbose_name=b'Probl\xc3\xa9m', to='seminar.Problem')), + ('reseni', models.OneToOneField(null=True, blank=True, to='seminar.Reseni', verbose_name=b'\xc5\x98e\xc5\xa1en\xc3\xad')), + ], + options={ + 'abstract': False, + }, + ), + ] diff --git a/seminar/models.py b/seminar/models.py index c5df19e9..edcb2527 100644 --- a/seminar/models.py +++ b/seminar/models.py @@ -545,13 +545,17 @@ class Reseni(SeminarModelBase): # PrilohaReseni method -def generate_filename(self, filename, directory): +# TODO vyresit partial, tak aby slo migrovat +#def generate_filename(self, filename, directory): +def generate_filename(self, filename): clean = filename.replace('/','-').replace('\0', '') datedir = timezone.now().strftime('%Y-%m') fname = "%s_%s" % ( timezone.now().strftime('%Y-%m-%d-%H:%M'), clean) - return os.path.join(directory, datedir, fname) + return os.path.join(settings.SEMINAR_RESENI_DIR, datedir, fname) +# TODO vyresit partial tak, aby slo migrovat +# return os.path.join(directory, datedir, fname) @reversion.register(ignore_duplicate_revisions=True) @@ -571,7 +575,9 @@ class PrilohaReseni(SeminarModelBase): timestamp = models.DateTimeField(u'vytvořeno', default=timezone.now, blank=True, editable=False) - soubor = models.FileField(u'soubor', upload_to = partial(generate_filename,directory=settings.SEMINAR_RESENI_DIR)) + #soubor = models.FileField(u'soubor', upload_to = partial(generate_filename,directory=settings.SEMINAR_RESENI_DIR))) + # TODO vyresit partial tak, aby slo migrovat + soubor = models.FileField(u'soubor', upload_to = generate_filename) poznamka = models.TextField(u'neveřejná poznámka', blank=True, help_text=u'Neveřejná poznámka k příloze řešení (plain text), např. o původu') @@ -579,6 +585,15 @@ class PrilohaReseni(SeminarModelBase): def __str__(self): return force_unicode(self.soubor) +@reversion.register(ignore_duplicate_revisions=True) +class Prispevek(SeminarModelBase): + problem = models.ForeignKey(Problem, verbose_name='Problém') # TODO autokompleet + nazev = models.CharField('Název', max_length=200) + reseni = models.OneToOneField(Reseni, verbose_name='Řešení', + blank = True, null = True) + text_org = models.TextField('Orgovský text', blank = True, null = True) + text_resitel = models.TextField('Řešitelský text', blank = True, null = True) + zverejnit = models.BooleanField('Zveřejnit?') @reversion.register(ignore_duplicate_revisions=True) @python_2_unicode_compatible @@ -736,69 +751,69 @@ class Soustredeni_Organizatori(models.Model): -@reversion.register(ignore_duplicate_revisions=True) -@python_2_unicode_compatible -class Konfera(models.Model): - class Meta: - db_table = 'seminar_konfera' - verbose_name = u'Konfera' - verbose_name_plural = u'Konfery' - # Interní ID - id = models.AutoField(primary_key = True) - nazev = models.CharField(u'název konfery', max_length=40, help_text = u'Název konfery') - popis = models.TextField(u'popis konfery', blank=True, - help_text=u'Popis konfery k zobrazení na webu') - abstrakt = models.TextField(u'abstrakt', blank=True, - help_text=u'Abstrakt konfery tak, jak byl uveden ve sborníku') - organizator = models.ForeignKey(Organizator, verbose_name=u'organizátor', related_name='konfery', - on_delete = models.SET_NULL, null=True) - ucastnici = models.ManyToManyField(Resitel, verbose_name=u'účastníci konfery', - help_text=u'Seznam účastníků konfery', through='Konfery_Ucastnici') - soustredeni = models.ForeignKey(Soustredeni, verbose_name=u'soustředění', related_name='konfery', - on_delete = models.SET_NULL, null=True) - org_poznamka = models.TextField(u'neveřejná poznámka', blank=True, - help_text=u'Neveřejná poznámka ke konfeře(plain text)') - #prispevek #TODO - TYP_VELETRH = 'veletrh' - TYP_PREZENTACE = 'prezentace' - TYP_CHOICES = [ - (TYP_VELETRH, u'Veletrh (postery)'), - (TYP_PREZENTACE, u'Prezentace (přednáška)'), - ] - typ_prezentace = models.CharField(u'typ prezentace', max_length=16, choices=TYP_CHOICES, blank=False, default=TYP_VELETRH) - prezentace = models.FileField(u'prezentace',help_text = u'Prezentace nebo fotka posteru', - upload_to = partial(generate_filename,directory=settings.SEMINAR_KONFERY_DIR)) - materialy = models.FileField(u'materialy',help_text = u'Další materiály ke konfeře zabalené do jednoho souboru', - upload_to = partial(generate_filename,directory=settings.SEMINAR_KONFERY_DIR)) - - def __str__(self): - return force_unicode(u"%s: (%s)" % (self.nazev, self.soustredeni)) - - - -@reversion.register(ignore_duplicate_revisions=True) -@python_2_unicode_compatible -class Konfery_Ucastnici(models.Model): - - class Meta: - db_table = 'seminar_konfery_ucastnici' - verbose_name = u'Účast na konfeře' - verbose_name_plural = u'Účasti na konfeře' - ordering = ['konfera', 'resitel'] - - # Interní ID - id = models.AutoField(primary_key = True) - - resitel = models.ForeignKey(Resitel, verbose_name=u'řešitel') - - konfera = models.ForeignKey(Konfera, verbose_name=u'konfera') - - poznamka = models.TextField(u'neveřejná poznámka', blank=True, - help_text=u'Neveřejná poznámka k účasti (plain text)') - - def __str__(self): - return force_unicode(u'%s na %s' % (self.resitel, self.konfera, )) - # NOTE: Poteciální DB HOG bez select_related +#@reversion.register(ignore_duplicate_revisions=True) +#@python_2_unicode_compatible +#class Konfera(models.Model): +# class Meta: +# db_table = 'seminar_konfera' +# verbose_name = u'Konfera' +# verbose_name_plural = u'Konfery' +# # Interní ID +# id = models.AutoField(primary_key = True) +# nazev = models.CharField(u'název konfery', max_length=40, help_text = u'Název konfery') +# popis = models.TextField(u'popis konfery', blank=True, +# help_text=u'Popis konfery k zobrazení na webu') +# abstrakt = models.TextField(u'abstrakt', blank=True, +# help_text=u'Abstrakt konfery tak, jak byl uveden ve sborníku') +# organizator = models.ForeignKey(Organizator, verbose_name=u'organizátor', related_name='konfery', +# on_delete = models.SET_NULL, null=True) +# ucastnici = models.ManyToManyField(Resitel, verbose_name=u'účastníci konfery', +# help_text=u'Seznam účastníků konfery', through='Konfery_Ucastnici') +# soustredeni = models.ForeignKey(Soustredeni, verbose_name=u'soustředění', related_name='konfery', +# on_delete = models.SET_NULL, null=True) +# org_poznamka = models.TextField(u'neveřejná poznámka', blank=True, +# help_text=u'Neveřejná poznámka ke konfeře(plain text)') +# #prispevek #TODO +# TYP_VELETRH = 'veletrh' +# TYP_PREZENTACE = 'prezentace' +# TYP_CHOICES = [ +# (TYP_VELETRH, u'Veletrh (postery)'), +# (TYP_PREZENTACE, u'Prezentace (přednáška)'), +# ] +# typ_prezentace = models.CharField(u'typ prezentace', max_length=16, choices=TYP_CHOICES, blank=False, default=TYP_VELETRH) +# prezentace = models.FileField(u'prezentace',help_text = u'Prezentace nebo fotka posteru', +# upload_to = partial(generate_filename,directory=settings.SEMINAR_KONFERY_DIR)) +# materialy = models.FileField(u'materialy',help_text = u'Další materiály ke konfeře zabalené do jednoho souboru', +# upload_to = partial(generate_filename,directory=settings.SEMINAR_KONFERY_DIR)) +# +# def __str__(self): +# return force_unicode(u"%s: (%s)" % (self.nazev, self.soustredeni)) +# +# +# +#@reversion.register(ignore_duplicate_revisions=True) +#@python_2_unicode_compatible +#class Konfery_Ucastnici(models.Model): +# +# class Meta: +# db_table = 'seminar_konfery_ucastnici' +# verbose_name = u'Účast na konfeře' +# verbose_name_plural = u'Účasti na konfeře' +# ordering = ['konfera', 'resitel'] +# +# # Interní ID +# id = models.AutoField(primary_key = True) +# +# resitel = models.ForeignKey(Resitel, verbose_name=u'řešitel') +# +# konfera = models.ForeignKey(Konfera, verbose_name=u'konfera') +# +# poznamka = models.TextField(u'neveřejná poznámka', blank=True, +# help_text=u'Neveřejná poznámka k účasti (plain text)') +# +# def __str__(self): +# return force_unicode(u'%s na %s' % (self.resitel, self.konfera, )) +# # NOTE: Poteciální DB HOG bez select_related @python_2_unicode_compatible