summaryrefslogtreecommitdiff
path: root/addons/project
diff options
context:
space:
mode:
authormra (Open ERP) <mra@tinyerp.com>2010-01-08 16:35:05 +0530
committermra (Open ERP) <mra@tinyerp.com>2010-01-08 16:35:05 +0530
commitdec803c5840e0417fbb4efeb4a7ceb9ca7de511e (patch)
treec2faf408566b6dafd99ac4358fc2336f89d6e8eb /addons/project
parent8fe7d4c0a7acc0c83020f4154c7fe0361b978e9a (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.py55
-rw-r--r--addons/project/project_view.xml76
-rw-r--r--addons/project/security/project_security.xml55
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', '&lt;&gt;', 'cancelled'),('state', '&lt;&gt;', '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', '&gt;=', 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>