Skip to content
Snippets Groups Projects
Commit 3d7066f2 authored by Jiří Setnička's avatar Jiří Setnička
Browse files

Util: MODecimalField pro formuláře

Upravený DecimalField, který formátuje číslo podle jeho skutečného počtu
    desetinných míst a zadané  používá jen jako maximální počet desetinných míst.
parent d4c9d0fc
No related branches found
No related tags found
1 merge request!51Desetinné body
import decimal
from flask import Response, send_file, url_for
from flask_wtf import FlaskForm
import os
......@@ -7,6 +8,7 @@ import unicodedata
import werkzeug.exceptions
import werkzeug.utils
import wtforms
from wtforms.fields.html5 import DecimalField
import mo.db as db
import mo.jobs
......@@ -119,3 +121,20 @@ def send_job_result(job: db.Job) -> Response:
else:
logger.error(f'Soubor {file} je výsledkem jobu, ale ve FS neexistuje')
raise werkzeug.exceptions.NotFound()
class MODecimalField(DecimalField):
"""Upravený DecimalField, který formátuje číslo podle jeho skutečného počtu
desetinných míst a zadané `places` používá jen jako maximální počet desetinných míst."""
def _value(self):
if self.data is not None:
# Spočítání počtu desetinných míst, zbytek necháme na původní implementaci
max_places = self.places
self.places = 0
d = decimal.Decimal(1)
while self.data % d != 0 and self.places < max_places:
self.places += 1
d /= 10
return super(MODecimalField, self)._value()
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment