ShortcutsΒΆ

It is trivial to take shortcuts because the rule registry is a simple dict.

You can reuse your rules several times in standard python:

def my_model_or_is_staff(user, rule, model, obj=None):
    return user.is_staff or (obj and obj.author == user)

rules_light.registry.setdefault('your_app.your_model.create',
    my_model_or_is_staff)
rules_light.registry.setdefault('your_app.your_model.update',
    my_model_or_is_staff)
rules_light.registry.setdefault('your_app.your_model.delete',
    my_model_or_is_staff)

This module provides some shortcut(s). Shortcuts are also usable as decorators too (see make_decorator):

@rules_light.is_authenticated
def my_book(user, rule, book):
    return book.author == user

rules_light.registry.setdefault('your_app.your_model.update', my_book)