def post(self, request, namespace, report_slug, widget_id, format=None): logger.debug("Received POST for report %s, widget %s: %s" % (report_slug, widget_id, request.POST)) try: report = Report.objects.get(namespace=namespace, slug=report_slug) widget = Widget.objects.get(id=widget_id) except: raise Http404 req_json = json.loads(request.POST['criteria']) fields = widget.collect_fields() form = TableFieldForm(fields, use_widgets=False, hidden_fields=report.hidden_fields, include_hidden=True, data=req_json, files=request.FILES) if not form.is_valid(): raise ValueError("Widget internal criteria form is invalid:\n%s" % (form.errors.as_text())) if form.is_valid(): logger.debug('Form passed validation: %s' % form) formdata = form.cleaned_data logger.debug('Form cleaned data: %s' % formdata) # parse time and localize to user profile timezone profile = request.user.userprofile timezone = pytz.timezone(profile.timezone) form.apply_timezone(timezone) form_criteria = form.criteria() logger.debug('Form_criteria: %s' % form_criteria) try: job = Job.create(table=widget.table(), criteria=form_criteria) job.start() wjob = WidgetJob(widget=widget, job=job) wjob.save() logger.debug("Created WidgetJob %s for report %s (handle %s)" % (str(wjob), report_slug, job.handle)) return Response({"joburl": reverse('report-job-detail', args=[namespace, report_slug, widget_id, wjob.id])}) except Exception as e: logger.exception("Failed to start job, an exception occurred") return HttpResponse(str(e), status=400) else: logger.error("form is invalid, entering debugger") from IPython import embed; embed()
def post(self, request, namespace, report_slug, widget_id, format=None): logger.debug("Received POST for report %s, widget %s: %s" % (report_slug, widget_id, request.POST)) try: report = Report.objects.get(namespace=namespace, slug=report_slug) widget = Widget.objects.get(id=widget_id) except: raise Http404 req_json = json.loads(request.POST['criteria']) fields = widget.collect_fields() form = TableFieldForm(fields, use_widgets=False, hidden_fields=report.hidden_fields, include_hidden=True, data=req_json, files=request.FILES) if not form.is_valid(): raise ValueError("Widget internal criteria form is invalid:\n%s" % (form.errors.as_text())) if form.is_valid(): logger.debug('Form passed validation: %s' % form) formdata = form.cleaned_data logger.debug('Form cleaned data: %s' % formdata) # parse time and localize to user profile timezone profile = request.user.userprofile timezone = pytz.timezone(profile.timezone) form.apply_timezone(timezone) try: job = Job.create(table=widget.table(), criteria=form.criteria()) job.start() wjob = WidgetJob(widget=widget, job=job) wjob.save() logger.debug("Created WidgetJob %s for report %s (handle %s)" % (str(wjob), report_slug, job.handle)) return Response({"joburl": reverse('report-job-detail', args=[namespace, report_slug, widget_id, wjob.id])}) except Exception as e: logger.exception("Failed to start job, an exception occurred") return HttpResponse(str(e), status=400) else: logger.error("form is invalid, entering debugger") from IPython import embed; embed()