mirror of
https://github.com/nottinghamtec/PyRIGS.git
synced 2026-01-20 23:12:15 +00:00
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:
@@ -245,7 +245,7 @@
|
|||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-sm-10 align-left">
|
<div class="col-sm-10 align-left">
|
||||||
<a href="{% url 'event_history' object.pk %}" title="View Revision History">
|
<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>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-sm-2">
|
<div class="col-sm-2">
|
||||||
|
|||||||
@@ -6,6 +6,10 @@ from django.urls import reverse
|
|||||||
from django.db.models.signals import pre_save
|
from django.db.models.signals import pre_save
|
||||||
from django.dispatch.dispatcher import receiver
|
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 AssetCategory(models.Model):
|
||||||
class Meta:
|
class Meta:
|
||||||
@@ -30,7 +34,8 @@ class AssetStatus(models.Model):
|
|||||||
return self.name
|
return self.name
|
||||||
|
|
||||||
|
|
||||||
class Supplier(models.Model):
|
@reversion.register
|
||||||
|
class Supplier(models.Model, RevisionMixin):
|
||||||
name = models.CharField(max_length=80)
|
name = models.CharField(max_length=80)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
@@ -55,7 +60,8 @@ class Connector(models.Model):
|
|||||||
return self.description
|
return self.description
|
||||||
|
|
||||||
|
|
||||||
class Asset(models.Model):
|
@reversion.register
|
||||||
|
class Asset(models.Model, RevisionMixin):
|
||||||
class Meta:
|
class Meta:
|
||||||
ordering = ['asset_id_prefix', 'asset_id_number']
|
ordering = ['asset_id_prefix', 'asset_id_number']
|
||||||
permissions = (
|
permissions = (
|
||||||
|
|||||||
@@ -45,6 +45,16 @@
|
|||||||
</div>
|
</div>
|
||||||
</form>
|
</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 %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block js%}
|
{% block js%}
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
|
from django.conf.urls import url
|
||||||
from django.urls import path
|
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
|
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/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>/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>/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'),
|
path('asset/search/', views.AssetSearch.as_view(), name='asset_search_json'),
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ 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 assets import models, forms
|
from assets import models, forms
|
||||||
|
from RIGS import versioning
|
||||||
|
|
||||||
@method_decorator(csrf_exempt, name='dispatch')
|
@method_decorator(csrf_exempt, name='dispatch')
|
||||||
class AssetList(LoginRequiredMixin, generic.ListView):
|
class AssetList(LoginRequiredMixin, generic.ListView):
|
||||||
@@ -203,3 +203,17 @@ class SupplierUpdate(generic.UpdateView):
|
|||||||
model = models.Supplier
|
model = models.Supplier
|
||||||
form_class = forms.SupplierForm
|
form_class = forms.SupplierForm
|
||||||
template_name = 'supplier_update.html'
|
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
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block titleelements %}
|
{% block titleelements %}
|
||||||
{% if perms.assets.view_asset%}
|
{% if perms.assets.view_asset %}
|
||||||
<li class="dropdown">
|
<li class="dropdown">
|
||||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Assets<b class="caret"></b></a>
|
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Assets<b class="caret"></b></a>
|
||||||
<ul class="dropdown-menu">
|
<ul class="dropdown-menu">
|
||||||
@@ -16,7 +16,7 @@
|
|||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if perms.assets.view_supplier%}
|
{% if perms.assets.view_supplier %}
|
||||||
<li class="dropdown">
|
<li class="dropdown">
|
||||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown"> Suppliers<b class="caret"></b></a>
|
<a href="#" class="dropdown-toggle" data-toggle="dropdown"> Suppliers<b class="caret"></b></a>
|
||||||
<ul class="dropdown-menu">
|
<ul class="dropdown-menu">
|
||||||
@@ -28,4 +28,7 @@
|
|||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
{% if perms.assets.view_asset %}
|
||||||
|
<li><a href="{% url 'activity_table' %}">Recent Changes</a></li>
|
||||||
|
{% endif %}
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|||||||
Reference in New Issue
Block a user