Fixes #4593: Fix AttributeError exception when viewing object lists as a non-authenticated user

This commit is contained in:
Jeremy Stretch
2020-05-06 23:44:06 -04:00
parent 3711283de5
commit 5c1adf9e37
5 changed files with 31 additions and 8 deletions

View File

@@ -50,9 +50,12 @@ def get_paginate_count(request):
if 'per_page' in request.GET:
try:
per_page = int(request.GET.get('per_page'))
request.user.config.set('pagination.per_page', per_page, commit=True)
if request.user.is_authenticated:
request.user.config.set('pagination.per_page', per_page, commit=True)
return per_page
except ValueError:
pass
return request.user.config.get('pagination.per_page', settings.PAGINATE_COUNT)
if request.user.is_authenticated:
return request.user.config.get('pagination.per_page', settings.PAGINATE_COUNT)
return settings.PAGINATE_COUNT

View File

@@ -3,6 +3,7 @@ import sys
from copy import deepcopy
from django.contrib import messages
from django.contrib.auth.decorators import login_required
from django.contrib.contenttypes.models import ContentType
from django.core.exceptions import FieldDoesNotExist, ValidationError
from django.db import transaction, IntegrityError
@@ -13,6 +14,7 @@ from django.shortcuts import get_object_or_404, redirect, render
from django.template import loader
from django.template.exceptions import TemplateDoesNotExist
from django.urls import reverse
from django.utils.decorators import method_decorator
from django.utils.html import escape
from django.utils.http import is_safe_url
from django.utils.safestring import mark_safe
@@ -164,7 +166,10 @@ class ObjectListView(View):
permissions[action] = request.user.has_perm(perm_name)
# Construct the table based on the user's permissions
columns = request.user.config.get(f"tables.{self.table.__name__}.columns")
if request.user.is_authenticated:
columns = request.user.config.get(f"tables.{self.table.__name__}.columns")
else:
columns = None
table = self.table(self.queryset, columns=columns)
if 'pk' in table.base_columns and (permissions['change'] or permissions['delete']):
table.columns.show('pk')
@@ -188,6 +193,7 @@ class ObjectListView(View):
return render(request, self.template_name, context)
@method_decorator(login_required)
def post(self, request):
# Update the user's table configuration