diff --git a/passerelle_imio_tax_compute/views.py b/passerelle_imio_tax_compute/views.py index 380ad92..17a2ff1 100644 --- a/passerelle_imio_tax_compute/views.py +++ b/passerelle_imio_tax_compute/views.py @@ -14,8 +14,8 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . -import requests -import unicodedata + +import json from django.views.generic.detail import SingleObjectMixin, DetailView from django.views.generic.edit import CreateView, UpdateView, DeleteView @@ -28,6 +28,7 @@ from passerelle import utils from .models import ImioTsTaxCompute from .forms import ImioTsTaxComputeForm + class SigCreateView(CreateView): model = ImioTsTaxCompute form_class = ImioTsTaxComputeForm @@ -54,5 +55,15 @@ class EvalView(View, SingleObjectMixin): model = ImioTsTaxCompute def get(self, request, *args, **kwargs): - result = eval(self.get_object().formule) + return self.post(request, *args, **kwargs) + + def post(self, request, *args, **kwargs): + data = dict([(x, request.GET[x]) for x in request.GET.keys()]) + if request.body: + payload = json.loads(request.body) + data.update(payload.get("fields")) + expression = self.get_object().formule + code_object = compile(expression, "", "exec") + eval(code_object, data) + result = data.get("result") return utils.response_for_json(request, {'data': result})