From 7d9185e155f1adb39527160119ab5bfd45656881 Mon Sep 17 00:00:00 2001 From: AJ Jones Date: Sun, 5 Oct 2025 20:03:50 +0100 Subject: [PATCH] Update view logic for is_ajax being changed to a template context processor --- PyRIGS/views.py | 12 +++++++----- assets/templates/asset_form.html | 2 +- assets/views.py | 10 +++++----- pyproject.toml | 1 + training/views.py | 2 +- uv.lock | 15 +++++++++++++++ 6 files changed, 30 insertions(+), 12 deletions(-) diff --git a/PyRIGS/views.py b/PyRIGS/views.py index 69d07f23..b82bea21 100644 --- a/PyRIGS/views.py +++ b/PyRIGS/views.py @@ -30,6 +30,8 @@ from RIGS import models from assets import models as asset_models from training import models as training_models +# Template context processor + def is_ajax(request): return {"is_ajax": request.headers.get('x-requested-with') == 'XMLHttpRequest'} @@ -183,7 +185,7 @@ class SecureAPIRequest(generic.View): class ModalURLMixin: def get_close_url(self, update, detail): - if is_ajax(self.request): + if is_ajax(self.request).get('is_ajax'): url = reverse_lazy('closemodal') update_url = str(reverse_lazy(update, kwargs={'pk': self.object.pk})) messages.info(self.request, "modalobject=" + serializers.serialize("json", [self.object])) @@ -202,7 +204,7 @@ class GenericListView(generic.ListView): def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) context['page_title'] = self.model.__name__ + "s" - if is_ajax(self.request): + if is_ajax(self.request).get('is_ajax'): context['override'] = "base_ajax.html" return context @@ -221,7 +223,7 @@ class GenericDetailView(generic.DetailView): def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) context['page_title'] = f"{self.model.__name__} | {self.object.name}" - if is_ajax(self.request): + if is_ajax(self.request).get('is_ajax'): context['override'] = "base_ajax.html" return context @@ -232,7 +234,7 @@ class GenericUpdateView(generic.UpdateView): def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) context['page_title'] = f"Edit {self.model.__name__}" - if is_ajax(self.request): + if is_ajax(self.request).get('is_ajax'): context['override'] = "base_ajax.html" return context @@ -243,7 +245,7 @@ class GenericCreateView(generic.CreateView): def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) context['page_title'] = f"Create {self.model.__name__}" - if is_ajax(self.request): + if is_ajax(self.request).get('is_ajax'): context['override'] = "base_ajax.html" return context diff --git a/assets/templates/asset_form.html b/assets/templates/asset_form.html index af61c8e4..b7c96e7b 100644 --- a/assets/templates/asset_form.html +++ b/assets/templates/asset_form.html @@ -1,4 +1,4 @@ -{% extends 'base_assets.html' %} +{% extends is_ajax|yesno:"base_ajax.html,base_assets.html" %} {% load widget_tweaks %} {% load static %} diff --git a/assets/views.py b/assets/views.py index a0036642..f6d6012b 100644 --- a/assets/views.py +++ b/assets/views.py @@ -127,7 +127,7 @@ class AssetEdit(LoginRequiredMixin, AssetIDUrlMixin, generic.UpdateView): return context def get_success_url(self): - if is_ajax(self.request): + if is_ajax(self.request).get('is_ajax'): url = reverse_lazy('closemodal') update_url = str(reverse_lazy('asset_update', kwargs={'pk': self.object.pk})) messages.info(self.request, "modalobject=" + serializers.serialize("json", [self.object])) @@ -233,7 +233,7 @@ class SupplierList(GenericListView): context['edit'] = 'supplier_update' context['can_edit'] = self.request.user.has_perm('assets.change_supplier') context['detail'] = 'supplier_detail' - if is_ajax(self.request): + if is_ajax(self.request).get('is_ajax'): context['override'] = "base_ajax.html" else: context['override'] = 'base_assets.html' @@ -250,7 +250,7 @@ class SupplierDetail(GenericDetailView): context['detail_link'] = 'supplier_detail' context['associated'] = 'partials/associated_assets.html' context['associated2'] = '' - if is_ajax(self.request): + if is_ajax(self.request).get('is_ajax'): context['override'] = "base_ajax.html" else: context['override'] = 'base_assets.html' @@ -264,7 +264,7 @@ class SupplierCreate(GenericCreateView, ModalURLMixin): def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) - if is_ajax(self.request): + if is_ajax(self.request).get('is_ajax'): context['override'] = "base_ajax.html" else: context['override'] = 'base_assets.html' @@ -280,7 +280,7 @@ class SupplierUpdate(GenericUpdateView, ModalURLMixin): def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) - if is_ajax(self.request): + if is_ajax(self.request).get('is_ajax'): context['override'] = "base_ajax.html" else: context['override'] = 'base_assets.html' diff --git a/pyproject.toml b/pyproject.toml index 86f977b6..ed2a07d9 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -88,4 +88,5 @@ dev = [ "pytest-reverse", "pytest-xdist[psutil]", "PyPOM[splinter]", + "autopep8>=2.3.2", ] diff --git a/training/views.py b/training/views.py index eb9c2870..5c56e76a 100644 --- a/training/views.py +++ b/training/views.py @@ -126,7 +126,7 @@ class AddQualification(generic.CreateView, ModalURLMixin): def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) context["depths"] = models.TrainingItemQualification.CHOICES - if is_ajax(self.request): + if is_ajax(self.request).get('is_ajax'): context['override'] = "base_ajax.html" else: context['override'] = 'base_training.html' diff --git a/uv.lock b/uv.lock index 6c363fe2..c5ffcfab 100644 --- a/uv.lock +++ b/uv.lock @@ -32,6 +32,19 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/77/06/bb80f5f86020c4551da315d78b3ab75e8228f89f0162f2c3a819e407941a/attrs-25.3.0-py3-none-any.whl", hash = "sha256:427318ce031701fea540783410126f03899a97ffc6f61596ad581ac2e40e3bc3", size = 63815, upload-time = "2025-03-13T11:10:21.14Z" }, ] +[[package]] +name = "autopep8" +version = "2.3.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pycodestyle" }, + { name = "tomli" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/50/d8/30873d2b7b57dee9263e53d142da044c4600a46f2d28374b3e38b023df16/autopep8-2.3.2.tar.gz", hash = "sha256:89440a4f969197b69a995e4ce0661b031f455a9f776d2c5ba3dbd83466931758", size = 92210, upload-time = "2025-01-14T14:46:18.454Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9e/43/53afb8ba17218f19b77c7834128566c5bbb100a0ad9ba2e8e89d089d7079/autopep8-2.3.2-py2.py3-none-any.whl", hash = "sha256:ce8ad498672c845a0c3de2629c15b635ec2b05ef8177a6e7c91c74f3e9b51128", size = 45807, upload-time = "2025-01-14T14:46:15.466Z" }, +] + [[package]] name = "backports-tempfile" version = "1.0" @@ -843,6 +856,7 @@ source = { virtual = "." } dependencies = [ { name = "ansicolors" }, { name = "asgiref" }, + { name = "autopep8" }, { name = "beautifulsoup4" }, { name = "brotli" }, { name = "cachetools" }, @@ -928,6 +942,7 @@ dev = [ requires-dist = [ { name = "ansicolors" }, { name = "asgiref" }, + { name = "autopep8", specifier = ">=2.3.2" }, { name = "beautifulsoup4" }, { name = "brotli" }, { name = "cachetools" },