Skip to content

A simple FeinCMS extension that adds permission-checking to a model

License

Notifications You must be signed in to change notification settings

vmax/feincms-pagepermissions

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

32 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

feincms-pagepermissions

A simple FeinCMS extension that adds permission-checking to a model. The model is assumed to be a Page, but it could be any FeinCMS model.

Usage

Install using pip:

pip install feincms-pagepermissions

Change your Django settings to include pagepermissions:

INSTALLED_APPS += (
    'pagepermissions',
)

Then add the extension to your content type:

Page.register_extensions(
    ...
    'pagepermissions.extension',
)

If you need to specify arguments for permissions field, i.e. limit_choices_to:

from pagepermissions.extension import ExtensionFactory as PagePermissionExtensionFactory

Page.register_extensions(
    ...
    PagePermissionExtensionFactory.with_model_params(
        'MyCustomPermissionExt',
        limit_choices_to=Q(…)
    ),
)

This will add a permissions field to your content type that you will have to add yourself through syncdb or South or otherwise.

When you edit or add a page you will have the option of setting the permissions required for a user to view that page. You can select multiple permissions, and if the user has any of those they will be able to view the page. Otherwise they will receive a 403.

Finally, you may also want to keep a page out of the navigation if the user has no permission to view it. For this, there is a template filter called check_page_permission. Use it as follows in your template:

{% load feincms_page_tags feincms_pagepermissions_tags %}

{% feincms_nav feincms_page level=1 depth=1 as level1 %}
{% for page in level1 %}
    {% if page|check_page_permission:user %}
       ...display page navigation...
    {% endif %}
{% endfor %}

Contributing

Your pull requests are very welcome! Please follow the established code style.

License

feincms-pagepermissions is released under the BSD license.

About

A simple FeinCMS extension that adds permission-checking to a model

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 89.6%
  • HTML 10.4%