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')