2011-07-21 43 views
1

我正在开发一个Django应用程序,作为某个Oracle数据库的Web前端,与另一个本地数据库保持应用程序的数据(如Guardian权限)。问题是它可以从我不能控制的不同地方进行修改。在共享(非独占)访问数据库上的Django-guardian

比方说,我们有3个型号:UserThesisUserThesis

UserThesis - 表ThesisUser之间指定关系(User是的Thesis合着者)

场景:

  1. UserUserThesis表中删除条目除去的Thesis作者由其他应用程序。

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

我想到了一些解决方案:

  1. 有一些cron作业的外观通过检查条目的修改日期UserThesis变化。易于检查添加,清除需要再次查看所有关系。

  2. 修改Oracle数据库架构以添加Guardian DB表并在UserThesis表中创建触发器。我不想这样做,因为Oracle数据库被不同应用程序的数量共享。

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

哪一个是最好的?任何其他想法?

回答

0

我决定手动检查权限,并尽可能缓存它。我结束了get_perms_from_cache(self,user)模型方法,这对我有很大的帮助。