83 lines
2.2 KiB
Python
83 lines
2.2 KiB
Python
import os
|
|
from reversion import revisions as reversion
|
|
|
|
from django.db import models
|
|
from django.conf import settings
|
|
|
|
from various.utils import aux_generate_filename
|
|
|
|
from personalni.models.resitel import Resitel
|
|
from tvorba.models.problem import Problem
|
|
from .soustredeni import Soustredeni
|
|
|
|
|
|
# Django neumí jednoduše serializovat partial nebo třídu s __call__
|
|
# (https://docs.djangoproject.com/en/1.8/topics/migrations/),
|
|
# neprojdou pak migrace. Takže rozlišení funkcí generujících názvy souboru
|
|
# podle adresáře řešíme takto.
|
|
|
|
##
|
|
def generate_filename_konfera(self, filename):
|
|
return os.path.join(
|
|
settings.SEMINAR_KONFERY_DIR,
|
|
aux_generate_filename(self, filename)
|
|
)
|
|
|
|
##
|
|
|
|
|
|
@reversion.register(ignore_duplicates=True)
|
|
class Konfera(Problem):
|
|
class Meta:
|
|
db_table = 'seminar_konfera'
|
|
verbose_name = 'Konfera'
|
|
verbose_name_plural = 'Konfery'
|
|
|
|
anotace = models.TextField(
|
|
'anotace', blank=True,
|
|
help_text='Popis, o čem bude konfera.',
|
|
)
|
|
|
|
abstrakt = models.TextField(
|
|
'abstrakt', blank=True,
|
|
help_text='Abstrakt konfery tak, jak byl uveden ve sborníku',
|
|
)
|
|
|
|
# FIXME: Umíme omezit jen na účastníky daného soustřeďka?
|
|
ucastnici = models.ManyToManyField(
|
|
Resitel, verbose_name='účastníci konfery',
|
|
help_text='Seznam účastníků konfery', through='Konfery_Ucastnici',
|
|
)
|
|
|
|
soustredeni = models.ForeignKey(
|
|
Soustredeni, verbose_name='soustředění',
|
|
related_name='konfery', on_delete=models.SET_NULL, null=True,
|
|
)
|
|
|
|
TYP_VELETRH = 'veletrh'
|
|
TYP_PREZENTACE = 'prezentace'
|
|
TYP_CHOICES = [
|
|
(TYP_VELETRH, 'Veletrh (postery)'),
|
|
(TYP_PREZENTACE, 'Prezentace (přednáška)'),
|
|
]
|
|
typ_prezentace = models.CharField(
|
|
'typ prezentace', max_length=16, choices=TYP_CHOICES,
|
|
blank=False, default=TYP_VELETRH,
|
|
)
|
|
|
|
prezentace = models.FileField(
|
|
'prezentace', help_text='Prezentace nebo fotka posteru',
|
|
upload_to=generate_filename_konfera, blank=True,
|
|
)
|
|
|
|
materialy = models.FileField(
|
|
'materialy',
|
|
help_text='Další materiály ke konfeře zabalené do jednoho souboru',
|
|
upload_to=generate_filename_konfera, blank=True,
|
|
)
|
|
|
|
def __str__(self):
|
|
return "{}: ({})".format(self.nazev, self.soustredeni)
|
|
|
|
def cislo_node(self):
|
|
return None
|