| 120 | ) |
| 121 | |
| 122 | def post(self, request, query_id): |
| 123 | if not app_settings.EXPLORER_PERMISSION_CHANGE(request): |
| 124 | return HttpResponseRedirect( |
| 125 | reverse_lazy("query_detail", kwargs={"query_id": query_id}) |
| 126 | ) |
| 127 | show = url_get_show(request) |
| 128 | query, form = QueryView.get_instance_and_form(request, query_id) |
| 129 | success = form.is_valid() and form.save() |
| 130 | try: |
| 131 | vm = query_viewmodel( |
| 132 | request, |
| 133 | query, |
| 134 | form=form, |
| 135 | run_query=show, |
| 136 | rows=url_get_rows(request), |
| 137 | message=_("Query saved.") if success else None |
| 138 | ) |
| 139 | except ValidationError as ve: |
| 140 | vm = query_viewmodel( |
| 141 | request, |
| 142 | query, |
| 143 | form=form, |
| 144 | run_query=False, |
| 145 | rows=url_get_rows(request), |
| 146 | error=ve.message |
| 147 | ) |
| 148 | return self.render_template("explorer/query.html", vm) |
| 149 | |
| 150 | @staticmethod |
| 151 | def get_instance_and_form(request, query_id): |