Merge lp:~openerp-dev/openobject-addons/trunk-project-clean-and-customer-tde into lp:openobject-addons

Proposed by Thibault Delavallée (OpenERP)
Status: Needs review
Proposed branch: lp:~openerp-dev/openobject-addons/trunk-project-clean-and-customer-tde
Merge into: lp:openobject-addons
Diff against target: 451 lines (+105/-94)
19 files modified
mail/mail_thread.py (+6/-0)
portal/portal_demo.xml (+1/-0)
portal_project/__openerp__.py (+3/-1)
portal_project/project.py (+1/-1)
portal_project/project_demo.xml (+10/-0)
portal_project/security/ir.model.access.csv (+2/-1)
portal_project/security/portal_security.xml (+16/-3)
portal_project/tests/test_access_rights.py (+23/-4)
portal_project_issue/security/ir.model.access.csv (+1/-1)
portal_project_issue/security/portal_security.xml (+22/-9)
portal_project_issue/tests/test_access_rights.py (+1/-1)
portal_project_long_term/__init__.py (+0/-20)
portal_project_long_term/__openerp__.py (+0/-42)
portal_project_long_term/security/ir.model.access.csv (+0/-3)
project_gtd/project_gtd.py (+8/-3)
project_gtd/security/ir.model.access.csv (+4/-0)
project_issue_sheet/project_issue_sheet.py (+2/-2)
project_long_term/__openerp__.py (+1/-0)
project_long_term/security/ir.model.access.csv (+4/-3)
To merge this branch: bzr merge lp:~openerp-dev/openobject-addons/trunk-project-clean-and-customer-tde
Reviewer Review Type Date Requested Status
OpenERP Core Team Pending
Review via email: mp+205554@code.launchpad.net

Description of the change

[IMP] project, project_issue: improved 'followers' project, allowing portal users in this kind
of project to create, write and unlink tasks.

Added tests.

To post a comment you must log in.
9087. By Niko (OpenERP)

[IMP] Add some video to manisfest ( website, website_blog, website_event, website_ecommerce)

9133. By Thibault Delavallée (OpenERP)

[FIX] project_gtd: anonymous is dead, long live public + portal -> base

9134. By Thibault Delavallée (OpenERP)

[FIX] portal_project: updated tests

9135. By Thibault Delavallée (OpenERP)

[FIX] [TMP] mail: subscription: return when partner_ids is void, to avoid unnecessary checks

9136. By Thibault Delavallée (OpenERP)

[MOV] portal_project_long_term removed. This module only holds some access rights
that have been moved directly into project long term.

9137. By Thibault Delavallée (OpenERP)

[ADD] portal_project: added forgotten file

9138. By Thibault Delavallée (OpenERP)

[FIX] portal_project_issue: fixed tests, this is now an except_orm of access denied type
not an access error anymore

Unmerged revisions

9138. By Thibault Delavallée (OpenERP)

[FIX] portal_project_issue: fixed tests, this is now an except_orm of access denied type
not an access error anymore

9137. By Thibault Delavallée (OpenERP)

[ADD] portal_project: added forgotten file

9136. By Thibault Delavallée (OpenERP)

[MOV] portal_project_long_term removed. This module only holds some access rights
that have been moved directly into project long term.

9135. By Thibault Delavallée (OpenERP)

[FIX] [TMP] mail: subscription: return when partner_ids is void, to avoid unnecessary checks

9134. By Thibault Delavallée (OpenERP)

[FIX] portal_project: updated tests

9133. By Thibault Delavallée (OpenERP)

[FIX] project_gtd: anonymous is dead, long live public + portal -> base

9132. By Thibault Delavallée (OpenERP)

[FIX] project_issue_sheet: new issue fields defined in this
module make sens only for employees.

9131. By Thibault Delavallée (OpenERP)

[FIX] portal: demo user: added company_id, for several
access rights it solves issues. Moreover it makes sense to have a company_id on
this demo user.

9130. By Thibault Delavallée (OpenERP)

[FIX] project_gtd: added access rights for portal/public.
This is done directly in the module, as now portal and public groups
are added in base.

9129. By Thibault Delavallée (OpenERP)

[FIX] portal_project_long_term: depends on portal_project, not just portal.
This allows to have modules loading in a correct order and avoid some issues
notably in tests.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'mail/mail_thread.py'
2--- mail/mail_thread.py 2014-01-29 19:08:34 +0000
3+++ mail/mail_thread.py 2014-02-10 13:10:42 +0000
4@@ -1549,6 +1549,9 @@
5 """ Add partners to the records followers. """
6 if context is None:
7 context = {}
8+ # not necessary for computation, but saves an access right check
9+ if not partner_ids:
10+ return True
11
12 mail_followers_obj = self.pool.get('mail.followers')
13 subtype_obj = self.pool.get('mail.message.subtype')
14@@ -1605,6 +1608,9 @@
15
16 def message_unsubscribe(self, cr, uid, ids, partner_ids, context=None):
17 """ Remove partners from the records followers. """
18+ # not necessary for computation, but saves an access right check
19+ if not partner_ids:
20+ return True
21 user_pid = self.pool.get('res.users').read(cr, uid, uid, ['partner_id'], context=context)['partner_id'][0]
22 if set(partner_ids) == set([user_pid]):
23 self.check_access_rights(cr, uid, 'read')
24
25=== modified file 'portal/portal_demo.xml'
26--- portal/portal_demo.xml 2014-01-22 18:36:30 +0000
27+++ portal/portal_demo.xml 2014-02-10 13:10:42 +0000
28@@ -9,6 +9,7 @@
29 <field name="supplier" eval="False"/>
30 <field name="customer" eval="True"/>
31 <field name="notification_email_send">none</field>
32+ <field name="company_id" ref="base.main_company"/>
33 <field name="city">Vivegnis</field>
34 <field name="zip">4683</field>
35 <field name="country_id" ref="base.be"/>
36
37=== modified file 'portal_project/__openerp__.py'
38--- portal_project/__openerp__.py 2013-10-27 12:31:04 +0000
39+++ portal_project/__openerp__.py 2014-02-10 13:10:42 +0000
40@@ -36,7 +36,9 @@
41 'security/ir.model.access.csv',
42 'portal_project_view.xml',
43 ],
44- 'demo': [],
45+ 'demo': [
46+ 'project_demo.xml',
47+ ],
48 'installable': True,
49 'auto_install': True,
50 'category': 'Hidden',
51
52=== modified file 'portal_project/project.py'
53--- portal_project/project.py 2013-05-07 09:36:36 +0000
54+++ portal_project/project.py 2014-02-10 13:10:42 +0000
55@@ -23,7 +23,7 @@
56
57
58 class portal_project(osv.Model):
59- """ Update of mail_mail class, to add the signin URL to notifications. """
60+ """ Update of project_project class, to add the portal option in the visibility selection. """
61 _inherit = 'project.project'
62
63 def _get_visibility_selection(self, cr, uid, context=None):
64
65=== added file 'portal_project/project_demo.xml'
66--- portal_project/project_demo.xml 1970-01-01 00:00:00 +0000
67+++ portal_project/project_demo.xml 2014-02-10 13:10:42 +0000
68@@ -0,0 +1,10 @@
69+<?xml version="1.0" encoding="utf-8"?>
70+<openerp>
71+ <data noupdate="1">
72+
73+ <record model="project.project" id="project.project_project_4">
74+ <field name="privacy_visibility">portal</field>
75+ </record>
76+
77+ </data>
78+</openerp>
79
80=== modified file 'portal_project/security/ir.model.access.csv'
81--- portal_project/security/ir.model.access.csv 2013-12-02 15:09:25 +0000
82+++ portal_project/security/ir.model.access.csv 2014-02-10 13:10:42 +0000
83@@ -1,8 +1,9 @@
84 id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
85 access_project,project,project.model_project_project,base.group_portal,1,0,0,0
86-access_task,task,project.model_project_task,base.group_portal,1,0,0,0
87+access_task,task,project.model_project_task,base.group_portal,1,1,1,1
88 access_task_type,task_type,project.model_project_task_type,base.group_portal,1,0,0,0
89 access_task_work,task_work,project.model_project_task_work,base.group_portal,1,0,0,0
90+access_task_history,task_history,project.model_project_task_history,base.group_portal,1,1,1,0
91 access_project_category,project_category,project.model_project_category,base.group_portal,1,0,0,0
92 access_account_analytic_account,account_analytic_account,analytic.model_account_analytic_account,base.group_portal,1,0,0,0
93 access_project_public,project,project.model_project_project,base.group_public,1,0,0,0
94
95=== modified file 'portal_project/security/portal_security.xml'
96--- portal_project/security/portal_security.xml 2013-12-02 15:09:25 +0000
97+++ portal_project/security/portal_security.xml 2014-02-10 13:10:42 +0000
98@@ -13,7 +13,7 @@
99 <field name="groups" eval="[(4, ref('base.group_user'))]"/>
100 </record>
101
102- <record id="portal_project_rule" model="ir.rule">
103+ <record model="ir.rule" id="portal_project_rule">
104 <field name="name">Project: portal users: public, portal or following</field>
105 <field name="model_id" ref="project.model_project_project"/>
106 <field name="domain_force">['|',
107@@ -42,8 +42,8 @@
108 ]</field>
109 </record>
110
111- <record id="portal_task_rule" model="ir.rule">
112- <field name="name">Project/Task: portal users: public or (portal and colleagues following) or (followers and following)</field>
113+ <record model="ir.rule" id="portal_task_rule_read">
114+ <field name="name">Project/Task: portal: read: public or (portal and colleagues following) or (followers and following)</field>
115 <field name="model_id" ref="project.model_project_task"/>
116 <field name="domain_force">['|', '|',
117 ('project_id.privacy_visibility', 'in', ['public']),
118@@ -55,6 +55,19 @@
119 ('message_follower_ids', 'in', [user.partner_id.id]),
120 ]</field>
121 <field name="groups" eval="[(4, ref('base.group_portal'))]"/>
122+ <field name="perm_create" eval="False"/>
123+ <field name="perm_write" eval="False"/>
124+ <field name="perm_unlink" eval="False"/>
125+ </record>
126+ <record model="ir.rule" id="portal_task_rule_create_write">
127+ <field name="name">Project/Task: portal: create/write/unlink: followers and following</field>
128+ <field name="model_id" ref="project.model_project_task"/>
129+ <field name="domain_force">['&amp;',
130+ ('project_id.privacy_visibility', '=', 'followers'),
131+ ('message_follower_ids', 'in', [user.partner_id.id])
132+ ]</field>
133+ <field name="groups" eval="[(4, ref('base.group_portal'))]"/>
134+ <field name="perm_read" eval="False"/>
135 </record>
136
137 <record model="ir.rule" id="task_public_rule">
138
139=== modified file 'portal_project/tests/test_access_rights.py'
140--- portal_project/tests/test_access_rights.py 2014-01-16 10:39:10 +0000
141+++ portal_project/tests/test_access_rights.py 2014-02-10 13:10:42 +0000
142@@ -43,6 +43,7 @@
143 self.user_portal_id = self.res_users.create(cr, uid, {
144 'name': 'Chell Portal',
145 'login': 'chell',
146+ 'email': 'chell@portal.portal',
147 'alias_name': 'chell',
148 'groups_id': [(6, 0, [self.group_portal_id])]
149 })
150@@ -117,7 +118,7 @@
151 # Test: all project tasks readable
152 self.project_task.read(cr, self.user_portal_id, task_ids, ['name'])
153 # Test: no project task writable
154- self.assertRaises(AccessError, self.project_task.write, cr, self.user_portal_id, task_ids, {'description': 'TestDescription'})
155+ self.assertRaises(except_orm, self.project_task.write, cr, self.user_portal_id, task_ids, {'description': 'TestDescription'})
156
157 # Do: Donovan reads project -> ok (public)
158 self.project_project.read(cr, self.user_public_id, pigs_id, ['name'])
159@@ -147,7 +148,8 @@
160 # Test: no project task searchable
161 self.assertRaises(AccessError, self.project_task.search, cr, self.user_none_id, [('project_id', '=', pigs_id)])
162
163- # Data: task follower
164+ # Data: project/task follower
165+ self.project_project.message_subscribe_users(cr, self.user_projectmanager_id, [self.project_pigs_id], [self.user_portal_id])
166 self.project_task.message_subscribe_users(cr, self.user_projectuser_id, [self.task_1_id, self.task_3_id], [self.user_portal_id])
167
168 # Do: Chell reads project -> ok (portal ok public)
169@@ -164,7 +166,8 @@
170 task_ids = self.project_task.search(cr, self.user_public_id, [('project_id', '=', pigs_id)])
171 self.assertFalse(task_ids, 'access rights: public user should not see tasks of a portal project')
172
173- # Data: task follower cleaning
174+ # Data: project/task follower cleaning
175+ self.project_project.message_unsubscribe_users(cr, self.user_projectmanager_id, [self.project_pigs_id], [self.user_portal_id])
176 self.project_task.message_unsubscribe_users(cr, self.user_projectuser_id, [self.task_1_id, self.task_3_id], [self.user_portal_id])
177
178 # ----------------------------------------
179@@ -245,5 +248,21 @@
180 self.assertEqual(set(task_ids), test_task_ids,
181 'access rights: employee user should not see followed + assigned tasks of a follower project')
182
183- # Do: Donovan reads project -> ko (public ko follower even if follower)
184+ # Do: Portal creates a task in project -> ok (follower ok follower)
185+ task_id = self.project_task.create(
186+ cr, self.user_portal_id,
187+ {'name': 'PortalTask',
188+ 'project_id': self.project_pigs_id},
189+ {'mail_create_nolog': True}
190+ )
191+ task = self.project_task.browse(cr, self.user_portal_id, task_id)
192+ self.assertEqual(task.name, 'PortalTask', 'access rights: issue when trying to create a task')
193+ # Test: followed + can update it
194+ self.project_task.write(cr, self.user_portal_id, [task_id], {'name': 'NewPortalTask'})
195+ task.refresh()
196+ self.assertEqual(task.name, 'NewPortalTask', 'access rights: issue when trying to write on a follower task with a follower')
197+ # Test: unlink it
198+ self.project_task.unlink(cr, self.user_portal_id, [task_id])
199+
200+ # Do: Donovan reads project -> ko (anonymous ko follower even if follower)
201 self.assertRaises(except_orm, self.project_project.read, cr, self.user_public_id, pigs_id, ['name'])
202
203=== modified file 'portal_project_issue/security/ir.model.access.csv'
204--- portal_project_issue/security/ir.model.access.csv 2013-12-02 15:09:25 +0000
205+++ portal_project_issue/security/ir.model.access.csv 2014-02-10 13:10:42 +0000
206@@ -1,4 +1,4 @@
207 id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
208-access_issues,project_issue,project_issue.model_project_issue,base.group_portal,1,0,0,0
209+access_issues,project_issue,project_issue.model_project_issue,base.group_portal,1,1,1,1
210 access_case_section,crm_case_section,crm.model_crm_case_section,base.group_portal,1,0,0,0
211 access_issues_public,project_issue,project_issue.model_project_issue,base.group_public,1,0,0,0
212\ No newline at end of file
213
214=== modified file 'portal_project_issue/security/portal_security.xml'
215--- portal_project_issue/security/portal_security.xml 2013-12-02 15:09:25 +0000
216+++ portal_project_issue/security/portal_security.xml 2014-02-10 13:10:42 +0000
217@@ -2,7 +2,17 @@
218 <openerp>
219 <data noupdate="1">
220
221- <record id="portal_issue_rule" model="ir.rule">
222+ <record model="ir.rule" id="project_issue.issue_user_rule">
223+ <field name="name">Project/Issue: employees: public, portal, employee or (followers and following)</field>
224+ <field name="domain_force">['|',
225+ ('project_id.privacy_visibility', 'in', ['public', 'portal', 'employees']),
226+ '&amp;',
227+ ('project_id.privacy_visibility', '=', 'followers'),
228+ ('message_follower_ids', 'in', [user.partner_id.id]),
229+ ]</field>
230+ </record>
231+
232+ <record model="ir.rule" id="portal_issue_rule_read">
233 <field name="name">Project/Issue: portal users: public or (portal and colleagues following) or (followers and following)</field>
234 <field name="model_id" ref="project_issue.model_project_issue"/>
235 <field name="domain_force">['|', '|',
236@@ -15,16 +25,19 @@
237 ('message_follower_ids', 'in', [user.partner_id.id]),
238 ]</field>
239 <field name="groups" eval="[(4, ref('base.group_portal'))]"/>
240+ <field name="perm_create" eval="False"/>
241+ <field name="perm_write" eval="False"/>
242+ <field name="perm_unlink" eval="False"/>
243 </record>
244-
245- <record model="ir.rule" id="project_issue.issue_user_rule">
246- <field name="name">Project/Issue: employees: public, portal, employee or (followers and following)</field>
247- <field name="domain_force">['|',
248- ('project_id.privacy_visibility', 'in', ['public', 'portal', 'employees']),
249- '&amp;',
250- ('project_id.privacy_visibility', '=', 'followers'),
251- ('message_follower_ids', 'in', [user.partner_id.id]),
252+ <record model="ir.rule" id="portal_issue_rule_create_write">
253+ <field name="name">Project/Issue: portal: create/write/unlink: followers and following</field>
254+ <field name="model_id" ref="project_issue.model_project_issue"/>
255+ <field name="domain_force">['&amp;',
256+ ('project_id.privacy_visibility', '=', 'followers'),
257+ ('message_follower_ids', 'in', [user.partner_id.id])
258 ]</field>
259+ <field name="groups" eval="[(4, ref('base.group_portal'))]"/>
260+ <field name="perm_read" eval="False"/>
261 </record>
262
263 <record model="ir.rule" id="issue_public_rule">
264
265=== modified file 'portal_project_issue/tests/test_access_rights.py'
266--- portal_project_issue/tests/test_access_rights.py 2014-01-16 10:39:10 +0000
267+++ portal_project_issue/tests/test_access_rights.py 2014-02-10 13:10:42 +0000
268@@ -86,7 +86,7 @@
269 # Test: all project issues readable
270 self.project_issue.read(cr, self.user_portal_id, issue_ids, ['name'])
271 # Test: no project issue writable
272- self.assertRaises(AccessError, self.project_issue.write, cr, self.user_portal_id, issue_ids, {'description': 'TestDescription'})
273+ self.assertRaises(except_orm, self.project_issue.write, cr, self.user_portal_id, issue_ids, {'description': 'TestDescription'})
274
275 # Do: Donovan reads project -> ok (public ok public)
276 # Test: all project issues visible
277
278=== removed directory 'portal_project_long_term'
279=== removed file 'portal_project_long_term/__init__.py'
280--- portal_project_long_term/__init__.py 2013-03-07 10:50:31 +0000
281+++ portal_project_long_term/__init__.py 1970-01-01 00:00:00 +0000
282@@ -1,20 +0,0 @@
283-# -*- coding: utf-8 -*-
284-##############################################################################
285-#
286-# OpenERP, Open Source Management Solution
287-# Copyright (C) 2010-Today OpenERP S.A. (<http://www.openerp.com>).
288-#
289-# This program is free software: you can redistribute it and/or modify
290-# it under the terms of the GNU Affero General Public License as
291-# published by the Free Software Foundation, either version 3 of the
292-# License, or (at your option) any later version.
293-#
294-# This program is distributed in the hope that it will be useful,
295-# but WITHOUT ANY WARRANTY; without even the implied warranty of
296-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
297-# GNU Affero General Public License for more details.
298-#
299-# You should have received a copy of the GNU Affero General Public License
300-# along with this program. If not, see <http://www.gnu.org/licenses/>.
301-#
302-##############################################################################
303
304=== removed file 'portal_project_long_term/__openerp__.py'
305--- portal_project_long_term/__openerp__.py 2013-03-21 09:06:26 +0000
306+++ portal_project_long_term/__openerp__.py 1970-01-01 00:00:00 +0000
307@@ -1,42 +0,0 @@
308-# -*- coding: utf-8 -*-
309-##############################################################################
310-#
311-# OpenERP, Open Source Management Solution
312-# Copyright (C) 2010-Today OpenERP S.A. (<http://www.openerp.com>).
313-#
314-# This program is free software: you can redistribute it and/or modify
315-# it under the terms of the GNU Affero General Public License as
316-# published by the Free Software Foundation, either version 3 of the
317-# License, or (at your option) any later version.
318-#
319-# This program is distributed in the hope that it will be useful,
320-# but WITHOUT ANY WARRANTY; without even the implied warranty of
321-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
322-# GNU Affero General Public License for more details.
323-#
324-# You should have received a copy of the GNU Affero General Public License
325-# along with this program. If not, see <http://www.gnu.org/licenses/>.
326-#
327-##############################################################################
328-
329-
330-{
331- 'name': 'Portal Project Long Term',
332- 'version': '1.0',
333- 'category': 'Tools',
334- 'complexity': 'easy',
335- 'description': """
336-This module adds necessary security rules and access rights for project long term and portal.
337-=============================================================================================
338- """,
339- 'author': 'OpenERP SA',
340- 'depends': ['project_long_term', 'portal'],
341- 'data': [
342- 'security/portal_security.xml',
343- 'security/ir.model.access.csv',
344- ],
345- 'installable': True,
346- 'auto_install': True,
347- 'category': 'Hidden',
348-}
349-# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
350
351=== removed directory 'portal_project_long_term/security'
352=== removed file 'portal_project_long_term/security/ir.model.access.csv'
353--- portal_project_long_term/security/ir.model.access.csv 2013-10-08 11:35:45 +0000
354+++ portal_project_long_term/security/ir.model.access.csv 1970-01-01 00:00:00 +0000
355@@ -1,3 +0,0 @@
356-id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
357-access_issues,project_phase,project_long_term.model_project_phase,base.group_portal,1,0,0,0
358-access_issues_public,project_phase_public,project_long_term.model_project_phase,base.group_public,1,0,0,0
359
360=== modified file 'project_gtd/project_gtd.py'
361--- project_gtd/project_gtd.py 2013-10-27 12:31:04 +0000
362+++ project_gtd/project_gtd.py 2014-02-10 13:10:42 +0000
363@@ -21,10 +21,12 @@
364
365 import sys
366
367+from openerp import tools
368 from openerp.osv import fields, osv
369-from openerp import tools
370+from openerp.osv.orm import except_orm
371 from openerp.tools.translate import _
372
373+
374 class project_gtd_context(osv.osv):
375 _name = "project.gtd.context"
376 _description = "Context"
377@@ -66,8 +68,11 @@
378 return super(project_task,self).copy_data(cr, uid, id, default, context)
379
380 def _get_context(self, cr, uid, context=None):
381- ids = self.pool.get('project.gtd.context').search(cr, uid, [], context=context)
382- return ids and ids[0] or False
383+ try:
384+ ids = self.pool.get('project.gtd.context').search(cr, uid, [], context=context)
385+ return ids and ids[0] or False
386+ except except_orm:
387+ return False
388
389 _defaults = {
390 'context_id': _get_context
391
392=== modified file 'project_gtd/security/ir.model.access.csv'
393--- project_gtd/security/ir.model.access.csv 2011-12-19 16:54:40 +0000
394+++ project_gtd/security/ir.model.access.csv 2014-02-10 13:10:42 +0000
395@@ -3,3 +3,7 @@
396 access_project_gtd_timebox_user,project.gtd.timebox project user,model_project_gtd_timebox,project.group_project_user,1,0,0,0
397 access_project_gtd_context_manager,project.gtd.context project manager,model_project_gtd_context,project.group_project_manager,1,1,1,1
398 access_project_gtd_timebox_manager,project.gtd.timebox project manager,model_project_gtd_timebox,project.group_project_manager,1,1,1,1
399+access_project_gtd_context_portal,project.gtd.context.portal,project_gtd.model_project_gtd_context,base.group_portal,1,0,0,0
400+access_project_gtd_timebox_portal,project.gtd.timebox.portal,project_gtd.model_project_gtd_timebox,base.group_portal,1,0,0,0
401+access_project_gtd_context_public,project.gtd.context.public,project_gtd.model_project_gtd_context,base.group_public,1,0,0,0
402+access_project_gtd_timebox_public,project.gtd.timebox.public,project_gtd.model_project_gtd_timebox,base.group_public,1,0,0,0
403\ No newline at end of file
404
405=== modified file 'project_issue_sheet/project_issue_sheet.py'
406--- project_issue_sheet/project_issue_sheet.py 2013-10-27 12:31:04 +0000
407+++ project_issue_sheet/project_issue_sheet.py 2014-02-10 13:10:42 +0000
408@@ -26,8 +26,8 @@
409 _inherit = 'project.issue'
410 _description = 'project issue'
411 _columns = {
412- 'timesheet_ids': fields.one2many('hr.analytic.timesheet', 'issue_id', 'Timesheets'),
413- 'analytic_account_id': fields.many2one('account.analytic.account', 'Analytic Account'),
414+ 'timesheet_ids': fields.one2many('hr.analytic.timesheet', 'issue_id', 'Timesheets', groups="base.group_user"),
415+ 'analytic_account_id': fields.many2one('account.analytic.account', 'Analytic Account', groups="base.group_user"),
416 }
417
418 def on_change_project(self, cr, uid, ids, project_id, context=None):
419
420=== modified file 'project_long_term/__openerp__.py'
421--- project_long_term/__openerp__.py 2012-11-29 22:26:45 +0000
422+++ project_long_term/__openerp__.py 2014-02-10 13:10:42 +0000
423@@ -51,6 +51,7 @@
424 ],
425 'data': [
426 'security/ir.model.access.csv',
427+ 'security/security.xml',
428 'project_long_term_view.xml',
429 'project_long_term_workflow.xml',
430 'wizard/project_compute_phases_view.xml',
431
432=== modified file 'project_long_term/security/ir.model.access.csv'
433--- project_long_term/security/ir.model.access.csv 2013-10-27 12:31:04 +0000
434+++ project_long_term/security/ir.model.access.csv 2014-02-10 13:10:42 +0000
435@@ -1,9 +1,10 @@
436 id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
437 access_project_phase,project.phase,model_project_phase,project.group_project_user,1,1,1,0
438+access_project_phase_portal,project.phase.portal,model_project_phase,base.group_portal,1,0,0,0
439+access_project_phase_public,project.phase.public,model_project_phase,base.group_public,1,0,0,0
440+access_project_phase_manager,project.phase manager,model_project_phase,project.group_project_manager,1,1,1,1
441 access_project_user_allocation,project.user.allocation,model_project_user_allocation,project.group_project_user,1,0,0,0
442-access_project_phase_manager,project.phase manager,model_project_phase,project.group_project_manager,1,1,1,1
443 access_project_user_allocation_manager,project.user.allocation manager,model_project_user_allocation,project.group_project_manager,1,1,1,1
444 access_resource_resource_user,user.user user,resource.model_resource_resource,project.group_project_user,1,0,0,0
445 access_resource_resource_manager,user.user manager,resource.model_resource_resource,project.group_project_manager,1,1,1,1
446-access_project_user_allocation_manager,project.user.allocation.manager,model_project_user_allocation,project.group_project_manager,1,1,1,1
447-access_project_resource_calendar_attendance,resource.calendar.attendance,resource.model_resource_calendar_attendance,project.group_project_manager,1,0,0,0
448+access_project_resource_calendar_attendance,resource.calendar.attendance,resource.model_resource_calendar_attendance,project.group_project_manager,1,0,0,0
449\ No newline at end of file
450
451=== renamed file 'portal_project_long_term/security/portal_security.xml' => 'project_long_term/security/security.xml'

Subscribers

People subscribed via source and target branches

to all changes: