mamweb/soustredeni/models/soustredeni.py

92 lines
2.5 KiB
Python

from reversion import revisions as reversion
from django.db import models
from django.urls import reverse
from mamweb.models.base import SeminarModelBase
from personalni.models.resitel import Resitel
from personalni.models.organizator import Organizator
from tvorba.models.rocnik import Rocnik
@reversion.register(ignore_duplicates=True)
class Soustredeni(SeminarModelBase):
class Meta:
db_table = 'seminar_soustredeni'
verbose_name = 'Soustředění'
verbose_name_plural = 'Soustředění'
ordering = ['-rocnik__rocnik', '-datum_zacatku']
# Interní ID
id = models.AutoField(primary_key=True)
rocnik = models.ForeignKey(
Rocnik, verbose_name='ročník', related_name='soustredeni',
on_delete=models.PROTECT,
)
datum_zacatku = models.DateField(
'datum začátku', blank=True, null=True,
help_text='První den soustředění',
)
datum_konce = models.DateField(
'datum konce', blank=True, null=True,
help_text='Poslední den soustředění',
)
verejne_db = models.BooleanField(
'soustředění zveřejněno', db_column='verejne', default=False,
)
misto = models.CharField(
'místo soustředění', max_length=256, blank=True, default='',
help_text='Místo (název obce, volitelně též objektu',
)
ucastnici = models.ManyToManyField(
Resitel, verbose_name='účastníci soustředění',
help_text='Seznam účastníků soustředění', through='Soustredeni_Ucastnici',
)
organizatori = models.ManyToManyField(
Organizator,
verbose_name='Organizátoři soustředění',
help_text='Seznam organizátorů soustředění',
through='Soustredeni_Organizatori',
)
text = models.TextField('text k soustředění (HTML)', blank=True, default='')
TYP_JARNI = 'jarni'
TYP_PODZIMNI = 'podzimni'
TYP_VIKEND = 'vikend'
TYP_VYLET = 'vylet'
TYP_CHOICES = [
(TYP_JARNI, 'Jarní soustředění'),
(TYP_PODZIMNI, 'Podzimní soustředění'),
(TYP_VIKEND, 'Víkendový sraz'),
(TYP_VYLET, 'Výlet'),
]
typ = models.CharField(
'typ akce', max_length=16, choices=TYP_CHOICES, blank=False,
default=TYP_PODZIMNI,
)
exportovat = models.BooleanField(
'export do AESOPa', db_column='exportovat', default=False,
help_text='Exportuje se jen podle tohoto flagu (ne veřejnosti)',
)
def __str__(self):
return '{} ({})'.format(self.misto, self.datum_zacatku)
def verejne(self):
return self.verejne_db
verejne.boolean = True
def verejne_url(self):
# return reverse('seminar_soustredeni', kwargs={'pk': self.id})
return reverse('seminar_seznam_soustredeni')