Я не слышал ни о каком таком приложении ... Но я не думаю, что его будет слишком сложно построить.
Если бы я делал это, я бы поставил проверку разрешений в точках входа для каждого приложения. Например:
check_app_permission = lambda request: permissions.check_app_permission("blog", request)
def view_blog(request, …):
check_app_permission(request)
…
(может быть даже возможно сделать немного магии и ввести эту проверку на уровне urls.py
...)
Кроме того, я бы создал has_app_permission
тег шаблона:
<div id="sidebar">
{% if has_app_permission "blog" %}
{% include "blog/sidebar_recent_posts.html" %}
{% endif %}
</div>
или аналогичный.
Наконец, есть приблизительно миллион способов, которыми вы могли бы внедрить систему разрешений ... И без дополнительной информации я не смог бы прокомментировать. Но самое простое было бы примерно так:
class App(Model):
name = CharField(…)
class AppPermission(object):
app = ForeignKey(App)
user = ForiegnKey(User)
def user_has_permission(user, app_name):
return AppPermission.objects.filter(app__name=app_name, user=user).exists()
Я бы не пытался делать это с промежуточным программным обеспечением, потому что, если я правильно понимаю проблему, я ожидаю, что вы (или, по крайней мере, я ожидаю, что я) буду тратить кучу времени на создание общей структуры, которая, в конец, просто будет иметь чеки, похожие на те, которые указаны выше.
Это помогает? Есть что-то, что я могу уточнить?