mirror of
https://github.com/nottinghamtec/PyRIGS.git
synced 2026-01-17 05:22:16 +00:00
Add revision history to invoices/payments.
Also patches previously introduced reversion permissions hole. Supersedes and closes #337.
This commit is contained in:
@@ -16,19 +16,29 @@ urlpatterns = [
|
||||
name='activity_feed'),
|
||||
]
|
||||
|
||||
# Well except this specific hack for legacy URLs...if only the RIGS app had been named 'rigboard'!
|
||||
for app in apps.get_app_configs():
|
||||
appname = str(app.label)
|
||||
# Well except this specific hack for legacy URLs...if only the RIGS app had been named 'rigboard'!
|
||||
|
||||
if appname == 'RIGS':
|
||||
appname = 'rigboard'
|
||||
urlpatterns += [path(appname + '/activity/', permission_required_with_403('RIGS.view_event')(views.ActivityTable.as_view()),
|
||||
name='activity_table', kwargs={'app': appname, 'models': views.get_models(app.label)}), ]
|
||||
table_name = 'activity_table'
|
||||
else:
|
||||
urlpatterns += [path(appname + '/activity/', permission_required_with_403('RIGS.view_event')(views.ActivityTable.as_view()),
|
||||
name=appname + '_activity_table', kwargs={'app': appname, 'models': views.get_models(app.label)}), ]
|
||||
for model in views.get_models(app.label):
|
||||
table_name = appname + '_activity_table'
|
||||
|
||||
# TODO Permissions
|
||||
urlpatterns += [path(appname + '/activity/', permission_required_with_403('RIGS.view_event')(views.ActivityTable.as_view()),
|
||||
name=table_name, kwargs={'app': appname, 'models': views.get_models(app.label)}), ]
|
||||
|
||||
for model in views.get_models(app=app.label):
|
||||
modelname = model.__name__.lower()
|
||||
urlpatterns += [
|
||||
path(appname + '/' + modelname + '/<str:pk>/history/', permission_required_with_403('{}.change_{}'.format(app.label, modelname))(views.VersionHistory.as_view()),
|
||||
name='{}_history'.format(modelname), kwargs={'model': model, 'app': appname, }),
|
||||
]
|
||||
if appname == 'rigboard':
|
||||
urlpatterns += [
|
||||
path('{}/<str:pk>/history/'.format(modelname), permission_required_with_403('{}.change_{}'.format(app.label, modelname))(views.VersionHistory.as_view()),
|
||||
name='{}_history'.format(modelname), kwargs={'model': model, 'app': appname, }),
|
||||
]
|
||||
else:
|
||||
urlpatterns += [
|
||||
path('{}/{}/<str:pk>/history/'.format(appname, modelname), permission_required_with_403('{}.change_{}'.format(app.label, modelname))(views.VersionHistory.as_view()),
|
||||
name='{}_history'.format(modelname), kwargs={'model': model, 'app': appname, }),
|
||||
]
|
||||
|
||||
@@ -52,13 +52,21 @@ def get_models(app=None):
|
||||
return models
|
||||
|
||||
|
||||
# TODO Default filter of having permission to view associated object
|
||||
def filter_models(models, user):
|
||||
if user is not None:
|
||||
models = filter(lambda model: not hasattr(model, 'reversion_perm') or user.has_perm(model.reversion_perm), models)
|
||||
|
||||
return models
|
||||
|
||||
|
||||
class ActivityTable(generic.ListView):
|
||||
model = RIGSVersion
|
||||
template_name = "activity_table.html"
|
||||
paginate_by = 25
|
||||
|
||||
def get_queryset(self):
|
||||
versions = RIGSVersion.objects.get_for_multiple_models(self.kwargs['models'])
|
||||
versions = RIGSVersion.objects.get_for_multiple_models(filter_models(self.kwargs['models'], self.request.user))
|
||||
return versions.order_by("-revision__date_created")
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
@@ -69,17 +77,15 @@ class ActivityTable(generic.ListView):
|
||||
|
||||
return context
|
||||
|
||||
# Appears on homepage
|
||||
|
||||
|
||||
@method_decorator(never_cache, name='dispatch') # Disable browser based caching
|
||||
class ActivityFeed(generic.ListView):
|
||||
class ActivityFeed(generic.ListView): # Appears on homepage
|
||||
model = RIGSVersion
|
||||
template_name = "activity_feed_data.html"
|
||||
paginate_by = 25
|
||||
|
||||
def get_queryset(self):
|
||||
versions = RIGSVersion.objects.get_for_multiple_models(get_models())
|
||||
versions = RIGSVersion.objects.get_for_multiple_models(filter_models(get_models(), self.request.user))
|
||||
return versions.order_by("-revision__date_created")
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
|
||||
Reference in New Issue
Block a user