Opravy pro Django 2.0
Zatím jen část.
This commit is contained in:
parent
f89e696fe3
commit
a1731ef157
9 changed files with 78 additions and 54 deletions
|
@ -57,7 +57,7 @@ class Obrazek(models.Model):
|
||||||
nazev = models.CharField('Název', max_length=50, blank=True, null=True)
|
nazev = models.CharField('Název', max_length=50, blank=True, null=True)
|
||||||
popis = models.TextField('Popis', blank=True, null=True)
|
popis = models.TextField('Popis', blank=True, null=True)
|
||||||
datum_vlozeni = models.DateTimeField('Datum vložení', auto_now_add=True)
|
datum_vlozeni = models.DateTimeField('Datum vložení', auto_now_add=True)
|
||||||
galerie = models.ForeignKey('Galerie', blank=True, null=True)
|
galerie = models.ForeignKey('Galerie', blank=True, null=True, on_delete=models.SET_NULL)
|
||||||
poradi = models.IntegerField('Pořadí', blank=True, null=True)
|
poradi = models.IntegerField('Pořadí', blank=True, null=True)
|
||||||
|
|
||||||
def __unicode__(self):
|
def __unicode__(self):
|
||||||
|
@ -88,8 +88,10 @@ class Galerie(models.Model):
|
||||||
popis = models.TextField('Popis', blank = True, null = True)
|
popis = models.TextField('Popis', blank = True, null = True)
|
||||||
titulni_obrazek = models.ForeignKey(Obrazek, blank = True, null = True, related_name = "+", on_delete = models.SET_NULL)
|
titulni_obrazek = models.ForeignKey(Obrazek, blank = True, null = True, related_name = "+", on_delete = models.SET_NULL)
|
||||||
zobrazit = models.IntegerField('Zobrazit?', default = ORG, choices = VIDITELNOST)
|
zobrazit = models.IntegerField('Zobrazit?', default = ORG, choices = VIDITELNOST)
|
||||||
galerie_up = models.ForeignKey('Galerie', blank = True, null = True)
|
galerie_up = models.ForeignKey('Galerie', blank = True, null = True,
|
||||||
soustredeni = models.ForeignKey(Soustredeni, blank = True, null = True)
|
on_delete=models.SET_NULL)
|
||||||
|
soustredeni = models.ForeignKey(Soustredeni, blank = True, null = True,
|
||||||
|
on_delete=models.PROTECT)
|
||||||
poradi = models.IntegerField('Pořadí', blank = True, null = True)
|
poradi = models.IntegerField('Pořadí', blank = True, null = True)
|
||||||
|
|
||||||
def __unicode__(self):
|
def __unicode__(self):
|
||||||
|
|
|
@ -49,9 +49,8 @@ class KorekturovanePDF(models.Model):
|
||||||
pdf = models.FileField(u'PDF', upload_to = generate_filename)
|
pdf = models.FileField(u'PDF', upload_to = generate_filename)
|
||||||
|
|
||||||
org = models.ForeignKey(Organizator, blank=True,
|
org = models.ForeignKey(Organizator, blank=True,
|
||||||
help_text='Zodpovědný organizátor za obsah',
|
help_text='Zodpovědný organizátor za obsah',
|
||||||
null=True,
|
null=True, default=None, on_delete=models.SET_NULL)
|
||||||
default=None)
|
|
||||||
|
|
||||||
stran = models.IntegerField(u'počet stran', help_text='Počet stran PDF',
|
stran = models.IntegerField(u'počet stran', help_text='Počet stran PDF',
|
||||||
default=0)
|
default=0)
|
||||||
|
@ -124,7 +123,7 @@ class Oprava(models.Model):
|
||||||
#Interní ID
|
#Interní ID
|
||||||
id = models.AutoField(primary_key = True)
|
id = models.AutoField(primary_key = True)
|
||||||
|
|
||||||
pdf = models.ForeignKey(KorekturovanePDF, default=-1)
|
pdf = models.ForeignKey(KorekturovanePDF, default=-1, on_delete=models.PROTECT)
|
||||||
|
|
||||||
strana = models.IntegerField(u'strana s opravou', help_text='Strana s opravou (od 0)')
|
strana = models.IntegerField(u'strana s opravou', help_text='Strana s opravou (od 0)')
|
||||||
|
|
||||||
|
@ -146,7 +145,7 @@ class Oprava(models.Model):
|
||||||
|
|
||||||
autor = models.ForeignKey(Organizator, blank = True,
|
autor = models.ForeignKey(Organizator, blank = True,
|
||||||
help_text='Autor opravy',
|
help_text='Autor opravy',
|
||||||
null = True)
|
null = True, on_delete=models.SET_NULL)
|
||||||
|
|
||||||
text = models.TextField(u'text opravy',blank = True, help_text='Text opravy')
|
text = models.TextField(u'text opravy',blank = True, help_text='Text opravy')
|
||||||
|
|
||||||
|
@ -173,10 +172,10 @@ class Komentar(models.Model):
|
||||||
|
|
||||||
cas = models.DateTimeField(u'čas komentáře',default=timezone.now,help_text = 'Čas zadání komentáře')
|
cas = models.DateTimeField(u'čas komentáře',default=timezone.now,help_text = 'Čas zadání komentáře')
|
||||||
|
|
||||||
oprava = models.ForeignKey(Oprava)
|
oprava = models.ForeignKey(Oprava, on_delete=models.CASCADE)
|
||||||
autor = models.ForeignKey(Organizator, blank = True,
|
autor = models.ForeignKey(Organizator, blank = True,
|
||||||
help_text = u'Autor komentáře',
|
help_text = u'Autor komentáře',
|
||||||
null = True)
|
null = True, on_delete=models.SET_NULL)
|
||||||
|
|
||||||
text = models.TextField(u'text komentáře',blank = True, help_text='Text komentáře')
|
text = models.TextField(u'text komentáře',blank = True, help_text='Text komentáře')
|
||||||
|
|
||||||
|
|
|
@ -52,7 +52,7 @@ AUTHENTICATION_BACKENDS = (
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
MIDDLEWARE_CLASSES = (
|
MIDDLEWARE = (
|
||||||
'reversion.middleware.RevisionMiddleware',
|
'reversion.middleware.RevisionMiddleware',
|
||||||
'django.contrib.sessions.middleware.SessionMiddleware',
|
'django.contrib.sessions.middleware.SessionMiddleware',
|
||||||
'django.middleware.common.CommonMiddleware',
|
'django.middleware.common.CommonMiddleware',
|
||||||
|
|
|
@ -10,7 +10,7 @@ import os.path
|
||||||
# Import common settings
|
# Import common settings
|
||||||
from .settings_common import *
|
from .settings_common import *
|
||||||
|
|
||||||
MIDDLEWARE_CLASSES += (
|
MIDDLEWARE += (
|
||||||
'debug_toolbar.middleware.DebugToolbarMiddleware',
|
'debug_toolbar.middleware.DebugToolbarMiddleware',
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -25,7 +25,8 @@ class Seznam(models.Model):
|
||||||
ordering = ['soustredeni', 'stav']
|
ordering = ['soustredeni', 'stav']
|
||||||
|
|
||||||
id = models.AutoField(primary_key = True)
|
id = models.AutoField(primary_key = True)
|
||||||
soustredeni = models.ForeignKey(Soustredeni,null = True, default = None)
|
soustredeni = models.ForeignKey(Soustredeni,null = True, default = None,
|
||||||
|
on_delete=models.PROTECT)
|
||||||
stav = models.IntegerField('Stav',choices=STAV_CHOICES,default = STAV_NAVRH)
|
stav = models.IntegerField('Stav',choices=STAV_CHOICES,default = STAV_NAVRH)
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
|
@ -55,7 +56,7 @@ class Prednaska(models.Model):
|
||||||
|
|
||||||
id = models.AutoField(primary_key = True)
|
id = models.AutoField(primary_key = True)
|
||||||
nazev = models.CharField('Název', max_length = 300)
|
nazev = models.CharField('Název', max_length = 300)
|
||||||
org = models.ForeignKey(Organizator)
|
org = models.ForeignKey(Organizator, on_delete=models.PROTECT)
|
||||||
popis = models.TextField('Popis pro orgy',null = True, blank = True,help_text = 'Neveřejný popis pro ostatní orgy')
|
popis = models.TextField('Popis pro orgy',null = True, blank = True,help_text = 'Neveřejný popis pro ostatní orgy')
|
||||||
anotace = models.TextField('Anotace',null = True, blank = True, help_text = 'Veřejná anotace v hlasování')
|
anotace = models.TextField('Anotace',null = True, blank = True, help_text = 'Veřejná anotace v hlasování')
|
||||||
obtiznost = models.IntegerField('Obtížnost', choices=CHOICES_OBTIZNOST)
|
obtiznost = models.IntegerField('Obtížnost', choices=CHOICES_OBTIZNOST)
|
||||||
|
@ -75,10 +76,10 @@ class Hlasovani(models.Model):
|
||||||
verbose_name_plural = 'Hlasování'
|
verbose_name_plural = 'Hlasování'
|
||||||
ordering = ['ucastnik', 'prednaska']
|
ordering = ['ucastnik', 'prednaska']
|
||||||
id = models.AutoField(primary_key = True)
|
id = models.AutoField(primary_key = True)
|
||||||
prednaska = models.ForeignKey(Prednaska)
|
prednaska = models.ForeignKey(Prednaska, on_delete=models.CASCADE)
|
||||||
body = models.IntegerField('Body', default = 0, choices = CHOICES_BODY)
|
body = models.IntegerField('Body', default = 0, choices = CHOICES_BODY)
|
||||||
ucastnik = models.CharField('Účastník', max_length = 100)
|
ucastnik = models.CharField('Účastník', max_length = 100)
|
||||||
seznam = models.ForeignKey(Seznam)
|
seznam = models.ForeignKey(Seznam,null=True,on_delete=models.SET_NULL)
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return force_unicode("{} dal {} bodů {} v seznamu {}".format(self.ucastnik,
|
return force_unicode("{} dal {} bodů {} v seznamu {}".format(self.ucastnik,
|
||||||
|
|
|
@ -9,7 +9,7 @@ from ckeditor_uploader.widgets import CKEditorUploadingWidget
|
||||||
from django.db.models import Count
|
from django.db.models import Count
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from django.utils.safestring import mark_safe
|
from django.utils.safestring import mark_safe
|
||||||
from django.core.urlresolvers import reverse
|
from django.urls import reverse
|
||||||
|
|
||||||
from django.contrib.auth.models import User
|
from django.contrib.auth.models import User
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import datetime, django
|
import datetime, django
|
||||||
from django.shortcuts import get_object_or_404, render
|
from django.shortcuts import get_object_or_404, render
|
||||||
from django.http import HttpResponse
|
from django.http import HttpResponse
|
||||||
from django.core.urlresolvers import reverse
|
from django.urls import reverse
|
||||||
from django.views import generic
|
from django.views import generic
|
||||||
from django.utils.encoding import force_text
|
from django.utils.encoding import force_text
|
||||||
|
|
||||||
|
|
|
@ -9,7 +9,7 @@ from django.conf import settings
|
||||||
from django.utils.encoding import python_2_unicode_compatible
|
from django.utils.encoding import python_2_unicode_compatible
|
||||||
from django.utils.encoding import force_text
|
from django.utils.encoding import force_text
|
||||||
from django.utils.text import slugify
|
from django.utils.text import slugify
|
||||||
from django.core.urlresolvers import reverse
|
from django.urls import reverse
|
||||||
from django.core.cache import cache
|
from django.core.cache import cache
|
||||||
from django.core.exceptions import ObjectDoesNotExist
|
from django.core.exceptions import ObjectDoesNotExist
|
||||||
from django.utils.text import get_valid_filename
|
from django.utils.text import get_valid_filename
|
||||||
|
@ -64,7 +64,7 @@ class Osoba(SeminarModelBase):
|
||||||
|
|
||||||
# User, pokud má na webu účet
|
# User, pokud má na webu účet
|
||||||
user = models.OneToOneField(settings.AUTH_USER_MODEL, blank=True, null=True,
|
user = models.OneToOneField(settings.AUTH_USER_MODEL, blank=True, null=True,
|
||||||
verbose_name='uživatel')
|
verbose_name='uživatel', on_delete=models.DO_NOTHING)
|
||||||
|
|
||||||
# Pohlaví. Že ho neznáme se snad nestane (a ušetří to práci při programování)
|
# Pohlaví. Že ho neznáme se snad nestane (a ušetří to práci při programování)
|
||||||
pohlavi_muz = models.BooleanField('pohlaví (muž)', default=False)
|
pohlavi_muz = models.BooleanField('pohlaví (muž)', default=False)
|
||||||
|
@ -180,7 +180,7 @@ class Skola(SeminarModelBase):
|
||||||
help_text='Neveřejná poznámka ke škole (plain text)')
|
help_text='Neveřejná poznámka ke škole (plain text)')
|
||||||
|
|
||||||
kontaktni_osoba = models.ForeignKey(Osoba, verbose_name='Kontaktní osoba',
|
kontaktni_osoba = models.ForeignKey(Osoba, verbose_name='Kontaktní osoba',
|
||||||
blank=True, null=True)
|
blank=True, null=True, on_delete=models.SET_NULL)
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return '{}, {}, {}'.format(self.nazev, self.ulice, self.mesto)
|
return '{}, {}, {}'.format(self.nazev, self.ulice, self.mesto)
|
||||||
|
@ -199,7 +199,8 @@ class Prijemce(SeminarModelBase):
|
||||||
help_text='Neveřejná poznámka k příemci čísel (plain text)')
|
help_text='Neveřejná poznámka k příemci čísel (plain text)')
|
||||||
|
|
||||||
osoba = models.OneToOneField(Osoba, verbose_name='komu', blank=False, null=False,
|
osoba = models.OneToOneField(Osoba, verbose_name='komu', blank=False, null=False,
|
||||||
help_text='Které osobě či na jakou adresu se mají zasílat čísla')
|
help_text='Které osobě či na jakou adresu se mají zasílat čísla',
|
||||||
|
on_delete=models.CASCADE)
|
||||||
|
|
||||||
# FIXME: možná chceme něco jako vazbu na osobu XOR školu a počet kusů k zaslání
|
# FIXME: možná chceme něco jako vazbu na osobu XOR školu a počet kusů k zaslání
|
||||||
# FIXME: a možná taky posílání na mail a možná taky přes něj chceme posílat i řešitelům
|
# FIXME: a možná taky posílání na mail a možná taky přes něj chceme posílat i řešitelům
|
||||||
|
@ -220,9 +221,12 @@ class Resitel(SeminarModelBase):
|
||||||
# Interní ID
|
# Interní ID
|
||||||
id = models.AutoField(primary_key = True)
|
id = models.AutoField(primary_key = True)
|
||||||
|
|
||||||
osoba = models.OneToOneField(Osoba, blank=False, null=True, verbose_name='osoba') # FIXME opravit po prvni migraci
|
osoba = models.OneToOneField(Osoba, blank=False, null=True, verbose_name='osoba',
|
||||||
|
on_delete=models.SET_NULL) # FIXME opravit po prvni migraci
|
||||||
|
|
||||||
|
|
||||||
skola = models.ForeignKey(Skola, blank=True, null=True, verbose_name='škola')
|
skola = models.ForeignKey(Skola, blank=True, null=True, verbose_name='škola',
|
||||||
|
on_delete=models.SET_NULL)
|
||||||
|
|
||||||
# Očekávaný rok maturity a vyřazení z aktivních řešitelů
|
# Očekávaný rok maturity a vyřazení z aktivních řešitelů
|
||||||
rok_maturity = models.IntegerField('rok maturity', blank=True, null=True)
|
rok_maturity = models.IntegerField('rok maturity', blank=True, null=True)
|
||||||
|
@ -378,7 +382,8 @@ class Cislo(SeminarModelBase):
|
||||||
# Interní ID
|
# Interní ID
|
||||||
id = models.AutoField(primary_key = True)
|
id = models.AutoField(primary_key = True)
|
||||||
|
|
||||||
rocnik = models.ForeignKey(Rocnik, verbose_name='ročník', related_name='cisla', db_index=True)
|
rocnik = models.ForeignKey(Rocnik, verbose_name='ročník', related_name='cisla',
|
||||||
|
db_index=True,on_delete=models.PROTECT)
|
||||||
|
|
||||||
cislo = models.CharField('název čísla', max_length=32, db_index=True,
|
cislo = models.CharField('název čísla', max_length=32, db_index=True,
|
||||||
help_text='Většinou jen "1", vyjímečně "7-8", lexikograficky určuje pořadí v ročníku!')
|
help_text='Většinou jen "1", vyjímečně "7-8", lexikograficky určuje pořadí v ročníku!')
|
||||||
|
@ -456,7 +461,8 @@ class Organizator(SeminarModelBase):
|
||||||
# zmena dedicnosti z models.Model na SeminarModelBase, potencialni vznik bugu
|
# zmena dedicnosti z models.Model na SeminarModelBase, potencialni vznik bugu
|
||||||
|
|
||||||
osoba = models.OneToOneField(Osoba, verbose_name='osoba', related_name='org',
|
osoba = models.OneToOneField(Osoba, verbose_name='osoba', related_name='org',
|
||||||
help_text='osobní údaje organizátora', null=True, blank=False) #FIXME opravit po migraci
|
help_text='osobní údaje organizátora', null=True, blank=False,
|
||||||
|
on_delete=models.SET_NULL) #FIXME opravit po migraci
|
||||||
|
|
||||||
vytvoreno = models.DateTimeField(
|
vytvoreno = models.DateTimeField(
|
||||||
'Vytvořeno',
|
'Vytvořeno',
|
||||||
|
@ -506,7 +512,8 @@ class Soustredeni(SeminarModelBase):
|
||||||
# Interní ID
|
# Interní ID
|
||||||
id = models.AutoField(primary_key = True)
|
id = models.AutoField(primary_key = True)
|
||||||
|
|
||||||
rocnik = models.ForeignKey(Rocnik, verbose_name='ročník', related_name='soustredeni')
|
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,
|
datum_zacatku = models.DateField('datum začátku', blank=True, null=True,
|
||||||
help_text='První den soustředění')
|
help_text='První den soustředění')
|
||||||
|
@ -575,7 +582,8 @@ class Problem(SeminarModelBase):
|
||||||
|
|
||||||
# Problém má podproblémy
|
# Problém má podproblémy
|
||||||
nadproblem = models.ForeignKey('self', verbose_name='nadřazený problém',
|
nadproblem = models.ForeignKey('self', verbose_name='nadřazený problém',
|
||||||
related_name='nadproblem_%(class)s', null=True, blank=True)
|
related_name='nadproblem_%(class)s', null=True, blank=True,
|
||||||
|
on_delete=models.SET_NULL)
|
||||||
|
|
||||||
STAV_NAVRH = 'navrh'
|
STAV_NAVRH = 'navrh'
|
||||||
STAV_ZADANY = 'zadany'
|
STAV_ZADANY = 'zadany'
|
||||||
|
@ -596,10 +604,12 @@ class Problem(SeminarModelBase):
|
||||||
help_text='Neveřejný návrh úlohy, návrh řešení, text zadání, poznámky ...')
|
help_text='Neveřejný návrh úlohy, návrh řešení, text zadání, poznámky ...')
|
||||||
|
|
||||||
autor = models.ForeignKey(Organizator, verbose_name='autor problému',
|
autor = models.ForeignKey(Organizator, verbose_name='autor problému',
|
||||||
related_name='autor_problemu_%(class)s', null=True, blank=True)
|
related_name='autor_problemu_%(class)s', null=True, blank=True,
|
||||||
|
on_delete=models.SET_NULL)
|
||||||
|
|
||||||
garant = models.ForeignKey(Organizator, verbose_name='garant zadaného problému',
|
garant = models.ForeignKey(Organizator, verbose_name='garant zadaného problému',
|
||||||
related_name='garant_problemu_%(class)s', null=True, blank=True)
|
related_name='garant_problemu_%(class)s', null=True, blank=True,
|
||||||
|
on_delete=models.SET_NULL)
|
||||||
|
|
||||||
opravovatele = models.ManyToManyField(Organizator, verbose_name='opravovatelé',
|
opravovatele = models.ManyToManyField(Organizator, verbose_name='opravovatelé',
|
||||||
blank=True, related_name='opravovatele_%(class)s')
|
blank=True, related_name='opravovatele_%(class)s')
|
||||||
|
@ -662,7 +672,8 @@ class Tema(Problem):
|
||||||
tema_typ = models.CharField('Typ tématu', max_length=16, choices=TEMA_CHOICES,
|
tema_typ = models.CharField('Typ tématu', max_length=16, choices=TEMA_CHOICES,
|
||||||
blank=False, default=TEMA_TEMA)
|
blank=False, default=TEMA_TEMA)
|
||||||
|
|
||||||
rocnik = models.ForeignKey(Rocnik, verbose_name='ročník',blank=True, null=True)
|
rocnik = models.ForeignKey(Rocnik, verbose_name='ročník',blank=True, null=True,
|
||||||
|
on_delete=models.PROTECT)
|
||||||
|
|
||||||
def kod_v_rocniku(self):
|
def kod_v_rocniku(self):
|
||||||
if self.stav == 'zadany':
|
if self.stav == 'zadany':
|
||||||
|
@ -677,7 +688,8 @@ class Clanek(Problem):
|
||||||
verbose_name = 'Článek'
|
verbose_name = 'Článek'
|
||||||
verbose_name_plural = 'Články'
|
verbose_name_plural = 'Články'
|
||||||
|
|
||||||
cislo = models.ForeignKey(Cislo, verbose_name='číslo', blank=True, null=True)
|
cislo = models.ForeignKey(Cislo, verbose_name='číslo', blank=True, null=True,
|
||||||
|
on_delete=models.PROTECT)
|
||||||
def kod_v_rocniku(self):
|
def kod_v_rocniku(self):
|
||||||
if self.stav == 'zadany':
|
if self.stav == 'zadany':
|
||||||
# Nemělo by být potřeba
|
# Nemělo by být potřeba
|
||||||
|
@ -708,14 +720,15 @@ class Uloha(Problem):
|
||||||
verbose_name_plural = 'Úlohy'
|
verbose_name_plural = 'Úlohy'
|
||||||
|
|
||||||
cislo_zadani = models.ForeignKey(Cislo, verbose_name='číslo zadání', blank=True,
|
cislo_zadani = models.ForeignKey(Cislo, verbose_name='číslo zadání', blank=True,
|
||||||
null=True, related_name='zadane_ulohy')
|
null=True, related_name='zadane_ulohy', on_delete=models.PROTECT)
|
||||||
|
|
||||||
cislo_deadline = models.ForeignKey(Cislo, verbose_name='číslo deadlinu', blank=True,
|
cislo_deadline = models.ForeignKey(Cislo, verbose_name='číslo deadlinu', blank=True,
|
||||||
null=True, related_name='deadlinove_ulohy')
|
null=True, related_name='deadlinove_ulohy', on_delete=models.PROTECT)
|
||||||
|
|
||||||
cislo_reseni = models.ForeignKey(Cislo, verbose_name='číslo řešení', blank=True,
|
cislo_reseni = models.ForeignKey(Cislo, verbose_name='číslo řešení', blank=True,
|
||||||
null=True, related_name='resene_ulohy',
|
null=True, related_name='resene_ulohy',
|
||||||
help_text='Číslo s řešením úlohy, jen pro úlohy')
|
help_text='Číslo s řešením úlohy, jen pro úlohy',
|
||||||
|
on_delete=models.PROTECT)
|
||||||
|
|
||||||
max_body = models.DecimalField(max_digits=8, decimal_places=1, verbose_name='maximum bodů',
|
max_body = models.DecimalField(max_digits=8, decimal_places=1, verbose_name='maximum bodů',
|
||||||
blank=True, null=True)
|
blank=True, null=True)
|
||||||
|
@ -765,7 +778,8 @@ class Reseni(SeminarModelBase):
|
||||||
default=FORMA_EMAIL)
|
default=FORMA_EMAIL)
|
||||||
|
|
||||||
text_cely = models.OneToOneField(Text, verbose_name='Plná verze textu řešení',
|
text_cely = models.OneToOneField(Text, verbose_name='Plná verze textu řešení',
|
||||||
blank=True, null=True, related_name="reseni_cely_set")
|
blank=True, null=True, related_name="reseni_cely_set",
|
||||||
|
on_delete=models.SET_NULL)
|
||||||
|
|
||||||
text_zkraceny = models.ManyToManyField(Text, verbose_name='zkrácené verze řešení',
|
text_zkraceny = models.ManyToManyField(Text, verbose_name='zkrácené verze řešení',
|
||||||
help_text='Seznam úryvků z řešení',related_name="reseni_zkraceny_set")
|
help_text='Seznam úryvků z řešení',related_name="reseni_zkraceny_set")
|
||||||
|
@ -801,11 +815,11 @@ class Hodnoceni(SeminarModelBase):
|
||||||
blank=False, null=False)
|
blank=False, null=False)
|
||||||
|
|
||||||
cislo_body = models.ForeignKey(Cislo, verbose_name='číslo pro body',
|
cislo_body = models.ForeignKey(Cislo, verbose_name='číslo pro body',
|
||||||
related_name='hodnoceni', blank=False, null=False)
|
related_name='hodnoceni', blank=False, null=False, on_delete=models.PROTECT)
|
||||||
|
|
||||||
reseni = models.ForeignKey(Reseni, verbose_name='řešení')
|
reseni = models.ForeignKey(Reseni, verbose_name='řešení', on_delete=models.CASCADE)
|
||||||
|
|
||||||
problem = models.ForeignKey(Problem, verbose_name='problém')
|
problem = models.ForeignKey(Problem, verbose_name='problém', on_delete=models.PROTECT)
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return "{}, {}, {}".format(self.problem, self.reseni, self.body)
|
return "{}, {}, {}".format(self.problem, self.reseni, self.body)
|
||||||
|
@ -856,7 +870,8 @@ class PrilohaReseni(SeminarModelBase):
|
||||||
# Interní ID
|
# Interní ID
|
||||||
id = models.AutoField(primary_key = True)
|
id = models.AutoField(primary_key = True)
|
||||||
|
|
||||||
reseni = models.ForeignKey(Reseni, verbose_name='řešení', related_name='prilohy')
|
reseni = models.ForeignKey(Reseni, verbose_name='řešení', related_name='prilohy',
|
||||||
|
on_delete=models.CASCADE)
|
||||||
|
|
||||||
vytvoreno = models.DateTimeField('vytvořeno', default=timezone.now, blank=True, editable=False)
|
vytvoreno = models.DateTimeField('vytvořeno', default=timezone.now, blank=True, editable=False)
|
||||||
|
|
||||||
|
@ -887,7 +902,8 @@ class Pohadka(SeminarModelBase):
|
||||||
|
|
||||||
# Při nahrávání z TeXu není vyplnění vyžadováno, v adminu je
|
# Při nahrávání z TeXu není vyplnění vyžadováno, v adminu je
|
||||||
null=True,
|
null=True,
|
||||||
blank=False
|
blank=False,
|
||||||
|
on_delete=models.SET_NULL
|
||||||
)
|
)
|
||||||
|
|
||||||
vytvoreno = models.DateTimeField(
|
vytvoreno = models.DateTimeField(
|
||||||
|
@ -915,9 +931,10 @@ class Soustredeni_Ucastnici(SeminarModelBase):
|
||||||
# Interní ID
|
# Interní ID
|
||||||
id = models.AutoField(primary_key = True)
|
id = models.AutoField(primary_key = True)
|
||||||
|
|
||||||
resitel = models.ForeignKey(Resitel, verbose_name='řešitel')
|
resitel = models.ForeignKey(Resitel, verbose_name='řešitel', on_delete=models.PROTECT)
|
||||||
|
|
||||||
soustredeni = models.ForeignKey(Soustredeni, verbose_name='soustředění')
|
soustredeni = models.ForeignKey(Soustredeni, verbose_name='soustředění',
|
||||||
|
on_delete=models.PROTECT)
|
||||||
|
|
||||||
poznamka = models.TextField('neveřejná poznámka', blank=True,
|
poznamka = models.TextField('neveřejná poznámka', blank=True,
|
||||||
help_text='Neveřejná poznámka k účasti (plain text)')
|
help_text='Neveřejná poznámka k účasti (plain text)')
|
||||||
|
@ -939,9 +956,11 @@ class Soustredeni_Organizatori(SeminarModelBase):
|
||||||
# Interní ID
|
# Interní ID
|
||||||
id = models.AutoField(primary_key = True)
|
id = models.AutoField(primary_key = True)
|
||||||
|
|
||||||
organizator = models.ForeignKey(Organizator, verbose_name='organizátor')
|
organizator = models.ForeignKey(Organizator, verbose_name='organizátor',
|
||||||
|
on_delete=models.PROTECT)
|
||||||
|
|
||||||
soustredeni = models.ForeignKey(Soustredeni, verbose_name='soustředění')
|
soustredeni = models.ForeignKey(Soustredeni, verbose_name='soustředění',
|
||||||
|
on_delete=models.PROTECT)
|
||||||
|
|
||||||
poznamka = models.TextField('neveřejná poznámka', blank=True,
|
poznamka = models.TextField('neveřejná poznámka', blank=True,
|
||||||
help_text='Neveřejná poznámka k účasti organizátora (plain text)')
|
help_text='Neveřejná poznámka k účasti organizátora (plain text)')
|
||||||
|
@ -1018,9 +1037,9 @@ class Reseni_Resitele(models.Model):
|
||||||
# Interní ID
|
# Interní ID
|
||||||
id = models.AutoField(primary_key = True)
|
id = models.AutoField(primary_key = True)
|
||||||
|
|
||||||
resitele = models.ForeignKey(Resitel, verbose_name='řešitel')
|
resitele = models.ForeignKey(Resitel, verbose_name='řešitel', on_delete=models.PROTECT)
|
||||||
|
|
||||||
reseni = models.ForeignKey(Reseni, verbose_name='řešení')
|
reseni = models.ForeignKey(Reseni, verbose_name='řešení', on_delete=models.CASCADE)
|
||||||
|
|
||||||
# podil - jakou merou se ktery resitel podilel na danem reseni
|
# podil - jakou merou se ktery resitel podilel na danem reseni
|
||||||
# - pouziti v budoucnu, pokud by resitele nemeli dostat vsichni stejne bodu za spolecne reseni
|
# - pouziti v budoucnu, pokud by resitele nemeli dostat vsichni stejne bodu za spolecne reseni
|
||||||
|
@ -1041,9 +1060,9 @@ class Konfery_Ucastnici(models.Model):
|
||||||
# Interní ID
|
# Interní ID
|
||||||
id = models.AutoField(primary_key = True)
|
id = models.AutoField(primary_key = True)
|
||||||
|
|
||||||
resitel = models.ForeignKey(Resitel, verbose_name='řešitel')
|
resitel = models.ForeignKey(Resitel, verbose_name='řešitel', on_delete=models.PROTECT)
|
||||||
|
|
||||||
konfera = models.ForeignKey(Konfera, verbose_name='konfera')
|
konfera = models.ForeignKey(Konfera, verbose_name='konfera', on_delete=models.CASCADE)
|
||||||
|
|
||||||
poznamka = models.TextField('neveřejná poznámka', blank=True,
|
poznamka = models.TextField('neveřejná poznámka', blank=True,
|
||||||
help_text='Neveřejná poznámka k účasti (plain text)')
|
help_text='Neveřejná poznámka k účasti (plain text)')
|
||||||
|
@ -1065,7 +1084,8 @@ class Obrazek(SeminarModelBase):
|
||||||
null=True, blank=True)
|
null=True, blank=True)
|
||||||
|
|
||||||
text = models.ForeignKey(Text, verbose_name='text',
|
text = models.ForeignKey(Text, verbose_name='text',
|
||||||
help_text='text, ve kterém se obrázek vyskytuje', null=False, blank=False)
|
help_text='text, ve kterém se obrázek vyskytuje',
|
||||||
|
null=False, blank=False, on_delete=models.CASCADE)
|
||||||
|
|
||||||
do_cisla_barevny = models.FileField('barevný obrázek do čísla',
|
do_cisla_barevny = models.FileField('barevný obrázek do čísla',
|
||||||
help_text = 'Barevná verze obrázku do čísla',
|
help_text = 'Barevná verze obrázku do čísla',
|
||||||
|
@ -1284,10 +1304,11 @@ class Nastaveni(SingletonModel):
|
||||||
db_table = 'seminar_nastaveni'
|
db_table = 'seminar_nastaveni'
|
||||||
verbose_name = 'Nastavení semináře'
|
verbose_name = 'Nastavení semináře'
|
||||||
|
|
||||||
aktualni_rocnik = models.ForeignKey(Rocnik, verbose_name='aktuální ročník', null=False)
|
aktualni_rocnik = models.ForeignKey(Rocnik, verbose_name='aktuální ročník',
|
||||||
|
null=False, on_delete=models.PROTECT)
|
||||||
|
|
||||||
aktualni_cislo = models.ForeignKey(Cislo, verbose_name='poslední vydané číslo',
|
aktualni_cislo = models.ForeignKey(Cislo, verbose_name='poslední vydané číslo',
|
||||||
null=False)
|
null=False, on_delete=models.PROTECT)
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return 'Nastavení semináře'
|
return 'Nastavení semináře'
|
||||||
|
@ -1321,7 +1342,8 @@ class Novinky(models.Model):
|
||||||
],
|
],
|
||||||
options={'quality': 95})
|
options={'quality': 95})
|
||||||
|
|
||||||
autor = models.ForeignKey(Organizator, verbose_name='Autor novinky', null=True)
|
autor = models.ForeignKey(Organizator, verbose_name='Autor novinky', null=True,
|
||||||
|
on_delete=models.SET_NULL)
|
||||||
|
|
||||||
zverejneno = models.BooleanField('Zveřejněno', default=False)
|
zverejneno = models.BooleanField('Zveřejněno', default=False)
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
from django.shortcuts import get_object_or_404, render
|
from django.shortcuts import get_object_or_404, render
|
||||||
from django.http import HttpResponse, HttpResponseRedirect, HttpResponseForbidden, JsonResponse
|
from django.http import HttpResponse, HttpResponseRedirect, HttpResponseForbidden, JsonResponse
|
||||||
from django.core.urlresolvers import reverse
|
from django.urls import reverse
|
||||||
from django.core.exceptions import PermissionDenied, ObjectDoesNotExist
|
from django.core.exceptions import PermissionDenied, ObjectDoesNotExist
|
||||||
from django.views import generic
|
from django.views import generic
|
||||||
from django.utils.translation import ugettext as _
|
from django.utils.translation import ugettext as _
|
||||||
|
|
Loading…
Reference in a new issue