Tomas Gavenciak
10 years ago
5 changed files with 261 additions and 0 deletions
@ -0,0 +1,27 @@ |
|||
# -*- coding: utf-8 -*- |
|||
from django.contrib import admin |
|||
from seminar.models import Skola, Resitel |
|||
|
|||
|
|||
class SkolaAdmin(admin.ModelAdmin): |
|||
fieldsets = [ |
|||
(None, {'fields': ['nazev', 'kratky_nazev']}), |
|||
(u'Interní ID', {'fields': ['aesop_id', 'izo'], 'classes': ['collapse']}), |
|||
(u'Adresa', {'fields': ['ulice', 'mesto', 'psc', 'stat']}), |
|||
] |
|||
list_display = ['nazev', 'aesop_id', 'mesto'] |
|||
|
|||
admin.site.register(Skola, SkolaAdmin) |
|||
|
|||
|
|||
class ResitelAdmin(admin.ModelAdmin): |
|||
fieldsets = [ |
|||
(None, {'fields': ['jmeno', 'prijmeni', 'user']}), |
|||
(u'Škola', {'fields': ['skola', 'rok_maturity']}), |
|||
(u'Seminář', {'fields': ['datum_souhlasu_udaje', 'datum_souhlasu_zasilani', 'datum_prihlaseni', 'zasilat']}), |
|||
(u'Osobní údaje', {'fields': ['pohlavi_muz', 'datum_narozeni', 'email', 'telefon']}), |
|||
(u'Adresa', {'fields': ['ulice', 'mesto', 'psc', 'stat']}), |
|||
] |
|||
list_display = ['jmeno', 'prijmeni', 'pohlavi_muz', 'skola', 'rok_maturity'] |
|||
|
|||
admin.site.register(Resitel, ResitelAdmin) |
@ -0,0 +1,228 @@ |
|||
# -*- coding: utf-8 -*- |
|||
from django.db import models |
|||
from django.contrib import auth |
|||
from django.utils import timezone |
|||
from django.conf import settings |
|||
|
|||
# |
|||
# Mělo by být částečně vytaženo z Aesopa |
|||
# viz https://ovvp.mff.cuni.cz/wiki/aesop/export-skol. |
|||
# |
|||
|
|||
class Skola(models.Model): |
|||
|
|||
class Meta: |
|||
db_table = 'seminar_skoly' |
|||
verbose_name = u'Škola' |
|||
verbose_name_plural = u'Školy' |
|||
|
|||
# Interní ID |
|||
id = models.AutoField(primary_key = True) |
|||
|
|||
# Aesopi ID "izo:..." nebo "aesop:..." |
|||
# NULL znamená v exportu do aesopa "ufo" |
|||
aesop_id = models.CharField(u'Aesop ID', max_length=32, blank=True, default='', |
|||
help_text=u'Aesopi ID typu "izo:..." nebo "aesop:..."') |
|||
|
|||
# IZO školy (jen české školy) |
|||
izo = models.CharField(u'IZO', max_length=32, blank=True, |
|||
help_text=u'IZO školy (jen české školy)') |
|||
|
|||
# Celý název školy |
|||
nazev = models.CharField(u'název', max_length=256, |
|||
help_text=u'Celý název školy') |
|||
|
|||
# Zkraceny nazev pro zobrazení ve výsledkovce, volitelné. |
|||
# Není v Aesopovi, musíme vytvářet sami. |
|||
kratky_nazev = models.CharField(u'zkrácený název', max_length=256, blank=True, |
|||
help_text="Zkrácený název pro zobrazení ve výsledkovce") |
|||
|
|||
# Ulice může být jen číslo |
|||
ulice = models.CharField(u'ulice', max_length=256) |
|||
|
|||
mesto = models.CharField(u'město', max_length=256) |
|||
|
|||
psc = models.CharField(u'PSČ', max_length=32) |
|||
|
|||
# ISO 3166-1 dvojznakovy kod zeme velkym pismem (CZ, SK) |
|||
stat = models.CharField(u'kód státu', max_length=2, default='CZ', |
|||
help_text=u'ISO 3166-1 kód zeme velkými písmeny (CZ, SK, ...)') |
|||
|
|||
def __unicode__(self): |
|||
return u'%s, %s' % (self.nazev, self.mesto) |
|||
|
|||
|
|||
class Resitel(models.Model): |
|||
|
|||
class Meta: |
|||
db_table = 'seminar_resitele' |
|||
verbose_name = u'Řešitel' |
|||
verbose_name_plural = u'Řešitelé' |
|||
ordering = ['prijmeni', 'jmeno'] |
|||
|
|||
# Interní ID |
|||
id = models.AutoField(primary_key = True) |
|||
|
|||
jmeno = models.CharField(u'jméno', max_length=256) |
|||
|
|||
prijmeni = models.CharField(u'příjmení', max_length=256) |
|||
|
|||
# User, pokud má na webu účet |
|||
user = models.OneToOneField(settings.AUTH_USER_MODEL, blank=True, null=True, verbose_name=u'uživatel') |
|||
|
|||
# Pohlaví. Že ho neznáme se snad nestane (a ušetří to práci při programování) |
|||
pohlavi_muz = models.BooleanField(u'pohlaví (muž)', default=False) |
|||
|
|||
skola = models.OneToOneField(Skola, blank=True, null=True, verbose_name=u'škola') |
|||
|
|||
# Očekávaný rok maturity a vyřazení z aktivních řešitelů |
|||
rok_maturity = models.IntegerField(u'rok maturity') |
|||
|
|||
email = models.EmailField(u'e-mail', max_length=256, blank=True, default='') |
|||
|
|||
telefon = models.CharField(u'telefon', max_length=256, blank=True, default='') |
|||
|
|||
datum_narozeni = models.DateField(u'datum narození', blank=True, null=True) |
|||
|
|||
# NULL dokud nedali souhlas |
|||
datum_souhlasu_udaje = models.DateField(u'datum souhlasu (údaje)', blank=True, null=True, |
|||
help_text=u'Datum souhlasu se zpracováním osobních údajů') |
|||
|
|||
# NULL dokud nedali souhlas |
|||
datum_souhlasu_zasilani = models.DateField(u'datum souhlasu (spam)', blank=True, null=True, |
|||
help_text=u'Datum souhlasu se zasíláním MFF materiálů') |
|||
|
|||
# Alespoň odhad (rok či i měsíc) |
|||
datum_prihlaseni = models.DateField(u'datum přihlášení', default=timezone.now) |
|||
|
|||
ZASILAT_DOMU = 'domu' |
|||
ZASILAT_DO_SKOLY = 'do_skoly' |
|||
ZASILAT_NIKAM = 'nikam' |
|||
ZASILAT_CHOICES = [ |
|||
(ZASILAT_DOMU, u'Domů'), |
|||
(ZASILAT_DO_SKOLY, u'Do školy'), |
|||
(ZASILAT_NIKAM, u'Nikam'), |
|||
] |
|||
zasilat = models.CharField(u'kam zasílat', max_length=32, choices=ZASILAT_CHOICES, blank=False, default=ZASILAT_DOMU) |
|||
|
|||
# Ulice může být i jen číslo |
|||
ulice = models.CharField(u'ulice', max_length=256, blank=True, default='') |
|||
|
|||
mesto = models.CharField(u'město', max_length=256, blank=True, default='') |
|||
|
|||
psc = models.CharField(u'PSČ', max_length=32, blank=True, default='') |
|||
|
|||
# ISO 3166-1 dvojznakovy kod zeme velkym pismem (CZ, SK) |
|||
stat = models.CharField(u'kód státu', max_length=2, |
|||
help_text=u'ISO 3166-1 kód zeme velkými písmeny (CZ, SK, ...)', default='CZ') |
|||
|
|||
def __unicode__(self): |
|||
return u'%s %s' % (self.jmeno, self.prijmeni) |
|||
|
|||
|
|||
class Rocnik(models.Model): |
|||
|
|||
class Meta: |
|||
db_table = 'seminar_rocniky' |
|||
verbose_name = u'Ročník' |
|||
verbose_name_plural = u'Ročníky' |
|||
ordering = ['rocnik'] |
|||
|
|||
# Interní ID |
|||
id = models.AutoField(primary_key = True) |
|||
|
|||
rocnik = models.IntegerField(u'číslo ročníku') |
|||
|
|||
|
|||
class Cislo(models.Model): |
|||
|
|||
class Meta: |
|||
db_table = 'seminar_cisla' |
|||
verbose_name = u'Číslo' |
|||
verbose_name_plural = u'Čísla' |
|||
ordering = ['rocnik__rocnik', 'cislo'] |
|||
|
|||
# Interní ID |
|||
id = models.AutoField(primary_key = True) |
|||
|
|||
rocnik = models.ForeignKey(Rocnik, verbose_name=u'ročník') |
|||
|
|||
cislo = models.CharField(u'název čísla', max_length=32, |
|||
help_text=u'Většinou jen "1", vyjímečně "7-8"') |
|||
|
|||
datum_vydani = models.DateField(u'datum vydání', blank=True, null=True, |
|||
help_text=u'Datum vydání finální verze') |
|||
|
|||
datum_deadline = models.DateField(u'datum deadline', blank=True, null=True, |
|||
help_text=u'Datum pro příjem řešení úloh zadaných v tomto čísle') |
|||
|
|||
def kod(self): |
|||
return u'%s.%s' % (self.rocnik.rocnik, self.cislo) |
|||
|
|||
|
|||
class Problem(models.Model): |
|||
|
|||
class Meta: |
|||
db_table = 'seminar_problemy' |
|||
verbose_name = u'Problém' |
|||
verbose_name_plural = u'Problémy' |
|||
|
|||
# Interní ID |
|||
id = models.AutoField(primary_key = True) |
|||
|
|||
nazev = models.CharField(u'název', max_length=256) |
|||
|
|||
TYP_ULOHA = 'uloha' |
|||
TYP_TEMA = 'tema' |
|||
TYP_SERIAL = 'serial' |
|||
TYP_ORG_CLANEK = 'org-clanek' |
|||
TYP_RES_CLANEK = 'res-clanek' |
|||
TYP_CHOICES = [ |
|||
(TYP_ULOHA, u'Úloha'), |
|||
(TYP_TEMA, u'Téma'), |
|||
(TYP_SERIAL, u'Seriál'), |
|||
(TYP_ORG_CLANEK, u'Organizátorský článek'), |
|||
(TYP_RES_CLANEK, u'Řesitelský článek'), |
|||
] |
|||
typ = models.CharField(u'typ problému', max_length=32, choices=TYP_CHOICES, blank=False, default=TYP_ULOHA) |
|||
|
|||
STAV_NAVRH = 'navrh' |
|||
STAV_ZADANY = 'zadany' |
|||
STAV_SMAZANY = 'smazany' |
|||
STAV_CHOICES = [ |
|||
(STAV_NAVRH, u'Návrh'), |
|||
(STAV_ZADANY, u'Zadaný'), |
|||
(STAV_SMAZANY, u'Smazaný'), |
|||
] |
|||
stav = models.CharField(u'stav problému', max_length=32, choices=STAV_CHOICES, blank=False, default=STAV_NAVRH) |
|||
|
|||
text_org = None |
|||
|
|||
text_verejny = None |
|||
|
|||
zadavatel |
|||
|
|||
opravovatel |
|||
|
|||
kod = models.CharField(u'lokální kód', max_length=32, blank=True, default='', |
|||
help_text=u'Číslo/kód úlohy v čísle nebo kód tématu/článku/seriálu v ročníku') |
|||
|
|||
cislo_zadani = models.ForeignKey(Cislo, verbose_name=u'číslo zadání', blank=True, null=True) |
|||
|
|||
cislo_reseni = models.ForeignKey(Cislo, verbose_name=u'číslo řešení', blank=True, null=True, |
|||
help_text=u'Číslo s řešením úlohy. Jen pri ') |
|||
# |
|||
# |
|||
# class Reseni(models.Model): |
|||
# |
|||
# class Meta: |
|||
# db_table = 'seminar_reseni' |
|||
# verbose_name = u'Řešení' |
|||
# verbose_name_plural = u'Řešení' |
|||
# ordering = ['rocnik__rocnik', 'cislo'] |
|||
# |
|||
# # Interní ID |
|||
# id = models.AutoField(primary_key = True) |
|||
# |
|||
# |
|||
# |
@ -0,0 +1,3 @@ |
|||
from django.test import TestCase |
|||
|
|||
# Create your tests here. |
@ -0,0 +1,3 @@ |
|||
from django.shortcuts import render |
|||
|
|||
# Create your views here. |
Loading…
Reference in new issue