Skip to content
This repository has been archived by the owner on May 31, 2019. It is now read-only.

Commit

Permalink
Fix a bug when viewing page as anonymous, add settings.DOCUMENTS_PAGE…
Browse files Browse the repository at this point in the history
…_RESTRICTED so the page viewing can require to be logged in, bump to 0.9.16
  • Loading branch information
sveetch committed Nov 14, 2014
1 parent cde8f8d commit aa8074e
Show file tree
Hide file tree
Showing 5 changed files with 18 additions and 5 deletions.
2 changes: 1 addition & 1 deletion README.rst
Expand Up @@ -129,7 +129,7 @@ And add the `djangocodemirror`_ required settings : ::
CODEMIRROR_SETTINGS['sveetchies-documents-add-insert'] = CODEMIRROR_SETTINGS['sveetchies-documents-edit-insert'].copy()
CODEMIRROR_SETTINGS['sveetchies-documents-add-insert']['quicksave_url'] = None

Also you can overrides app settings to change some behaviors, see ``sveedocuments.local_settings`` to see what you can override in your project settings like ``DOCUMENTS_PAGE_TEMPLATES`` to add new templates to use to build your pages.
Also you can overrides app settings to change some behaviors, see ``sveedocuments.local_settings`` to see what you can override in your project settings like ``DOCUMENTS_PAGE_TEMPLATES`` to add new templates to use to build your pages or ``DOCUMENTS_PAGE_RESTRICTED`` to restrict pages viewing to be logged in.

Optionnally if you plan to use `autobreadcrumbs`_, register its *context processor* in settings :

Expand Down
2 changes: 1 addition & 1 deletion sveedocuments/__init__.py
Expand Up @@ -2,4 +2,4 @@
"""
Django application to manage documents in ReStructuredText
"""
__version__ = '0.9.15'
__version__ = '0.9.16'
4 changes: 4 additions & 0 deletions sveedocuments/local_settings.py
Expand Up @@ -19,6 +19,10 @@
# Enable or disable Pages archiving
DOCUMENTS_PAGE_ARCHIVED = True

# Page view restriction, if True page viewing will require to be authenticated,
# if False page viewing is free for all
DOCUMENTS_PAGE_RESTRICTED = getattr(settings, 'DOCUMENTS_PAGE_RESTRICTED', False)

# Available templates for Pages
DOCUMENTS_PAGE_TEMPLATES = {
'default': ('sveedocuments/page_details/page_default.html', _('Default template with document content only')),
Expand Down
@@ -1,5 +1,7 @@
{% load i18n guardian_tags %}{% spaceless %}
{% if user.is_authenticated %}
{% get_obj_perms user for page_instance as "page_perms" %}
{% endif %}
<div class="clearfix">
<p class="document_action_menu right">
<a href="#" data-dropdown="document-actions-drop" class="button medium radius secondary dropdown">{% trans "Actions on this document" %}</a><br>
Expand Down
13 changes: 10 additions & 3 deletions sveedocuments/views/page.py
Expand Up @@ -55,7 +55,7 @@ def get(self, request, *args, **kwargs):
context = {'content' : SourceParser(content, silent=False)}
return self.render_to_response(context)

class PageDetailsView(generic.DetailView):
class PageDetailsMixin(object):
"""
*Page* view
"""
Expand All @@ -70,18 +70,25 @@ def get_object(self, *args, **kwargs):
"""
cache_key = "_cache_get_object"
if not hasattr(self, cache_key):
setattr(self, cache_key, super(PageDetailsView, self).get_object(*args, **kwargs))
setattr(self, cache_key, super(PageDetailsMixin, self).get_object(*args, **kwargs))
return getattr(self, cache_key)

def get(self, request, **kwargs):
# Check if the object is ``visible``
if not self.get_object().visible:
raise Http404
return super(PageDetailsView, self).get(request, **kwargs)
return super(PageDetailsMixin, self).get(request, **kwargs)

def get_template_names(self):
return [self.object.get_template()]

if local_settings.DOCUMENTS_PAGE_RESTRICTED:
class PageDetailsView(PageDetailsMixin, LoginRequiredMixin, generic.DetailView):
pass
else:
class PageDetailsView(PageDetailsMixin, generic.DetailView):
pass

class PageSourceView(PageDetailsView):
"""
Raw content *Page* view
Expand Down

0 comments on commit aa8074e

Please sign in to comment.