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 reversion
@ -15,6 +14,8 @@ from seminar.models import personalni as pm
from seminar.models import treenode as tm
from seminar.models import base as bm
from seminar.utils import vzorecek_na_prepocet, inverze_vzorecku_na_prepocet
@reversion.register(ignore_duplicates=True)
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)')
# 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
def body_celkem(self):
# FIXME řeším jen prvního řešitele.
@ -147,33 +138,33 @@ class Hodnoceni(bm.SeminarModelBase):
def body_neprepocitane(self):
if self.body is 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
def body_neprepocitane(self, value):
if value is None:
self.body = None
else:
self.body = self.vzorecek_na_prepocet(value, self.reseni.resitele.count())
self.body = vzorecek_na_prepocet(value, self.reseni.resitele.count())
@property
def body_neprepocitane_celkem(self):
if self.body_celkem is 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
def body_neprepocitane_celkem(self, value):
if value is None:
self.body = None
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
def body_max(self):
if self.body_neprepocitane_max is 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
def body_neprepocitane_max(self):

9
seminar/utils.py

@ -1,6 +1,7 @@
# -*- coding: utf-8 -*-
import datetime
import decimal
from django.contrib.auth import get_user_model
from django.contrib.auth.decorators import permission_required, \
@ -44,6 +45,14 @@ AnonymousUser.je_org = 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):
def __init__(self, *args, **kwargs):
self.firstTag = None

Loading…
Cancel
Save