move: přesunuty vzorečky na přepočet bodů do seminar.utils
This commit is contained in:
parent
c8516d6eda
commit
d66effcd46
2 changed files with 16 additions and 16 deletions
|
@ -1,4 +1,3 @@
|
||||||
import decimal
|
|
||||||
import os
|
import os
|
||||||
|
|
||||||
import reversion
|
import reversion
|
||||||
|
@ -15,6 +14,8 @@ from seminar.models import personalni as pm
|
||||||
from seminar.models import treenode as tm
|
from seminar.models import treenode as tm
|
||||||
from seminar.models import base as bm
|
from seminar.models import base as bm
|
||||||
|
|
||||||
|
from seminar.utils import vzorecek_na_prepocet, inverze_vzorecku_na_prepocet
|
||||||
|
|
||||||
|
|
||||||
@reversion.register(ignore_duplicates=True)
|
@reversion.register(ignore_duplicates=True)
|
||||||
class Reseni(bm.SeminarModelBase):
|
class Reseni(bm.SeminarModelBase):
|
||||||
|
@ -116,16 +117,6 @@ class Hodnoceni(bm.SeminarModelBase):
|
||||||
|
|
||||||
feedback = models.TextField('zpětná vazba', blank=True, default='', help_text='Zpětná vazba řešiteli (plain text)')
|
feedback = models.TextField('zpětná vazba', blank=True, default='', help_text='Zpětná vazba řešiteli (plain text)')
|
||||||
|
|
||||||
# TODO najít správné místo
|
|
||||||
@staticmethod
|
|
||||||
def vzorecek_na_prepocet(body, resitelu):
|
|
||||||
return body * 3 / (resitelu + 2)
|
|
||||||
|
|
||||||
# TODO najít správné místo
|
|
||||||
@staticmethod
|
|
||||||
def inverze_vzorecku_na_prepocet(body: decimal.Decimal, resitelu) -> decimal.Decimal:
|
|
||||||
return round(body * (resitelu + 2) / 3, 1)
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def body_celkem(self):
|
def body_celkem(self):
|
||||||
# FIXME řeším jen prvního řešitele.
|
# FIXME řeším jen prvního řešitele.
|
||||||
|
@ -147,33 +138,33 @@ class Hodnoceni(bm.SeminarModelBase):
|
||||||
def body_neprepocitane(self):
|
def body_neprepocitane(self):
|
||||||
if self.body is None:
|
if self.body is None:
|
||||||
return None
|
return None
|
||||||
return self.inverze_vzorecku_na_prepocet(self.body, self.reseni.resitele.count())
|
return inverze_vzorecku_na_prepocet(self.body, self.reseni.resitele.count())
|
||||||
|
|
||||||
@body_neprepocitane.setter
|
@body_neprepocitane.setter
|
||||||
def body_neprepocitane(self, value):
|
def body_neprepocitane(self, value):
|
||||||
if value is None:
|
if value is None:
|
||||||
self.body = None
|
self.body = None
|
||||||
else:
|
else:
|
||||||
self.body = self.vzorecek_na_prepocet(value, self.reseni.resitele.count())
|
self.body = vzorecek_na_prepocet(value, self.reseni.resitele.count())
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def body_neprepocitane_celkem(self):
|
def body_neprepocitane_celkem(self):
|
||||||
if self.body_celkem is None:
|
if self.body_celkem is None:
|
||||||
return None
|
return None
|
||||||
return self.inverze_vzorecku_na_prepocet(self.body_celkem, self.reseni.resitele.count())
|
return inverze_vzorecku_na_prepocet(self.body_celkem, self.reseni.resitele.count())
|
||||||
|
|
||||||
@body_neprepocitane_celkem.setter
|
@body_neprepocitane_celkem.setter
|
||||||
def body_neprepocitane_celkem(self, value):
|
def body_neprepocitane_celkem(self, value):
|
||||||
if value is None:
|
if value is None:
|
||||||
self.body = None
|
self.body = None
|
||||||
else:
|
else:
|
||||||
self.body_celkem = self.vzorecek_na_prepocet(value, self.reseni.resitele.count())
|
self.body_celkem = vzorecek_na_prepocet(value, self.reseni.resitele.count())
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def body_max(self):
|
def body_max(self):
|
||||||
if self.body_neprepocitane_max is None:
|
if self.body_neprepocitane_max is None:
|
||||||
return None
|
return None
|
||||||
return self.vzorecek_na_prepocet(self.body_neprepocitane_max, self.reseni.resitele.count())
|
return vzorecek_na_prepocet(self.body_neprepocitane_max, self.reseni.resitele.count())
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def body_neprepocitane_max(self):
|
def body_neprepocitane_max(self):
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
import datetime
|
import datetime
|
||||||
|
import decimal
|
||||||
|
|
||||||
from django.contrib.auth import get_user_model
|
from django.contrib.auth import get_user_model
|
||||||
from django.contrib.auth.decorators import permission_required, \
|
from django.contrib.auth.decorators import permission_required, \
|
||||||
|
@ -44,6 +45,14 @@ AnonymousUser.je_org = False
|
||||||
AnonymousUser.je_resitel = False
|
AnonymousUser.je_resitel = False
|
||||||
|
|
||||||
|
|
||||||
|
def vzorecek_na_prepocet(body, resitelu):
|
||||||
|
return body * 3 / (resitelu + 2)
|
||||||
|
|
||||||
|
|
||||||
|
def inverze_vzorecku_na_prepocet(body: decimal.Decimal, resitelu) -> decimal.Decimal:
|
||||||
|
return round(body * (resitelu + 2) / 3, 1)
|
||||||
|
|
||||||
|
|
||||||
class FirstTagParser(HTMLParser):
|
class FirstTagParser(HTMLParser):
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
self.firstTag = None
|
self.firstTag = None
|
||||||
|
|
Loading…
Reference in a new issue