Refactored out duplicated code from `AssetVersionHistory

This commit is contained in:
Matthew Smith
2019-12-29 22:36:32 +00:00
parent d3ba770400
commit 5054858585
2 changed files with 8 additions and 31 deletions

View File

@@ -206,17 +206,14 @@ class VersionHistory(generic.ListView):
paginate_by = 25 paginate_by = 25
def get_queryset(self, **kwargs): def get_queryset(self, **kwargs):
thisModel = self.kwargs['model'] return RIGSVersion.objects.get_for_object(self.get_object()).select_related("revision", "revision__user").all()
versions = RIGSVersion.objects.get_for_object_reference(thisModel, self.kwargs['pk']).select_related("revision", "revision__user").all() def get_object(self, **kwargs):
return get_object_or_404(self.kwargs['model'], pk=self.kwargs['pk'])
return versions
def get_context_data(self, **kwargs): def get_context_data(self, **kwargs):
thisModel = self.kwargs['model']
context = super(VersionHistory, self).get_context_data(**kwargs) context = super(VersionHistory, self).get_context_data(**kwargs)
thisObject = get_object_or_404(thisModel, pk=self.kwargs['pk']) context['object'] = self.get_object()
context['object'] = thisObject
return context return context

View File

@@ -5,6 +5,7 @@ from django.views.decorators.csrf import csrf_exempt
from django.utils.decorators import method_decorator from django.utils.decorators import method_decorator
from django.urls import reverse from django.urls import reverse
from django.db.models import Q from django.db.models import Q
from django.shortcuts import get_object_or_404
from assets import models, forms from assets import models, forms
from RIGS import versioning from RIGS import versioning
@@ -214,29 +215,8 @@ class SupplierVersionHistory(versioning.VersionHistory):
# TODO: Reduce SQL queries # TODO: Reduce SQL queries
class AssetVersionHistory(versioning.VersionHistory): class AssetVersionHistory(versioning.VersionHistory):
model = versioning.RIGSVersion def get_object(self, **kwargs):
template_name = "asset_version_history.html" return get_object_or_404(models.Asset, asset_id=self.kwargs['pk'])
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
class ActivityTable(versioning.ActivityTable): class ActivityTable(versioning.ActivityTable):