From 44fef39a2ecf1cb0ce19d0428757130f7867a524 Mon Sep 17 00:00:00 2001 From: FreneticScribbler Date: Sun, 25 Oct 2020 18:17:24 +0000 Subject: [PATCH] Fix recent change stream list mutation issue --- versioning/templates/activity_table.html | 3 --- versioning/urls.py | 4 ++-- versioning/views.py | 13 ++++++------- 3 files changed, 8 insertions(+), 12 deletions(-) diff --git a/versioning/templates/activity_table.html b/versioning/templates/activity_table.html index f7f47f99..e86b3d9b 100644 --- a/versioning/templates/activity_table.html +++ b/versioning/templates/activity_table.html @@ -2,15 +2,12 @@ {% load paginator from filters %} {% load to_class_name from filters %} -{% block title %}{{ title|title }} Activity Stream{% endblock %} - {% block js %} {% include 'partials/version_scripts.html' %} {% endblock %} {% block content %}
-

{{ title|title }} Activity Stream

{% include 'partials/activity_table_body.html' %} {% paginator %}
diff --git a/versioning/urls.py b/versioning/urls.py index c7f92f2c..50348560 100644 --- a/versioning/urls.py +++ b/versioning/urls.py @@ -25,8 +25,8 @@ for app in apps.get_app_configs(): else: table_name = appname + '_activity_table' - # TODO Permissions - urlpatterns += [path(appname + '/activity/', permission_required_with_403('RIGS.view_event')(views.ActivityTable.as_view()), + # TODO Proper Permissions + urlpatterns += [path(appname + '/activity/', permission_required_with_403('RIGS.add_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): diff --git a/versioning/views.py b/versioning/views.py index 29ab9cef..2ce16004 100644 --- a/versioning/views.py +++ b/versioning/views.py @@ -14,6 +14,7 @@ from assets import models as asset_models from django.apps import apps from reversion import revisions as reversion from versioning.versioning import RIGSVersion +from django.template.defaultfilters import title from django.views.decorators.cache import never_cache, cache_page from django.utils.decorators import method_decorator @@ -49,14 +50,14 @@ def get_models(app=None): models = filter(lambda item: not hasattr(item, 'reversion_hide'), reversion.get_registered_models()) if app is not None: models = filter(lambda item: item in apps.get_app_config(app).get_models(), models) - return models + # Don't allow modifying original list! + return list(models).copy() # 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 @@ -66,12 +67,11 @@ class ActivityTable(generic.ListView): paginate_by = 25 def get_queryset(self): - versions = RIGSVersion.objects.get_for_multiple_models(filter_models(self.kwargs['models'], self.request.user)) - return versions.order_by("-revision__date_created") + return RIGSVersion.objects.get_for_multiple_models(filter_models(self.kwargs.get('models'), self.request.user)).order_by("-revision__date_created") def get_context_data(self, **kwargs): context = super(ActivityTable, self).get_context_data(**kwargs) - context['title'] = self.kwargs['app'] + context['page_title'] = "{} Activity Stream".format(title(self.kwargs['app'])) if self.kwargs['app'] != 'rigboard': context['override'] = 'base_{}.html'.format(self.kwargs['app']) @@ -84,8 +84,7 @@ class ActivityFeed(generic.ListView): # Appears on homepage paginate_by = 25 def get_queryset(self): - versions = RIGSVersion.objects.get_for_multiple_models(filter_models(get_models(), self.request.user)) - return versions.order_by("-revision__date_created") + return RIGSVersion.objects.get_for_multiple_models(filter_models(get_models(), self.request.user)).order_by("-revision__date_created") def get_context_data(self, **kwargs): # Call the base implementation first to get a context