summaryrefslogtreecommitdiff
path: root/addons/document/nodes.py
diff options
context:
space:
mode:
authorP. Christeas <p_christ@hol.gr>2010-10-27 13:24:28 +0300
committerP. Christeas <p_christ@hol.gr>2010-10-27 13:24:28 +0300
commit4dae4d0dbfc0d9740e36475b248dab181c8f1aae (patch)
treecf9d6daa001af14ad970467c122a2a4ebbb5de2c /addons/document/nodes.py
parentd0b6bf11812fd80812aef2ad79e297a7dc8d537a (diff)
document: base the dir permissions on ir.rule, not on sql call.
bzr revid: p_christ@hol.gr-20101027102428-6n2huvvv2o1tiyh6
Diffstat (limited to 'addons/document/nodes.py')
-rw-r--r--addons/document/nodes.py16
1 files changed, 13 insertions, 3 deletions
diff --git a/addons/document/nodes.py b/addons/document/nodes.py
index eed424ccb6a..190e0d9c3ce 100644
--- a/addons/document/nodes.py
+++ b/addons/document/nodes.py
@@ -478,6 +478,16 @@ def mkdosname(company_name, default='noname'):
return n
+def _uid2unixperms(perms, has_owner):
+ """ Convert the uidperms and the owner flag to full unix bits
+ """
+ res = 0
+ res |= (perms & 0x07) << 6
+ res |= (perms & 0x05) << 3
+ if not has_owner:
+ res |= 0x05
+ return res
+
class node_dir(node_database):
our_type = 'collection'
def __init__(self, path, parent, context, dirr, dctx=None):
@@ -492,13 +502,13 @@ class node_dir(node_database):
# TODO: the write date should be MAX(file.write)..
self.write_date = dirr and (dirr.write_date or dirr.create_date) or False
self.content_length = 0
- self.unixperms = 040750
try:
self.uuser = (dirr.user_id and dirr.user_id.login) or 'nobody'
except Exception:
self.uuser = 'nobody'
self.ugroup = mkdosname(dirr.company_id and dirr.company_id.name, default='nogroup')
self.uidperms = dirr.get_dir_permissions()
+ self.unixperms = 040000 | _uid2unixperms(self.uidperms, dirr and dirr.user_id)
if dctx:
self.dctx.update(dctx)
dc2 = self.context.context
@@ -731,13 +741,13 @@ class node_res_dir(node_class):
# TODO: the write date should be MAX(file.write)..
self.write_date = dirr.write_date or dirr.create_date
self.content_length = 0
- self.unixperms = 040750
try:
self.uuser = (dirr.user_id and dirr.user_id.login) or 'nobody'
except Exception:
self.uuser = 'nobody'
self.ugroup = mkdosname(dirr.company_id and dirr.company_id.name, default='nogroup')
self.uidperms = dirr.get_dir_permissions()
+ self.unixperms = 040000 | _uid2unixperms(self.uidperms, dirr and dirr.user_id)
self.res_model = dirr.ressource_type_id and dirr.ressource_type_id.model or False
self.resm_id = dirr.ressource_id
self.res_find_all = dirr.resource_find_all
@@ -855,8 +865,8 @@ class node_res_obj(node_class):
# TODO: the write date should be MAX(file.write)..
self.write_date = parent.write_date
self.content_length = 0
- self.unixperms = 040750
self.uidperms = parent.uidperms & 15
+ self.unixperms = 040000 | _uid2unixperms(self.uidperms, True)
self.uuser = parent.uuser
self.ugroup = parent.ugroup
self.res_model = res_model