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