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.
This commit is contained in:
2019-12-13 20:19:17 +00:00
parent 7c876348d7
commit 206b54dab0
6 changed files with 44 additions and 7 deletions

View File

@@ -245,7 +245,7 @@
<div class="row">
<div class="col-sm-10 align-left">
<a href="{% url 'event_history' object.pk %}" title="View Revision History">
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' }}
</a>
</div>
<div class="col-sm-2">

View File

@@ -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 = (

View File

@@ -45,6 +45,16 @@
</div>
</form>
{% if not edit %}
<div class="col-sm-12 text-right">
<div>
<a href="{% url 'asset_history' object.asset_id %}" title="View Revision History">
Last edited at {{ object.last_edited_at|default:'never' }} by {{ object.last_edited_by.name|default:'nobody' }}
</a>
</div>
</div>
{% endif %}
{% endblock %}
{% block js%}

View File

@@ -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/<str:pk>/edit/', permission_required_with_403('assets.change_asset')(views.AssetEdit.as_view()), name='asset_update'),
path('asset/id/<str:pk>/duplicate/', permission_required_with_403('assets.add_asset')(views.AssetDuplicate.as_view()), name='asset_duplicate'),
path('asset/id/<str:pk>/history/', views.AssetVersionHistory.as_view(),
name='asset_history', kwargs={'model': models.Asset}),
path('asset/search/', views.AssetSearch.as_view(), name='asset_search_json'),

View File

@@ -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

View File

@@ -5,7 +5,7 @@
{% endblock %}
{% block titleelements %}
{% if perms.assets.view_asset%}
{% if perms.assets.view_asset %}
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Assets<b class="caret"></b></a>
<ul class="dropdown-menu">
@@ -16,7 +16,7 @@
</ul>
</li>
{% endif %}
{% if perms.assets.view_supplier%}
{% if perms.assets.view_supplier %}
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown"> Suppliers<b class="caret"></b></a>
<ul class="dropdown-menu">
@@ -28,4 +28,7 @@
</ul>
</li>
{% endif %}
{% if perms.assets.view_asset %}
<li><a href="{% url 'activity_table' %}">Recent Changes</a></li>
{% endif %}
{% endblock %}