DB上的Django-guardian具有共享(非独占)访问权限

时间:2011-07-21 11:34:24

标签: python django database-permissions django-permissions

我正在开发一个Django应用程序作为某个Oracle数据库的Web前端,另一个本地数据库保存应用程序的数据,如Guardian权限。问题是它可以从我无法控制的不同地方进行修改。

假设我们有3个模型:UserThesisUserThesis

UserThesis - 指定ThesisUser之间关系的表格(User的共同作者Thesis

情景:

  1. User作为Thesis的作者被删除,删除了其他应用在UserThesis表中的条目。

  2. User尝试使用我们的Django应用修改Thesis。他成功了,因为Guardian和Django不知道UserThesis的变化。

  3. 我想到了一些解决方案:

    1. 让一些cron作业通过检查修改日期来查找UserThesis中的更改。易于检查添加,删除将需要再次查看所有关系。

    2. 修改Oracle DB架构以在UserThesis表上添加Guardian DB表并创建触发器。我不想这样做,因为Oracle DB在许多不同的应用程序之间共享。

    3. 手动检查视图和模板中的关系(Oracle上的负载较重)。

    4. 哪一个最好?还有其他想法吗?

1 个答案:

答案 0 :(得分:0)

我决定手动检查权限,尽可能地缓存它。我最终得到了get_perms_from_cache(自我,用户)模型方法,这对我有很大帮助。