18 lines
509 B
Python
18 lines
509 B
Python
from apps.enm.models import Mpoint, MpointStat
|
|
import re
|
|
|
|
|
|
def translate_eval_formula(exp_str: str, year: int, month: int, day: int, hour: int):
|
|
"""
|
|
传入
|
|
"""
|
|
pattern = r'\${(\d+)}'
|
|
matches = re.findall(pattern, exp_str)
|
|
|
|
for match in matches:
|
|
mpst = MpointStat.objects.filter(type='hour', mpoint__id=match, year=year, month=month, day=day).first()
|
|
if mpst:
|
|
exp_str = exp_str.replace(f"${{{match}}}", mpst.val)
|
|
|
|
rval = eval(exp_str)
|
|
return rval |