Browse Source

move: přesunuty vzorečky na přepočet bodů do seminar.utils

pull/20/head
Jonas Havelka 1 year ago
parent
commit
d66effcd46
  1. 23
      seminar/models/odevzdavatko.py
  2. 9
      seminar/utils.py

23
seminar/models/odevzdavatko.py

@ -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):

9
seminar/utils.py

@ -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…
Cancel
Save