mirror of
https://github.com/nottinghamtec/PyRIGS.git
synced 2026-01-17 13:32: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:
@@ -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 = (
|
||||
|
||||
@@ -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%}
|
||||
|
||||
@@ -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'),
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user