[MERGE] Merge with dev-addons3 branch
authorpsi (Open ERP) <psi@tinyerp.co.in>
Tue, 22 Jun 2010 08:41:42 +0000 (14:11 +0530)
committerpsi (Open ERP) <psi@tinyerp.co.in>
Tue, 22 Jun 2010 08:41:42 +0000 (14:11 +0530)
bzr revid: psi@tinyerp.co.in-20100622084142-kqu9r8c2ppzy4zeg

addons/project/project_view.xml
addons/scrum/scrum.py
addons/scrum/scrum_view.xml

index cbb7b9d..8625062 100644 (file)
         </record>
         <menuitem id="menu_tasks_config" name="Tasks" parent="project.menu_definitions" sequence="1"/>
         <menuitem action="open_task_type_form" id="menu_task_types_view" parent="menu_tasks_config" sequence="1"/>
-        
+
         <act_window domain="[('user_id', '=', active_id)]" id="act_res_users_2_project_project" name="User's projects" res_model="project.project" src_model="res.users" view_mode="tree,form" view_type="form"/>
 
         <act_window
index b734473..f76545d 100644 (file)
@@ -106,7 +106,7 @@ class scrum_sprint(osv.osv):
         'name' : fields.char('Sprint Name', required=True, size=64),
         'date_start': fields.date('Starting Date', required=True),
         'date_stop': fields.date('Ending Date', required=True),
-        'project_id': fields.many2one('project.project', 'Project', required=True, domain=[('scrum','=',1)], help="If you have [?] in the project name, it means there are no analytic account linked to this project."),
+        'project_id': fields.many2one('project.project', 'Project', required=True, help="If you have [?] in the project name, it means there are no analytic account linked to this project."),
         'product_owner_id': fields.many2one('res.users', 'Product Owner', required=True,help="The person who is responsible for the product"),
         'scrum_master_id': fields.many2one('res.users', 'Scrum Manager', required=True,help="The person who is maintains the processes for the product"),
         'meeting_ids': fields.one2many('scrum.meeting', 'sprint_id', 'Daily Scrum'),
@@ -236,7 +236,7 @@ class scrum_product_backlog(osv.osv):
         'name' : fields.char('Feature', size=64, required=True),
         'note' : fields.text('Note'),
         'active' : fields.boolean('Active', help="If Active field is set to true, it will allow you to hide the product backlog without removing it."),
-        'project_id': fields.many2one('project.project', 'Project', required=True, domain=[('scrum','=',1)], help="If you have [?] in the project name, it means there are no analytic account linked to this project."),
+        'project_id': fields.many2one('project.project', 'Project', required=True, help="If you have [?] in the project name, it means there are no analytic account linked to this project."),
         'user_id': fields.many2one('res.users', 'Responsible'),
         'sprint_id': fields.many2one('scrum.sprint', 'Sprint'),
         'sequence' : fields.integer('Sequence', help="Gives the sequence order when displaying a list of product backlog."),
@@ -305,23 +305,31 @@ class scrum_meeting(osv.osv):
     }
 
     def button_send_to_master(self, cr, uid, ids, context=None):
+        if context is None:
+            context = {}
         meeting_id = self.browse(cr, uid, ids)[0]
-        user = self.pool.get('res.users').browse(cr, uid, uid, context=context)
-        if meeting_id and meeting_id.sprint_id.scrum_master_id.user_email:
-            self.email_send(cr, uid, ids, email)
+        email = meeting_id.sprint_id.scrum_master_id.user_email
+        if email:
+            self.email_send(cr, uid, ids, email, context=context)
         else:
             raise osv.except_osv(_('Error !'), _('Please provide email address for scrum master defined on sprint.'))
         return True
 
     def button_send_product_owner(self, cr, uid, ids, context=None):
+        if context is None:
+            context = {}
+        context.update({'button_send_product_owner': True})
         meeting_id = self.browse(cr, uid, ids)[0]
-        if meeting_id.sprint_id.product_owner_id.user_email:
-            self.email_send(cr,uid,ids,email)
+        email = meeting_id.sprint_id.product_owner_id.user_email
+        if email:
+            self.email_send(cr, uid, ids, email, context=context)
         else:
             raise osv.except_osv(_('Error !'), _('Please provide email address for product owner defined on sprint.'))
         return True
 
     def email_send(self, cr, uid, ids, email, context=None):
+        if context is None:
+            context = {}
         email_from = tools.config.get('email_from', False)
         meeting_id = self.browse(cr,uid,ids)[0]
         user = self.pool.get('res.users').browse(cr, uid, uid, context=context)
@@ -332,7 +340,12 @@ class scrum_meeting(osv.osv):
         sub_name = meeting_id.name or 'Scrum Meeting of %s '%meeting_id.date
         flag = tools.email_send(user_email , [email], sub_name, body, reply_to=None, openobject_id=str(meeting_id.id))
         if not flag:
-            raise osv.except_osv(_('Error !'), _(' Email Not send to %s!' % meeting_id.sprint_id.product_owner_id.name))
+            if context.get('button_send_product_owner', False):
+                raise osv.except_osv(_('Error !'), _(' Email Not send to the product owner %s!' % meeting_id.sprint_id.product_owner_id.name))
+            raise osv.except_osv(_('Error !'), _(' Email Not send to the scrum master %s!' % meeting_id.sprint_id.scrum_master_id.name))
+        if context.get('button_send_product_owner', False):
+            raise osv.except_osv(_('Information !'), _(' Email send successfully to product owner %s!' % meeting_id.sprint_id.product_owner_id.name))
+        raise osv.except_osv(_('Information!'), _(' Email send successfully to scrum master %s!'% meeting_id.sprint_id.scrum_master_id.name))
         return True
 
 scrum_meeting()
index 2219d29..d6a63d4 100644 (file)
@@ -43,7 +43,7 @@
                     <field name="expected_hours" sum="Planned hours" widget="float_time"/>
                     <field name="effective_hours" sum="Effective hours" widget="float_time"/>
                     <field name="state"/>
-                    <button type="object" string="Open" name="button_open" states="draft,pending" icon="gtk-jump-to"/>
+                    <button type="object" string="Open" name="button_open" states="draft,pending" icon="gtk-execute"/>
                     <button type="object" string="Pending" name="button_pending" states="open" icon="gtk-media-pause"/>
                     <button type="action" string="Convert to Task" name="%(action_scrum_backlog_to_task)d" states="pending" icon="gtk-execute"/>
                     <button type="object" string="Close" name="button_close" states="open,pending" icon="gtk-jump-to"/>
@@ -61,7 +61,7 @@
                         <field name="name" select="1"/>
                         <field name="project_id" select="1"/>
                         <field domain="[('project_id','=',project_id), ('state','in', ['draft','open'])]" name="sprint_id" select="1"/>
-                                       <button name="button_postpone" string="Post Pone" type="object"                  
+                                       <button name="button_postpone" string="Post Pone" type="object"
                                                help="Post Pone backlog" colspan="2"
                          icon="gtk-convert"  attrs="{'invisible':[('state','=','done')]}"/>
                         <field name="user_id" select="1"/>
                     <field name="effective_hours" sum="Effective hours" widget="float_time"/>
                     <field name="expected_hours" sum="Planned hours" widget="float_time"/>
                     <field name="state"/>
-                    <button type="object" string="Open" name="button_open" states="draft,pending" icon="gtk-jump-to"/>
+                    <button type="object" string="Open" name="button_open" states="draft,pending" icon="gtk-execute"/>
                     <button type="object" string="Pending" name="button_pending" states="open" icon="gtk-media-pause"/>
                     <button type="object" string="Close" name="button_close" states="open,pending" icon="gtk-jump-to"/>
                     <button type="object" string="Set to Draft" name="button_draft" states="cancel,done" icon="gtk-convert"/>