0001-page-display-page-visibility-on-page-list-16028.patch
combo/data/models.py | ||
---|---|---|
336 | 336 |
def visibility(self): |
337 | 337 |
if self.public: |
338 | 338 |
return _('Public') |
339 |
return _('Private (%s)') % ', '.join([x.name for x in self.groups.all()]) |
|
339 |
groups = self.groups.all() |
|
340 |
groupnames = ', '.join([x.name for x in groups]) if groups else _('logged users') |
|
341 |
return _('Private (%s)') % groupnames |
|
340 | 342 | |
341 | 343 |
def is_visible(self, user=None): |
342 | 344 |
return element_is_visible(self, user=user) |
combo/manager/static/css/combo.manager.css | ||
---|---|---|
53 | 53 |
white-space: nowrap; |
54 | 54 |
} |
55 | 55 | |
56 |
div.cell h3 .group1 { |
|
56 |
div.cell h3 .group1, |
|
57 |
div.page .group1 { |
|
57 | 58 |
display: inline-block; |
58 | 59 |
overflow: hidden; |
59 | 60 |
white-space: nowrap; |
... | ... | |
68 | 69 |
} |
69 | 70 | |
70 | 71 |
div.cell h3 span.additional-label, |
71 |
div.cell h3 span.visibility-summary { |
|
72 |
div.cell h3 span.visibility-summary, |
|
73 |
div.page span.visibility-summary { |
|
72 | 74 |
font-size: 80%; |
73 | 75 |
padding-left: 1em; |
74 | 76 |
display: inline-block; |
... | ... | |
78 | 80 |
vertical-align: middle; |
79 | 81 |
} |
80 | 82 | |
81 |
div.cell h3 span.visibility-summary::before { |
|
83 |
div.cell h3 span.visibility-summary::before, |
|
84 |
div.page span.visibility-summary::before { |
|
82 | 85 |
content: "\f06e"; /* fa-eye */ |
83 | 86 |
font-family: FontAwesome; |
84 | 87 |
} |
combo/manager/templates/combo/manager_home.html | ||
---|---|---|
28 | 28 | |
29 | 29 |
<div class="objects-list" id="pages-list" data-page-order-url="{% url 'combo-manager-page-order' %}"> |
30 | 30 |
{% for page in object_list %} |
31 |
<div class="level-{{page.level}}" data-page-id="{{page.id}}" data-level="{{page.level}}"> |
|
32 |
<span class="handle">⣿</span> <a href="{% url 'combo-manager-page-view' pk=page.id %}">{{ page.title }}</a> |
|
31 |
<div class="page level-{{page.level}}" data-page-id="{{page.id}}" data-level="{{page.level}}"> |
|
32 |
<span class="handle">⣿</span> |
|
33 |
<span class="group1"> |
|
34 |
<a href="{% url 'combo-manager-page-view' pk=page.id %}">{{ page.title }}</a> |
|
35 |
</span> |
|
36 |
{% if not page.public %} |
|
37 |
<span class="visibility-summary" title="{% trans 'Restricted visibility' %}"> |
|
38 |
{% with page.groups.all as page_groups %} |
|
39 |
{% for group in page_groups %}{{ group.name }}{% if not forloop.last %}, {% endif %} |
|
40 |
{% empty %} |
|
41 |
{% trans "logged users" %} |
|
42 |
{% endfor %} |
|
43 |
{% endwith %} |
|
44 |
</span> |
|
45 |
{% endif %} |
|
33 | 46 |
</div> |
34 | 47 |
{% endfor %} |
35 | 48 |
</div> |
tests/test_manager.py | ||
---|---|---|
186 | 186 |
assert '<img' in resp.text |
187 | 187 |
assert Page.objects.get(id=page.id).picture.url in resp.text |
188 | 188 | |
189 | ||
190 |
def test_page_placeholder_restricted_visibility(app, admin_user): |
|
191 |
app = login(app) |
|
192 | ||
193 |
page = Page.objects.create() |
|
194 |
group = Group.objects.create(name='foobar') |
|
195 | ||
196 |
resp = app.get(reverse('combo-manager-homepage')) |
|
197 |
assert '<span class="visibility-summary"' not in resp.text |
|
198 | ||
199 |
page.public = False |
|
200 |
page.save() |
|
201 |
resp = app.get(reverse('combo-manager-homepage')) |
|
202 |
assert '<span class="visibility-summary" title="Restricted visibility">' in resp.text |
|
203 |
assert 'foobar' not in resp.text |
|
204 | ||
205 |
page.groups.set([group]) |
|
206 |
resp = app.get(reverse('combo-manager-homepage')) |
|
207 |
assert '<span class="visibility-summary" title="Restricted visibility">' in resp.text |
|
208 |
assert 'foobar' in resp.text |
|
209 | ||
210 | ||
189 | 211 |
def test_delete_page(app, admin_user): |
190 | 212 |
Page.objects.all().delete() |
191 | 213 |
page = Page(title='One', slug='one', template_name='standard') |
192 |
- |