You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
49 lines
1.6 KiB
49 lines
1.6 KiB
from django.db import models
|
|
|
|
|
|
# Žádost:
|
|
# - máme následující časové body:
|
|
# - dorazila na studijní (/přečetli si ji na studijním)
|
|
# - dorazila na poštu
|
|
# - dorazila na internát
|
|
# - vyzvednuta = platí
|
|
#
|
|
# - máme následující žádosti:
|
|
# - žádost
|
|
# - žádost o banán,
|
|
# - žádost o více vegetariánskou stravu v jídelně,
|
|
# - nevalidní žádost o přístup k záznamům o třídní knize
|
|
# - validní žádost o přístup k záznamům o třídní knize
|
|
|
|
# https://stackoverflow.com/a/55243162
|
|
class ZadostField(models.Field):
|
|
def __init__(self, **kwargs):
|
|
self.field_kwargs = kwargs.pop("field_kwargs", {})
|
|
super().__init__(**kwargs)
|
|
|
|
def contribute_to_class(self, cls, name, private_only=False):
|
|
for field in (
|
|
models.FloatField(name=name + "_studijni", default=None, null=True, **self.field_kwargs),
|
|
models.FloatField(name=name + "_posta", default=None, null=True, **self.field_kwargs),
|
|
models.FloatField(name=name + "_internat", default=None, null=True, **self.field_kwargs),
|
|
models.FloatField(name=name + "_plati", default=None, null=True, **self.field_kwargs),
|
|
models.BooleanField(name=name + "_vytistena", default=False, **self.field_kwargs),
|
|
):
|
|
field.contribute_to_class(cls, field.name)
|
|
|
|
setattr(cls, name, ZadostProperty(name))
|
|
|
|
|
|
class ZadostProperty:
|
|
def __init__(self, name):
|
|
self.name = name
|
|
|
|
def __get__(self, instance, owner):
|
|
if not instance:
|
|
return self
|
|
raise NotImplementedError
|
|
# real = getattr(instance, self.name + "_real")
|
|
|
|
def __set__(self, instance, value: complex):
|
|
raise NotImplementedError
|
|
# setattr(instance, self.name + "_real", value.real)
|
|
|