From 50548585857dbd047ed9f2dad078b129fbb1d8d7 Mon Sep 17 00:00:00 2001 From: Matthew Smith Date: Sun, 29 Dec 2019 22:36:32 +0000 Subject: [PATCH] Refactored out duplicated code from `AssetVersionHistory --- RIGS/versioning.py | 13 +++++-------- assets/views.py | 26 +++----------------------- 2 files changed, 8 insertions(+), 31 deletions(-) diff --git a/RIGS/versioning.py b/RIGS/versioning.py index d7b423c2..b6542e58 100644 --- a/RIGS/versioning.py +++ b/RIGS/versioning.py @@ -206,17 +206,14 @@ class VersionHistory(generic.ListView): paginate_by = 25 def get_queryset(self, **kwargs): - thisModel = self.kwargs['model'] - - versions = RIGSVersion.objects.get_for_object_reference(thisModel, self.kwargs['pk']).select_related("revision", "revision__user").all() - - return versions + return RIGSVersion.objects.get_for_object(self.get_object()).select_related("revision", "revision__user").all() + + def get_object(self, **kwargs): + return get_object_or_404(self.kwargs['model'], pk=self.kwargs['pk']) def get_context_data(self, **kwargs): - thisModel = self.kwargs['model'] context = super(VersionHistory, self).get_context_data(**kwargs) - thisObject = get_object_or_404(thisModel, pk=self.kwargs['pk']) - context['object'] = thisObject + context['object'] = self.get_object() return context diff --git a/assets/views.py b/assets/views.py index 405297f2..1acc28fb 100644 --- a/assets/views.py +++ b/assets/views.py @@ -5,6 +5,7 @@ from django.views.decorators.csrf import csrf_exempt from django.utils.decorators import method_decorator from django.urls import reverse from django.db.models import Q +from django.shortcuts import get_object_or_404 from assets import models, forms from RIGS import versioning @@ -214,29 +215,8 @@ class SupplierVersionHistory(versioning.VersionHistory): # TODO: Reduce SQL queries class AssetVersionHistory(versioning.VersionHistory): - model = versioning.RIGSVersion - template_name = "asset_version_history.html" - paginate_by = 25 - - def get_queryset(self, **kwargs): - thisModel = self.kwargs['model'] - pk = self.kwargs['pk'] - versions = versioning.RIGSVersion.objects.get_for_object(models.Asset.objects.filter(asset_id=pk).get()).select_related("revision", "revision__user").all() - - return versions - - def get_context_data(self, **kwargs): - thisModel = self.kwargs['model'] - context = super(versioning.VersionHistory, self).get_context_data(**kwargs) - queryset = models.Asset.objects.filter(asset_id=self.kwargs['pk']) - try: - # Get the single item from the filtered queryset - context['object'] = queryset.get() - except queryset.model.DoesNotExist: - raise Http404(_("No %(verbose_name)s found matching the query") % - {'verbose_name': queryset.model._meta.verbose_name}) - - return context + def get_object(self, **kwargs): + return get_object_or_404(models.Asset, asset_id=self.kwargs['pk']) class ActivityTable(versioning.ActivityTable):