summaryrefslogtreecommitdiff
path: root/addons/project/project.py
diff options
context:
space:
mode:
authorDBR (OpenERP) <dbr@tinyerp.com>2011-09-20 12:15:50 +0530
committerDBR (OpenERP) <dbr@tinyerp.com>2011-09-20 12:15:50 +0530
commitfa577c8a15ad327d77d4e9e24d5e0ea27ca3e613 (patch)
tree96cfa22a87945b37b853b3e10b3a0f1944204666 /addons/project/project.py
parent2380552cb493040b22e61f8e4209cc6df8edc912 (diff)
parentf2f072e2e3c9a273a050d6f2277beb64b1671e18 (diff)
[Merge]with: lp:openobject-addons
bzr revid: dbr@tinyerp.com-20110920064550-v90yjoblpzp5ebiq
Diffstat (limited to 'addons/project/project.py')
-rw-r--r--addons/project/project.py25
1 files changed, 15 insertions, 10 deletions
diff --git a/addons/project/project.py b/addons/project/project.py
index b1461da424c..96bf2f30fdc 100644
--- a/addons/project/project.py
+++ b/addons/project/project.py
@@ -26,10 +26,10 @@ from datetime import datetime, date
from tools.translate import _
from osv import fields, osv
-class project_project(osv.osv):
- _name = 'project.project'
-
-project_project()
+# I think we can remove this in v6.1 since VMT's improvements in the framework ?
+#class project_project(osv.osv):
+# _name = 'project.project'
+#project_project()
class project_task_type(osv.osv):
_name = 'project.task.type'
@@ -39,13 +39,12 @@ class project_task_type(osv.osv):
'name': fields.char('Stage Name', required=True, size=64, translate=True),
'description': fields.text('Description'),
'sequence': fields.integer('Sequence'),
+ 'project_default': fields.boolean('Common to All Projects', help="If you check this field, this stage will be proposed by default on each new project. It will not assign this stage to existing projects."),
'project_ids': fields.many2many('project.project', 'project_task_type_rel', 'type_id', 'project_id', 'Projects'),
}
-
_defaults = {
'sequence': 1
}
-
project_task_type()
class project(osv.osv):
@@ -56,7 +55,7 @@ class project(osv.osv):
def search(self, cr, user, args, offset=0, limit=None, order=None, context=None, count=False):
if user == 1:
return super(project, self).search(cr, user, args, offset=offset, limit=limit, order=order, context=context, count=count)
- if context and context.has_key('user_prefence') and context['user_prefence']:
+ if context and context.get('user_preference'):
cr.execute("""SELECT project.id FROM project_project project
LEFT JOIN account_analytic_account account ON account.id = project.analytic_account_id
LEFT JOIN project_user_rel rel ON rel.project_id = project.analytic_account_id
@@ -119,7 +118,7 @@ class project(osv.osv):
def unlink(self, cr, uid, ids, *args, **kwargs):
for proj in self.browse(cr, uid, ids):
if proj.tasks:
- raise osv.except_osv(_('Operation Not Permitted !'), _('You can not delete a project with tasks. I suggest you to deactivate it.'))
+ raise osv.except_osv(_('Operation Not Permitted !'), _('You cannot delete a project containing tasks. I suggest you to desactivate it.'))
return super(project, self).unlink(cr, uid, ids, *args, **kwargs)
_columns = {
@@ -150,11 +149,16 @@ class project(osv.osv):
'warn_footer': fields.text('Mail Footer', help="Footer added at the beginning of the email for the warning message sent to the customer when a task is closed.", states={'close':[('readonly',True)], 'cancelled':[('readonly',True)]}),
'type_ids': fields.many2many('project.task.type', 'project_task_type_rel', 'project_id', 'type_id', 'Tasks Stages', states={'close':[('readonly',True)], 'cancelled':[('readonly',True)]}),
}
+ def _get_type_common(self, cr, uid, context):
+ ids = self.pool.get('project.task.type').search(cr, uid, [('project_default','=',1)], context=context)
+ return ids
+
_order = "sequence"
_defaults = {
'active': True,
'priority': 1,
'sequence': 10,
+ 'type_ids': _get_type_common
}
# TODO: Why not using a SQL contraints ?
@@ -586,11 +590,12 @@ class task(osv.osv):
'name': _('Send Email after close task'),
'view_type': 'form',
'view_mode': 'form',
- 'res_model': 'project.task.close',
+ 'res_model': 'mail.compose.message',
'type': 'ir.actions.act_window',
'target': 'new',
'nodestroy': True,
- 'context': {'active_id': task.id}
+ 'context': {'active_id': task.id,
+ 'active_model': 'project.task'}
}
return res