Merge lp:~fabien-morin/unifield-server/fm-us-3081 into lp:unifield-server

Proposed by jftempo
Status: Merged
Merged at revision: 4549
Proposed branch: lp:~fabien-morin/unifield-server/fm-us-3081
Merge into: lp:unifield-server
Diff against target: 139 lines (+33/-6)
6 files modified
bin/addons/base/ir/ir_model.py (+4/-0)
bin/addons/base/res/res_user.py (+8/-0)
bin/addons/msf_profile/data.xml (+7/-0)
bin/addons/sync_client/sync_client.py (+3/-0)
bin/addons/sync_client/update.py (+4/-0)
bin/osv/orm.py (+7/-6)
To merge this branch: bzr merge lp:~fabien-morin/unifield-server/fm-us-3081
Reviewer Review Type Date Requested Status
UniField Reviewer Team Pending
Review via email: mp+331324@code.launchpad.net
To post a comment you must log in.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'bin/addons/base/ir/ir_model.py'
2--- bin/addons/base/ir/ir_model.py 2017-05-12 15:07:08 +0000
3+++ bin/addons/base/ir/ir_model.py 2017-09-26 07:32:18 +0000
4@@ -524,6 +524,10 @@
5 # TODO: exclude xml-rpc requests
6 return True
7
8+ if uid== self.pool.get('res.users')._get_sync_user_id(cr):
9+ # User for sync have all accesses
10+ return True
11+
12 assert mode in ['read','write','create','unlink'], 'Invalid access mode'
13
14 if isinstance(model, browse_record):
15
16=== modified file 'bin/addons/base/res/res_user.py'
17--- bin/addons/base/res/res_user.py 2017-06-22 14:27:28 +0000
18+++ bin/addons/base/res/res_user.py 2017-09-26 07:32:18 +0000
19@@ -233,6 +233,7 @@
20
21 class users(osv.osv):
22 __admin_ids = {}
23+ __sync_user_ids = {}
24 _uid_cache = {}
25 _name = "res.users"
26 _order = 'name'
27@@ -544,6 +545,13 @@
28 self.__admin_ids[cr.dbname] = ir_model_data_obj.read(cr, 1, [mdid], ['res_id'])[0]['res_id']
29 return self.__admin_ids[cr.dbname]
30
31+ def _get_sync_user_id(self, cr):
32+ if self.__sync_user_ids.get(cr.dbname) is None:
33+ ir_model_data_obj = self.pool.get('ir.model.data')
34+ mdid = ir_model_data_obj._get_id(cr, 1, 'base', 'user_sync')
35+ self.__sync_user_ids[cr.dbname] = ir_model_data_obj.read(cr, 1, [mdid], ['res_id'])[0]['res_id']
36+ return self.__sync_user_ids[cr.dbname]
37+
38 def _get_company(self,cr, uid, context=None, uid2=False):
39 if not uid2:
40 uid2 = uid
41
42=== modified file 'bin/addons/msf_profile/data.xml'
43--- bin/addons/msf_profile/data.xml 2017-08-21 10:09:52 +0000
44+++ bin/addons/msf_profile/data.xml 2017-09-26 07:32:18 +0000
45@@ -43,6 +43,13 @@
46 <field name="context_lang">en_MF</field>
47 </record>
48
49+ <record model="res.users" id="base.user_sync">
50+ <field name="signature">Synch</field>
51+ <field name="name">Synch</field>
52+ <field name="login">synch</field>
53+ <field name="context_lang">en_MF</field>
54+ </record>
55+
56 <record id="sale.shop" model="sale.shop">
57 <field name="name">MSF</field>
58 </record>
59
60=== modified file 'bin/addons/sync_client/sync_client.py'
61--- bin/addons/sync_client/sync_client.py 2017-09-04 07:28:47 +0000
62+++ bin/addons/sync_client/sync_client.py 2017-09-26 07:32:18 +0000
63@@ -1059,6 +1059,9 @@
64 def execute_message(self, cr, uid, context=None):
65 context = context or {}
66 logger = context.get('logger')
67+ # force user to user_sync
68+ uid = self.pool.get('res.users')._get_sync_user_id(cr)
69+
70 messages = self.pool.get(context.get('message_received_model', 'sync.client.message_received'))
71
72 # Get the whole list of messages to execute
73
74=== modified file 'bin/addons/sync_client/update.py'
75--- bin/addons/sync_client/update.py 2017-08-18 10:05:40 +0000
76+++ bin/addons/sync_client/update.py 2017-09-26 07:32:18 +0000
77@@ -434,6 +434,10 @@
78 def execute_update(self, cr, uid, ids=None, priorities=None, context=None):
79 context = dict(context or {}, sync_update_execution=True)
80 context['lang'] = 'en_US'
81+
82+ # force user to user_sync
83+ uid = self.pool.get('res.users')._get_sync_user_id(cr)
84+
85 local_entity = self.pool.get('sync.client.entity').get_entity(
86 cr, uid, context=context)
87
88
89=== modified file 'bin/osv/orm.py'
90--- bin/osv/orm.py 2017-08-18 14:26:52 +0000
91+++ bin/osv/orm.py 2017-09-26 07:32:18 +0000
92@@ -2240,8 +2240,9 @@
93 self.check_id = 0
94 cr.execute('delete from wkf_instance where res_type=%s', (self._name,))
95
96- def _check_access(self, uid, object_id, mode):
97- if uid != 1 and self.datas[object_id]['internal.create_uid'] != uid:
98+ def _check_access(self, cr, uid, object_id, mode):
99+ user_obj = self.pool.get('res.users')
100+ if uid != 1 and uid != user_obj._get_sync_user_id(cr) and self.datas[object_id]['internal.create_uid'] != uid:
101 raise except_orm(_('AccessError'), '%s access is only allowed on your own records for osv_memory objects except for the super-user' % mode.capitalize())
102
103 def vaccum(self, cr, uid, force=False):
104@@ -2293,7 +2294,7 @@
105 for f in fields_to_read:
106 record = self.datas.get(id)
107 if record:
108- self._check_access(user, id, 'read')
109+ self._check_access(cr, user, id, 'read')
110 r[f] = record.get(f, False)
111 if r[f] and isinstance(self._columns[f], fields.binary) and context.get('bin_size', False):
112 r[f] = len(r[f])
113@@ -2347,7 +2348,7 @@
114 else:
115 upd_todo.append(field)
116 for object_id in ids:
117- self._check_access(user, object_id, mode='write')
118+ self._check_access(cr, user, object_id, mode='write')
119 try:
120 self.datas[object_id].update(vals2)
121 except KeyError:
122@@ -2557,7 +2558,7 @@
123
124 def unlink(self, cr, uid, ids, context=None):
125 for id in ids:
126- self._check_access(uid, id, 'unlink')
127+ self._check_access(cr, uid, id, 'unlink')
128 self.datas.pop(id, None)
129 if len(ids):
130 cr.execute('delete from wkf_instance where res_type=%s and res_id IN %s', (self._name, tuple(ids)))
131@@ -2568,7 +2569,7 @@
132 credentials = self.pool.get('res.users').name_get(cr, user, [user])[0]
133 create_date = time.strftime('%Y-%m-%d %H:%M:%S')
134 for id in ids:
135- self._check_access(user, id, 'read')
136+ self._check_access(cr, user, id, 'read')
137 result.append({
138 'create_uid': credentials,
139 'create_date': create_date,

Subscribers

People subscribed via source and target branches