kb: limit last updated pages content to visible pages (#39484)
This commit is contained in:
parent
9c841ea861
commit
149e68b7e7
|
@ -15,6 +15,7 @@
|
|||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
import datetime
|
||||
import itertools
|
||||
|
||||
from django.db import models
|
||||
from django.utils import timezone
|
||||
|
@ -42,5 +43,8 @@ class LatestPageUpdatesCell(CellBase):
|
|||
pages = self.root_page.get_descendants_and_me()
|
||||
else:
|
||||
pages = Page.objects.all()
|
||||
extra_context['pages'] = pages.order_by('-last_update_timestamp')[:self.limit]
|
||||
user = self.get_concerned_user(context)
|
||||
extra_context['pages'] = itertools.islice(
|
||||
(x for x in pages.order_by('-last_update_timestamp') if x.is_visible(user=user)),
|
||||
self.limit)
|
||||
return extra_context
|
||||
|
|
|
@ -17,6 +17,8 @@
|
|||
import pytest
|
||||
import re
|
||||
|
||||
from django.test.client import RequestFactory
|
||||
|
||||
from combo.data.models import CellBase, Page, TextCell
|
||||
from combo.apps.kb.models import LatestPageUpdatesCell
|
||||
|
||||
|
@ -135,3 +137,29 @@ def test_updated_pages_cell_root_page():
|
|||
Page.objects.get(slug='page-2').delete()
|
||||
cell = CellBase.get_cells(slug='me')[0] # reload cell
|
||||
assert cell.render(ctx).count('<li') == 2
|
||||
|
||||
|
||||
def test_updated_pages_cell_visibility(freezer, admin_user):
|
||||
Page.objects.all().delete()
|
||||
page = Page(title='example page', slug='example-page')
|
||||
page.save()
|
||||
Page(title='second example page', slug='second-example-page').save()
|
||||
Page(title='third example page', slug='third-example-page', public=False).save()
|
||||
cell = LatestPageUpdatesCell(page=page, order=0)
|
||||
cell.save()
|
||||
|
||||
request = RequestFactory().get('/')
|
||||
request.user = None
|
||||
ctx = {'request': request}
|
||||
rendered = cell.render(ctx)
|
||||
assert rendered.count('<a') == 2
|
||||
assert '/example-page' in rendered
|
||||
assert '/second-example-page' in rendered
|
||||
assert '/third-example-page' not in rendered
|
||||
|
||||
request.user = admin_user
|
||||
rendered = cell.render(ctx)
|
||||
assert rendered.count('<a') == 3
|
||||
assert '/example-page' in rendered
|
||||
assert '/second-example-page' in rendered
|
||||
assert '/third-example-page' in rendered
|
||||
|
|
Loading…
Reference in New Issue