From 206b54dab0d783137a3752011aaa23a27ec89b01 Mon Sep 17 00:00:00 2001 From: FreneticScribbler Date: Fri, 13 Dec 2019 20:19:17 +0000 Subject: [PATCH] FEAT: Initial work on revision history for assets The revision history for individual items mostly works, though it shows database ID where it should show asset ID. Recent changes feed isn't yet done. --- RIGS/templates/RIGS/event_detail.html | 2 +- assets/models.py | 10 ++++++++-- assets/templates/asset_update.html | 10 ++++++++++ assets/urls.py | 6 +++++- assets/views.py | 16 +++++++++++++++- templates/base_assets.html | 7 +++++-- 6 files changed, 44 insertions(+), 7 deletions(-) diff --git a/RIGS/templates/RIGS/event_detail.html b/RIGS/templates/RIGS/event_detail.html index 176756dc..8668bbac 100644 --- a/RIGS/templates/RIGS/event_detail.html +++ b/RIGS/templates/RIGS/event_detail.html @@ -245,7 +245,7 @@
diff --git a/assets/models.py b/assets/models.py index 993c8c34..58877220 100644 --- a/assets/models.py +++ b/assets/models.py @@ -6,6 +6,10 @@ from django.urls import reverse from django.db.models.signals import pre_save from django.dispatch.dispatcher import receiver +from reversion import revisions as reversion +from reversion.models import Version + +from RIGS.models import RevisionMixin class AssetCategory(models.Model): class Meta: @@ -30,7 +34,8 @@ class AssetStatus(models.Model): return self.name -class Supplier(models.Model): +@reversion.register +class Supplier(models.Model, RevisionMixin): name = models.CharField(max_length=80) class Meta: @@ -55,7 +60,8 @@ class Connector(models.Model): return self.description -class Asset(models.Model): +@reversion.register +class Asset(models.Model, RevisionMixin): class Meta: ordering = ['asset_id_prefix', 'asset_id_number'] permissions = ( diff --git a/assets/templates/asset_update.html b/assets/templates/asset_update.html index faee7662..9987e4fe 100644 --- a/assets/templates/asset_update.html +++ b/assets/templates/asset_update.html @@ -45,6 +45,16 @@
+{% if not edit %} + +{% endif %} + {% endblock %} {% block js%} diff --git a/assets/urls.py b/assets/urls.py index 0a8ff599..ed3c0633 100644 --- a/assets/urls.py +++ b/assets/urls.py @@ -1,5 +1,7 @@ +from django.conf.urls import url from django.urls import path -from assets import views +from assets import views, models +from RIGS import versioning from PyRIGS.decorators import permission_required_with_403 @@ -10,6 +12,8 @@ urlpatterns = [ path('asset/create/', permission_required_with_403('assets.add_asset')(views.AssetCreate.as_view()), name='asset_create'), path('asset/id//edit/', permission_required_with_403('assets.change_asset')(views.AssetEdit.as_view()), name='asset_update'), path('asset/id//duplicate/', permission_required_with_403('assets.add_asset')(views.AssetDuplicate.as_view()), name='asset_duplicate'), + path('asset/id//history/', views.AssetVersionHistory.as_view(), + name='asset_history', kwargs={'model': models.Asset}), path('asset/search/', views.AssetSearch.as_view(), name='asset_search_json'), diff --git a/assets/views.py b/assets/views.py index 06449cdb..7b8b0cce 100644 --- a/assets/views.py +++ b/assets/views.py @@ -6,7 +6,7 @@ from django.utils.decorators import method_decorator from django.urls import reverse from django.db.models import Q from assets import models, forms - +from RIGS import versioning @method_decorator(csrf_exempt, name='dispatch') class AssetList(LoginRequiredMixin, generic.ListView): @@ -203,3 +203,17 @@ class SupplierUpdate(generic.UpdateView): model = models.Supplier form_class = forms.SupplierForm template_name = 'supplier_update.html' + +class AssetVersionHistory(AssetIDUrlMixin, versioning.VersionHistory): + 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 diff --git a/templates/base_assets.html b/templates/base_assets.html index 7dd53034..b75ae15b 100644 --- a/templates/base_assets.html +++ b/templates/base_assets.html @@ -5,7 +5,7 @@ {% endblock %} {% block titleelements %} - {% if perms.assets.view_asset%} + {% if perms.assets.view_asset %} {% endif %} - {% if perms.assets.view_supplier%} + {% if perms.assets.view_supplier %} {% endif %} + {% if perms.assets.view_asset %} +
  • Recent Changes
  • + {% endif %} {% endblock %}