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 @@
- Last edited at {{ object.last_edited_at }} by {{ object.last_edited_by.name }} + Last edited at {{ object.last_edited_at|default:'never' }} by {{ object.last_edited_by.name|default:'nobody' }}
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 %} +
+
+ + Last edited at {{ object.last_edited_at|default:'never' }} by {{ object.last_edited_by.name|default:'nobody' }} + +
+
+{% 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 %}