diff --git a/wcs/admin/settings.py b/wcs/admin/settings.py index 596cea18e..a534662ff 100644 --- a/wcs/admin/settings.py +++ b/wcs/admin/settings.py @@ -352,6 +352,8 @@ class ThemePreviewDirectory(Directory): root_directory = get_publisher().root_directory_class() response = get_response() + response.reset_includes() + response.filter = {} del(response.breadcrumb) if path[1] in ('backoffice', 'admin') or \ @@ -363,11 +365,11 @@ class ThemePreviewDirectory(Directory): from qommon.template import decorate theme_preview = decorate(output, response) - response.filter = None # restore original branding in case it has been changed get_publisher().cfg['branding'] = original_branding get_publisher().write_cfg() + response.filter['raw'] = True return theme_preview diff --git a/wcs/admin/users.py b/wcs/admin/users.py index bceeab3c9..c25825d65 100644 --- a/wcs/admin/users.py +++ b/wcs/admin/users.py @@ -386,7 +386,7 @@ class UsersDirectory(Directory): r += htmltext('') if get_request().form.get('ajax') == 'true': - get_response().filter = None + get_response().filter = {'raw': True} return r.getvalue() r2 = TemplateIO(html=True) diff --git a/wcs/backoffice/management.py b/wcs/backoffice/management.py index 564cad1ff..b5e3b2999 100644 --- a/wcs/backoffice/management.py +++ b/wcs/backoffice/management.py @@ -363,7 +363,7 @@ class UsersViewDirectory(Directory): r += htmltext('') r += htmltext('') if get_request().form.get('ajax') == 'true': - get_response().filter = None + get_response().filter = {'raw': True} return r.getvalue() formdef = UserFieldsFormDef() @@ -420,7 +420,7 @@ class UsersViewDirectory(Directory): r += htmltext('') if get_request().form.get('ajax') == 'true': - get_response().filter = None + get_response().filter = {'raw': True} return r.getvalue() return r.getvalue() @@ -880,7 +880,7 @@ class ManagementDirectory(Directory): r += pagination_links(offset, limit, total_count) if get_request().form.get('ajax') == 'true': - get_response().filter = None + get_response().filter = {'raw': True} return r.getvalue() get_response().filter['sidebar'] = self.get_global_listing_sidebar( @@ -1293,7 +1293,7 @@ class FormPage(Directory): return table if get_request().form.get('ajax') == 'true': - get_response().filter = None + get_response().filter = {'raw': True} return table html_top('management', '%s - %s' % (_('Listing'), self.formdef.name)) @@ -1777,7 +1777,7 @@ class FormPage(Directory): r += htmltext('') # id="statistics" if get_request().form.get('ajax') == 'true': - get_response().filter = None + get_response().filter = {'raw': True} return r.getvalue() page = TemplateIO(html=True) diff --git a/wcs/compat.py b/wcs/compat.py index 01d8e3e00..5eccc9d36 100644 --- a/wcs/compat.py +++ b/wcs/compat.py @@ -45,12 +45,40 @@ class TemplateWithFallbackView(TemplateView): loader.get_template(self.template_name) except TemplateDoesNotExist: return quixote(self.request) - context = self.get_context_data(**kwargs) - return self.render_to_response(context) + + try: + context = self.get_context_data(**kwargs) + except PublishError as exc: + context = {'body': get_publisher().finish_interrupted_request(exc)} + self.quixote_response = get_request().response + except Exception as exc: + context = {'body': get_publisher().finish_failed_request()} + self.quixote_response = get_request().response + + if self.quixote_response.content_type != 'text/html' or self.quixote_response.status_code != 200: + response = HttpResponse(context['body']) + response.status_code = self.quixote_response.status_code + response.reason_phrase = self.quixote_response.reason_phrase + elif request.META.get('HTTP_X_POPUP') == 'true': + response = HttpResponse('