diff options
| author | mra (Open ERP) <mra@tinyerp.com> | 2010-01-08 16:35:05 +0530 |
|---|---|---|
| committer | mra (Open ERP) <mra@tinyerp.com> | 2010-01-08 16:35:05 +0530 |
| commit | dec803c5840e0417fbb4efeb4a7ceb9ca7de511e (patch) | |
| tree | c2faf408566b6dafd99ac4358fc2336f89d6e8eb /addons/project | |
| parent | 8fe7d4c0a7acc0c83020f4154c7fe0361b978e9a (diff) | |
[ADD] Add project_id and section_id on user object
[ADD] Add rules on crm, project, crm_project, sale_crm to open with user preference domain
[IMP] section_id no more required=True now
[ADD] add object message on project module
[ADD] add default values for project and section with all objects related with it using user prefernce fields
[IMP] overall changes on crm and project
bzr revid: mra@tinyerp.com-20100108110505-pp2s1x0bjcy0edun
Diffstat (limited to 'addons/project')
| -rw-r--r-- | addons/project/project.py | 55 | ||||
| -rw-r--r-- | addons/project/project_view.xml | 76 | ||||
| -rw-r--r-- | addons/project/security/project_security.xml | 55 |
3 files changed, 165 insertions, 21 deletions
diff --git a/addons/project/project.py b/addons/project/project.py index d47f92dbb42..4567ba1c4b0 100644 --- a/addons/project/project.py +++ b/addons/project/project.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- ############################################################################## -# +# # OpenERP, Open Source Management Solution # Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>). # @@ -15,7 +15,7 @@ # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. +# along with this program. If not, see <http://www.gnu.org/licenses/>. # ############################################################################## @@ -61,7 +61,7 @@ class project(osv.osv): cr.execute('''SELECT project_id, sum(planned_hours), sum(total_hours), sum(effective_hours) FROM - project_task + project_task WHERE project_id in ('''+','.join(map(str,ids2))+''') AND state<>'cancelled' @@ -137,7 +137,7 @@ class project(osv.osv): # toggle activity of projects, their sub projects and their tasks def set_template(self, cr, uid, ids, context={}): - res = self.setActive(cr, uid, ids, value=False, context=context) + res = self.setActive(cr, uid, ids, value=False, context=context) return res def set_done(self, cr, uid, ids, context={}): @@ -192,17 +192,17 @@ class project(osv.osv): raise osv.except_osv(_('Operation Done'), _('A new project has been created !\nWe suggest you to close this one and work on this new project.')) # set active value for a project, its sub projects and its tasks - def setActive(self, cr, uid, ids, value=True, context={}): - for proj in self.browse(cr, uid, ids, context): + def setActive(self, cr, uid, ids, value=True, context={}): + for proj in self.browse(cr, uid, ids, context): self.write(cr, uid, [proj.id], {'state': value and 'open' or 'template'}, context) cr.execute('select id from project_task where project_id=%s', (proj.id,)) tasks_id = [x[0] for x in cr.fetchall()] if tasks_id: self.pool.get('project.task').write(cr, uid, tasks_id, {'active': value}, context) - cr.execute('select id from project_project where parent_id=%s', (proj.id,)) - project_ids = [x[0] for x in cr.fetchall()] + cr.execute('select id from project_project where parent_id=%s', (proj.id,)) + project_ids = [x[0] for x in cr.fetchall()] for child in project_ids: - self.setActive(cr, uid, [child], value, context) + self.setActive(cr, uid, [child], value, context) return True project() @@ -269,7 +269,7 @@ class task(osv.osv): #_sql_constraints = [ # ('remaining_hours', 'CHECK (remaining_hours>=0)', 'Please increase and review remaining hours ! It can not be smaller than 0.'), #] - + def copy_data(self, cr, uid, id, default={},context={}): default = default or {} default['work_ids'] = [] @@ -318,7 +318,7 @@ class task(osv.osv): 'active': lambda *a: True, 'date_start': lambda *a: time.strftime('%Y-%m-%d %H:%M:%S'), 'project_id': _default_project, - 'company_id': lambda self,cr,uid,c: self.pool.get('res.company')._company_default_get(cr, uid, 'project.task', context=c) + 'company_id': lambda self,cr,uid,c: self.pool.get('res.company')._company_default_get(cr, uid, 'project.task', context=c) } _order = "sequence, priority, date_deadline, id" @@ -335,22 +335,22 @@ class task(osv.osv): return res eview = etree.fromstring(res['arch']) - + def _check_rec(eview): if eview.attrib.get('widget','') == 'float_time': eview.set('widget','float') for child in eview: _check_rec(child) return True - + _check_rec(eview) - + res['arch'] = etree.tostring(eview) - + for f in res['fields']: if 'Hours' in res['fields'][f]['string']: res['fields'][f]['string'] = res['fields'][f]['string'].replace('Hours',tm) - + return res def do_close(self, cr, uid, ids, *args): @@ -485,7 +485,7 @@ class config_compute_remaining(osv.osv_memory): _defaults = { 'remaining_hours': _get_remaining } - + def compute_hours(self, cr, uid, ids, context=None): if 'active_id' in context: remaining_hrs=self.browse(cr,uid,ids)[0].remaining_hours @@ -495,5 +495,24 @@ class config_compute_remaining(osv.osv_memory): } config_compute_remaining() -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: +class message(osv.osv): + _name = "project.message" + _description = "Message" + _columns = { + 'subject': fields.char('Subject', size=128), + 'description': fields.char('Description', size =128), + 'project_id': fields.many2one('project.project', 'Project', ondelete='cascade'), + 'date': fields.date('Date'), + 'user_id': fields.many2one('res.users', 'User'), + } +message() +class users(osv.osv): + _inherit = 'res.users' + _description ="User" + _columns = { + 'project_id': fields.many2one('project.project', 'Project'), + } + +users() +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/project/project_view.xml b/addons/project/project_view.xml index d074da533bf..3b4eee97adc 100644 --- a/addons/project/project_view.xml +++ b/addons/project/project_view.xml @@ -484,7 +484,6 @@ <field name="view_mode">tree,form,calendar,gantt,graph</field> <field eval="False" name="view_id"/> <field eval="True" name="filter"/> - <field name="search_view_id" ref="view_task_search_form"/> </record> <menuitem action="action_view_task" id="menu_action_view_task" parent="project.menu_tasks"/> @@ -560,7 +559,7 @@ <field name="search_view_id" ref="view_task_search_form"/> <field name="domain">[('state','=','open')]</field> </record> - +menu_main <record id="action_view_task7" model="ir.actions.act_window"> <field name="name">Unassigned Tasks</field> <field name="res_model">project.task</field> @@ -661,9 +660,80 @@ </field> </record> + + <!-- User Form--> + <record id="view_project_users_form_simple" model="ir.ui.view"> + <field name="name">res.users.project.form1</field> + <field name="model">res.users</field> + <field name="type">form</field> + <field name="inherit_id" ref="base.view_users_form"/> + <field eval="18" name="priority"/> + <field name="arch" type="xml"> + <field name="password" position="after"> + <field name="project_id" widget="selection" /> + </field> + </field> + </record> + + <record model="ir.ui.view" id="view_users_form_project_modif_inherited1"> + <field name="name">view.users.form.project.modif.inherited1</field> + <field name="model">res.users</field> + <field name="inherit_id" ref="base.view_users_form_simple_modif" /> + <field name="type">form</field> + <field name="arch" type="xml"> + <page string="Current Activity" position="inside"> + <field name="project_id" widget="selection"/> + </page> + </field> + </record> + +<!--- Messages--> + <record id="view_project_message_form" model="ir.ui.view"> + <field name="name">project.message.form</field> + <field name="model">project.message</field> + <field name="type">form</field> + <field name="arch" type="xml"> + <form string="Messages"> + <group colspan="6"> + <field name="subject" select="1"/> + <field name="description"/> + <field name="project_id" /> + <field name="date" select="2"/> + <field name="user_id" select="1"/> + </group> + </form> + </field> + </record> + + <record id="view_project_message_tree" model="ir.ui.view"> + <field name="name">project.message.form</field> + <field name="model">project.message</field> + <field name="type">tree</field> + <field name="arch" type="xml"> + <tree string="Messages"> + <field name="subject" select="1"/> + <field name="description" select="1"/> + <field name="project_id" select="1"/> + <field name="date" select="1"/> + <field name="user_id" select="1"/> + </tree> + </field> + </record> + + <record id="action_view_project_messages_tree" model="ir.actions.act_window"> + <field name="name">Messages</field> + <field name="res_model">project.message</field> + <field name="view_type">form</field> + <field name="view_mode">tree,form</field> + <field name="view_id" ref="view_project_message_tree"/> + </record> + + <menuitem id="menu_message_main" name="Message" parent="menu_main"/> + <menuitem action="action_view_project_messages_tree" id="menu_message_tree" parent="menu_message_main"/> + <act_window domain="[('user_id', '=', active_id),('state', '<>', 'cancelled'),('state', '<>', 'done')]" id="act_res_users_2_project_task_opened" name="Assigned tasks" res_model="project.task" src_model="res.users" view_mode="tree,form,gantt,calendar,graph" view_type="form"/> <act_window domain="[('user_id', '=', active_id),('date', '>=', time.strftime('%Y-%m-01'))]" id="act_res_users_2_project_task_work_month" name="Month works" res_model="project.task.work" src_model="res.users" view_mode="tree,form" view_type="form"/> </data> -</openerp> +</openerp>
\ No newline at end of file diff --git a/addons/project/security/project_security.xml b/addons/project/security/project_security.xml index 779ec43bc24..8c1be345402 100644 --- a/addons/project/security/project_security.xml +++ b/addons/project/security/project_security.xml @@ -36,5 +36,60 @@ <field name="rule_group" ref="task_comp_rule_group"/> </record> + + <!--rule for Tasks--> + <record model="ir.rule.group" id="project_task_rule_group"> + <field name="name">project.task.rule.group</field> + <field name="model_id" search="[('model','=','project.task')]" model="ir.model"/> + <field name="global" eval="True"/> + </record> + <record id="project_task_rule" model="ir.rule"> + <field model="ir.model.fields" name="field_id" search="[('model','=','project.task'),('name','=','project_id')]"/> + <field name="operator">=</field> + <field name="operand">user.project_id.id</field> + <field name="domain_force">['|',('project_id','=',False),('project_id','=',[user.project_id.id])]</field> + <field name="rule_group" ref="project_task_rule_group"/> + </record> + + <record model="ir.rule.group" id="project_task_work_rule_group"> + <field name="name">project.task.work.rule.group</field> + <field name="model_id" search="[('model','=','project.task.work')]" model="ir.model"/> + <field name="global" eval="True"/> + </record> + <record id="project_task_work_rule" model="ir.rule"> + <field model="ir.model.fields" name="field_id" search="[('model','=','project.task.work'),('name','=','task_id.project_id')]"/> + <field name="operator">=</field> + <field name="operand">user.project_id.id</field> + <field name="domain_force">['|',('task_id.project_id','=',False),('task_id.project_id','=',[user.project_id.id])]</field> + <field name="rule_group" ref="project_task_work_rule_group"/> + </record> + + <record model="ir.rule.group" id="project_project_rule_group"> + <field name="name">project.project.work.rule.group</field> + <field name="model_id" search="[('model','=','project.project')]" model="ir.model"/> + <field name="global" eval="True"/> + </record> + <record id="project_project_rule" model="ir.rule"> + <field model="ir.model.fields" name="field_id" search="[('model','=','project.project'),('name','=','id')]"/> + <field name="operator">=</field> + <field name="operand">user.project_id.id</field> + <field name="domain_force">['|',('id','=',False),('id','=',[user.project_id.id])]</field> + <field name="rule_group" ref="project_project_rule_group"/> + </record> + + <record model="ir.rule.group" id="project_message_rule_group"> + <field name="name">project.project.work.rule.group</field> + <field name="model_id" search="[('model','=','project.message')]" model="ir.model"/> + <field name="global" eval="True"/> + </record> + <record id="project_message_rule" model="ir.rule"> + <field model="ir.model.fields" name="field_id" search="[('model','=','project.message'),('name','=','project_id')]"/> + <field name="operator">=</field> + <field name="operand">user.project_id.id</field> + <field name="domain_force">['|',('project_id','=',False),('project_id','=',[user.project_id.id])]</field> + <field name="rule_group" ref="project_message_rule_group"/> + </record> + + </data> </openerp> |
