mirror of
https://github.com/nottinghamtec/PyRIGS.git
synced 2026-01-24 17:02:18 +00:00
Fix recent change stream list mutation issue
This commit is contained in:
@@ -2,15 +2,12 @@
|
|||||||
{% load paginator from filters %}
|
{% load paginator from filters %}
|
||||||
{% load to_class_name from filters %}
|
{% load to_class_name from filters %}
|
||||||
|
|
||||||
{% block title %}{{ title|title }} Activity Stream{% endblock %}
|
|
||||||
|
|
||||||
{% block js %}
|
{% block js %}
|
||||||
{% include 'partials/version_scripts.html' %}
|
{% include 'partials/version_scripts.html' %}
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<div class="col-12">
|
<div class="col-12">
|
||||||
<h3>{{ title|title }} Activity Stream</h3>
|
|
||||||
{% include 'partials/activity_table_body.html' %}
|
{% include 'partials/activity_table_body.html' %}
|
||||||
{% paginator %}
|
{% paginator %}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -25,8 +25,8 @@ for app in apps.get_app_configs():
|
|||||||
else:
|
else:
|
||||||
table_name = appname + '_activity_table'
|
table_name = appname + '_activity_table'
|
||||||
|
|
||||||
# TODO Permissions
|
# TODO Proper Permissions
|
||||||
urlpatterns += [path(appname + '/activity/', permission_required_with_403('RIGS.view_event')(views.ActivityTable.as_view()),
|
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)}), ]
|
name=table_name, kwargs={'app': appname, 'models': views.get_models(app.label)}), ]
|
||||||
|
|
||||||
for model in views.get_models(app=app.label):
|
for model in views.get_models(app=app.label):
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ from assets import models as asset_models
|
|||||||
from django.apps import apps
|
from django.apps import apps
|
||||||
from reversion import revisions as reversion
|
from reversion import revisions as reversion
|
||||||
from versioning.versioning import RIGSVersion
|
from versioning.versioning import RIGSVersion
|
||||||
|
from django.template.defaultfilters import title
|
||||||
|
|
||||||
from django.views.decorators.cache import never_cache, cache_page
|
from django.views.decorators.cache import never_cache, cache_page
|
||||||
from django.utils.decorators import method_decorator
|
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())
|
models = filter(lambda item: not hasattr(item, 'reversion_hide'), reversion.get_registered_models())
|
||||||
if app is not None:
|
if app is not None:
|
||||||
models = filter(lambda item: item in apps.get_app_config(app).get_models(), models)
|
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
|
# TODO Default filter of having permission to view associated object
|
||||||
def filter_models(models, user):
|
def filter_models(models, user):
|
||||||
if user is not None:
|
if user is not None:
|
||||||
models = filter(lambda model: not hasattr(model, 'reversion_perm') or user.has_perm(model.reversion_perm), models)
|
models = filter(lambda model: not hasattr(model, 'reversion_perm') or user.has_perm(model.reversion_perm), models)
|
||||||
|
|
||||||
return models
|
return models
|
||||||
|
|
||||||
|
|
||||||
@@ -66,12 +67,11 @@ class ActivityTable(generic.ListView):
|
|||||||
paginate_by = 25
|
paginate_by = 25
|
||||||
|
|
||||||
def get_queryset(self):
|
def get_queryset(self):
|
||||||
versions = RIGSVersion.objects.get_for_multiple_models(filter_models(self.kwargs['models'], self.request.user))
|
return RIGSVersion.objects.get_for_multiple_models(filter_models(self.kwargs.get('models'), self.request.user)).order_by("-revision__date_created")
|
||||||
return versions.order_by("-revision__date_created")
|
|
||||||
|
|
||||||
def get_context_data(self, **kwargs):
|
def get_context_data(self, **kwargs):
|
||||||
context = super(ActivityTable, self).get_context_data(**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':
|
if self.kwargs['app'] != 'rigboard':
|
||||||
context['override'] = 'base_{}.html'.format(self.kwargs['app'])
|
context['override'] = 'base_{}.html'.format(self.kwargs['app'])
|
||||||
|
|
||||||
@@ -84,8 +84,7 @@ class ActivityFeed(generic.ListView): # Appears on homepage
|
|||||||
paginate_by = 25
|
paginate_by = 25
|
||||||
|
|
||||||
def get_queryset(self):
|
def get_queryset(self):
|
||||||
versions = RIGSVersion.objects.get_for_multiple_models(filter_models(get_models(), self.request.user))
|
return RIGSVersion.objects.get_for_multiple_models(filter_models(get_models(), self.request.user)).order_by("-revision__date_created")
|
||||||
return versions.order_by("-revision__date_created")
|
|
||||||
|
|
||||||
def get_context_data(self, **kwargs):
|
def get_context_data(self, **kwargs):
|
||||||
# Call the base implementation first to get a context
|
# Call the base implementation first to get a context
|
||||||
|
|||||||
Reference in New Issue
Block a user