general: make it possible to restrict a cell to unlogged users (#8641)
This commit is contained in:
parent
07ad4459f8
commit
9d01a708bf
|
@ -0,0 +1,20 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import models, migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('family', '0001_initial'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='familyinfoscell',
|
||||
name='restricted_to_unlogged',
|
||||
field=models.BooleanField(default=False, verbose_name='Restrict to unlogged users'),
|
||||
preserve_default=True,
|
||||
),
|
||||
]
|
|
@ -0,0 +1,20 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import models, migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('momo', '0006_momooptions_extra_css'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='momoiconcell',
|
||||
name='restricted_to_unlogged',
|
||||
field=models.BooleanField(default=False, verbose_name='Restrict to unlogged users'),
|
||||
preserve_default=True,
|
||||
),
|
||||
]
|
|
@ -0,0 +1,56 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import models, migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('wcs', '0009_remove_wcscategorycell_link_page'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='categoriescell',
|
||||
name='restricted_to_unlogged',
|
||||
field=models.BooleanField(default=False, verbose_name='Restrict to unlogged users'),
|
||||
preserve_default=True,
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='trackingcodeinputcell',
|
||||
name='restricted_to_unlogged',
|
||||
field=models.BooleanField(default=False, verbose_name='Restrict to unlogged users'),
|
||||
preserve_default=True,
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='wcscategorycell',
|
||||
name='restricted_to_unlogged',
|
||||
field=models.BooleanField(default=False, verbose_name='Restrict to unlogged users'),
|
||||
preserve_default=True,
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='wcscurrentdraftscell',
|
||||
name='restricted_to_unlogged',
|
||||
field=models.BooleanField(default=False, verbose_name='Restrict to unlogged users'),
|
||||
preserve_default=True,
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='wcscurrentformscell',
|
||||
name='restricted_to_unlogged',
|
||||
field=models.BooleanField(default=False, verbose_name='Restrict to unlogged users'),
|
||||
preserve_default=True,
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='wcsformcell',
|
||||
name='restricted_to_unlogged',
|
||||
field=models.BooleanField(default=False, verbose_name='Restrict to unlogged users'),
|
||||
preserve_default=True,
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='wcsformsofcategorycell',
|
||||
name='restricted_to_unlogged',
|
||||
field=models.BooleanField(default=False, verbose_name='Restrict to unlogged users'),
|
||||
preserve_default=True,
|
||||
),
|
||||
]
|
|
@ -0,0 +1,56 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import models, migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('data', '0011_auto_20151028_1047'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='blurpcell',
|
||||
name='restricted_to_unlogged',
|
||||
field=models.BooleanField(default=False, verbose_name='Restrict to unlogged users'),
|
||||
preserve_default=True,
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='feedcell',
|
||||
name='restricted_to_unlogged',
|
||||
field=models.BooleanField(default=False, verbose_name='Restrict to unlogged users'),
|
||||
preserve_default=True,
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='fortunecell',
|
||||
name='restricted_to_unlogged',
|
||||
field=models.BooleanField(default=False, verbose_name='Restrict to unlogged users'),
|
||||
preserve_default=True,
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='linkcell',
|
||||
name='restricted_to_unlogged',
|
||||
field=models.BooleanField(default=False, verbose_name='Restrict to unlogged users'),
|
||||
preserve_default=True,
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='menucell',
|
||||
name='restricted_to_unlogged',
|
||||
field=models.BooleanField(default=False, verbose_name='Restrict to unlogged users'),
|
||||
preserve_default=True,
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='textcell',
|
||||
name='restricted_to_unlogged',
|
||||
field=models.BooleanField(default=False, verbose_name='Restrict to unlogged users'),
|
||||
preserve_default=True,
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='unlockmarkercell',
|
||||
name='restricted_to_unlogged',
|
||||
field=models.BooleanField(default=False, verbose_name='Restrict to unlogged users'),
|
||||
preserve_default=True,
|
||||
),
|
||||
]
|
|
@ -45,6 +45,8 @@ from combo.utils import NothingInCacheException
|
|||
|
||||
|
||||
def element_is_visible(element, user=None):
|
||||
if hasattr(element, 'restricted_to_unlogged') and element.restricted_to_unlogged:
|
||||
return bool(user is None or user.is_anonymous())
|
||||
if element.public:
|
||||
return True
|
||||
if user is None:
|
||||
|
@ -233,6 +235,8 @@ class CellBase(models.Model):
|
|||
slug = models.SlugField(_('Slug'), blank=True)
|
||||
|
||||
public = models.BooleanField(_('Public'), default=True)
|
||||
restricted_to_unlogged = models.BooleanField(
|
||||
_('Restrict to unlogged users'), default=False)
|
||||
groups = models.ManyToManyField(Group, verbose_name=_('Groups'), blank=True)
|
||||
|
||||
default_form_class = None
|
||||
|
@ -348,11 +352,13 @@ class CellBase(models.Model):
|
|||
|
||||
def formfield_callback(field):
|
||||
if field.name == 'public':
|
||||
return OppositeBooleanField(label=_('Private'), required=False)
|
||||
return OppositeBooleanField(
|
||||
label=_('Restrict to logged-in users'),
|
||||
required=False)
|
||||
return field.formfield()
|
||||
|
||||
return model_forms.modelform_factory(self.__class__,
|
||||
fields=['public', 'groups'],
|
||||
fields=['restricted_to_unlogged', 'public', 'groups'],
|
||||
formfield_callback=formfield_callback)
|
||||
|
||||
def get_extra_manager_context(self):
|
||||
|
|
|
@ -38,6 +38,21 @@ def test_page_contents():
|
|||
resp = app.get('/', status=200)
|
||||
assert 'Foobar' in resp.body
|
||||
|
||||
def test_page_contents_unlogged_only(admin_user):
|
||||
Page.objects.all().delete()
|
||||
page = Page(title='Home', slug='index', template_name='standard')
|
||||
page.save()
|
||||
cell = TextCell(page=page, placeholder='content', text='Foobar', order=0,
|
||||
restricted_to_unlogged=True)
|
||||
cell.save()
|
||||
app = TestApp(application)
|
||||
resp = app.get('/', status=200)
|
||||
assert 'Foobar' in resp.body
|
||||
|
||||
app = login(TestApp(application))
|
||||
resp = app.get('/', status=200)
|
||||
assert not 'Foobar' in resp.body
|
||||
|
||||
def test_page_footer_acquisition():
|
||||
Page.objects.all().delete()
|
||||
page = Page(title='Home', slug='index', template_name='standard')
|
||||
|
|
Loading…
Reference in New Issue