Merge lp:~openerp-dev/openobject-addons/trunk-stage-vs-status-with-new-warning-tpa into lp:openobject-addons

Proposed by Anto
Status: Needs review
Proposed branch: lp:~openerp-dev/openobject-addons/trunk-stage-vs-status-with-new-warning-tpa
Merge into: lp:openobject-addons
Diff against target: 616 lines (+173/-30)
18 files modified
base_status/__openerp__.py (+1/-0)
base_status/base_stage.py (+5/-3)
base_status/static/src/css/base_status.css (+6/-0)
crm/crm.py (+14/-0)
crm/crm_lead.py (+2/-0)
crm/crm_lead_data.xml (+4/-0)
crm/crm_view.xml (+15/-6)
crm_claim/crm_claim.py (+17/-0)
crm_claim/crm_claim_data.xml (+3/-0)
crm_claim/crm_claim_view.xml (+17/-9)
hr_recruitment/hr_recruitment.py (+20/-0)
hr_recruitment/hr_recruitment_data.xml (+9/-0)
hr_recruitment/hr_recruitment_view.xml (+15/-4)
project/project.py (+20/-1)
project/project_data.xml (+4/-0)
project/project_view.xml (+17/-5)
project_issue/project_issue.py (+2/-0)
project_issue/test/issue_demo.yml (+2/-2)
To merge this branch: bzr merge lp:~openerp-dev/openobject-addons/trunk-stage-vs-status-with-new-warning-tpa
Reviewer Review Type Date Requested Status
Anto Pending
Review via email: mp+150510@code.launchpad.net
To post a comment you must log in.

Unmerged revisions

8570. By Turkesh Patel (openERP)

[IMP] improved code of warning

8569. By Turkesh Patel (openERP)

[MRG] merge with lp:openobject-addons

8568. By Turkesh Patel (openERP)

[IMP] improve warnings related to stages.

8567. By Turkesh Patel (openERP)

[IMP] improved code.

8566. By Turkesh Patel (openERP)

[IMP] hr_recruitment: improved code

8565. By Turkesh Patel (openERP)

[IMP] project_issue: improve yml.

8564. By Turkesh Patel (openERP)

[MRG] merge with lp:openobject-addons

8563. By Turkesh Patel (openERP)

[IMP] project_issue: add warning.

8562. By Turkesh Patel (openERP)

[IMP] project:improved code

8561. By Turkesh Patel (openERP)

[IMP] improved wrningstring and default values

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'base_status/__openerp__.py'
--- base_status/__openerp__.py 2012-11-29 22:26:45 +0000
+++ base_status/__openerp__.py 2013-02-26 09:48:36 +0000
@@ -35,6 +35,7 @@
35 'depends': ['base'],35 'depends': ['base'],
36 'data': [],36 'data': [],
37 'demo': [],37 'demo': [],
38 'css': ['static/src/css/base_status.css'],
38 'installable': True,39 'installable': True,
39 'auto_install': False,40 'auto_install': False,
40}41}
4142
=== modified file 'base_status/base_stage.py'
--- base_status/base_stage.py 2012-12-21 13:48:10 +0000
+++ base_status/base_stage.py 2013-02-26 09:48:36 +0000
@@ -108,6 +108,7 @@
108108
109 def _get_default_stage_id(self, cr, uid, context=None):109 def _get_default_stage_id(self, cr, uid, context=None):
110 """ Gives default stage_id """110 """ Gives default stage_id """
111 context.update({'state_name': 'draft',})
111 return self.stage_find(cr, uid, [], None, [('state', '=', 'draft')], context=context)112 return self.stage_find(cr, uid, [], None, [('state', '=', 'draft')], context=context)
112113
113 def stage_find(self, cr, uid, cases, section_id, domain=[], order='sequence', context=None):114 def stage_find(self, cr, uid, cases, section_id, domain=[], order='sequence', context=None):
@@ -135,6 +136,7 @@
135 """136 """
136 if isinstance(cases, (int, long)):137 if isinstance(cases, (int, long)):
137 cases = self.browse(cr, uid, cases, context=context)138 cases = self.browse(cr, uid, cases, context=context)
139 context.update({'state_name': state_name,})
138 for case in cases:140 for case in cases:
139 stage_id = self.stage_find(cr, uid, [case], None, [('state', '=', state_name)], context=context)141 stage_id = self.stage_find(cr, uid, [case], None, [('state', '=', state_name)], context=context)
140 if stage_id:142 if stage_id:
@@ -254,10 +256,10 @@
254 """256 """
255 cases = self.browse(cr, uid, ids, context=context)257 cases = self.browse(cr, uid, ids, context=context)
256 # 1. update the stage258 # 1. update the stage
257 if new_state_name:259 if not (new_stage_id is None):
260 self.stage_set(cr, uid, ids, new_stage_id, context=context)
261 elif new_state_name:
258 self.stage_set_with_state_name(cr, uid, cases, new_state_name, context=context)262 self.stage_set_with_state_name(cr, uid, cases, new_state_name, context=context)
259 elif not (new_stage_id is None):
260 self.stage_set(cr, uid, ids, new_stage_id, context=context)
261 # 2. update values263 # 2. update values
262 if values_to_update:264 if values_to_update:
263 self.write(cr, uid, ids, values_to_update, context=context)265 self.write(cr, uid, ids, values_to_update, context=context)
264266
=== added directory 'base_status/static'
=== added directory 'base_status/static/src'
=== added directory 'base_status/static/src/css'
=== added file 'base_status/static/src/css/base_status.css'
--- base_status/static/src/css/base_status.css 1970-01-01 00:00:00 +0000
+++ base_status/static/src/css/base_status.css 2013-02-26 09:48:36 +0000
@@ -0,0 +1,6 @@
1.openerp .oe_stage_status_alert textarea {
2 background-color: #ffc7c7;
3 padding: 10px;
4 height: 1em;
5 margin-bottom: 20px;
6}
07
=== modified file 'crm/crm.py'
--- crm/crm.py 2012-12-18 09:32:41 +0000
+++ crm/crm.py 2013-02-26 09:48:36 +0000
@@ -87,6 +87,10 @@
87 ('both', 'Both')],87 ('both', 'Both')],
88 string='Type', size=16, required=True,88 string='Type', size=16, required=True,
89 help="This field is used to distinguish stages related to Leads from stages related to Opportunities, or to specify stages available for both types."),89 help="This field is used to distinguish stages related to Leads from stages related to Opportunities, or to specify stages available for both types."),
90 'draft_state': fields.boolean('This stage contains newly created documents', help="This stage contains newly created documents."),
91 'done_state': fields.boolean('This stage contains closed documents', help="This stage contains closed documents."),
92 'cancel_state': fields.boolean('This stage contains cancelled documents', help="This stage contains cancelled documents."),
93 'alert': fields.text('Alert Message',readonly=True),
90 }94 }
9195
92 _defaults = {96 _defaults = {
@@ -96,8 +100,18 @@
96 'fold': False,100 'fold': False,
97 'type': 'both',101 'type': 'both',
98 'case_default': True,102 'case_default': True,
103 'alert': "If you do not select any of the boolean field then this stage will be considered as 'In Progress.'",
99 }104 }
100105
106 def onchange_stage_state(self, cr, uid, ids, draft_state, done_state, cancel_state, context=None):
107 if draft_state:
108 return {'value':{'state':'draft', 'done_state': False, 'cancel_state': False}}
109 if done_state:
110 return {'value':{'state':'done', 'draft_state': False, 'cancel_state': False}}
111 if cancel_state:
112 return {'value':{'state':'cancel', 'done_state': False, 'draft_state': False}}
113 return {'value':{'state':'open', 'draft_state': False, 'cancel_state': False, 'done_state': False}}
114
101class crm_case_section(osv.osv):115class crm_case_section(osv.osv):
102 """ Model for sales teams. """116 """ Model for sales teams. """
103 _name = "crm.case.section"117 _name = "crm.case.section"
104118
=== modified file 'crm/crm_lead.py'
--- crm/crm_lead.py 2013-02-21 10:52:47 +0000
+++ crm/crm_lead.py 2013-02-26 09:48:36 +0000
@@ -102,6 +102,7 @@
102102
103 def _get_default_stage_id(self, cr, uid, context=None):103 def _get_default_stage_id(self, cr, uid, context=None):
104 """ Gives default stage_id """104 """ Gives default stage_id """
105 context.update({'state_name': 'draft',})
105 section_id = self._get_default_section_id(cr, uid, context=context)106 section_id = self._get_default_section_id(cr, uid, context=context)
106 return self.stage_find(cr, uid, [], section_id, [('state', '=', 'draft')], context=context)107 return self.stage_find(cr, uid, [], section_id, [('state', '=', 'draft')], context=context)
107108
@@ -408,6 +409,7 @@
408 stage_ids = self.pool.get('crm.case.stage').search(cr, uid, search_domain, order=order, context=context)409 stage_ids = self.pool.get('crm.case.stage').search(cr, uid, search_domain, order=order, context=context)
409 if stage_ids:410 if stage_ids:
410 return stage_ids[0]411 return stage_ids[0]
412 raise self.pool.get('res.config.settings').get_config_warning(cr, _("Any stage related to '%s' state not found.\nPlease configure any one stage which will contain documents of this state in %%(menu:crm.menu_crm_lead_stage_act)s.")%context.get('state_name'), context)
411 return False413 return False
412414
413 def case_cancel(self, cr, uid, ids, context=None):415 def case_cancel(self, cr, uid, ids, context=None):
414416
=== modified file 'crm/crm_lead_data.xml'
--- crm/crm_lead_data.xml 2013-01-30 09:09:42 +0000
+++ crm/crm_lead_data.xml 2013-02-26 09:48:36 +0000
@@ -7,6 +7,7 @@
7 <field name="name">New</field>7 <field name="name">New</field>
8 <field eval="1" name="case_default"/>8 <field eval="1" name="case_default"/>
9 <field name="state">draft</field>9 <field name="state">draft</field>
10 <field eval="True" name="draft_state"/>
10 <field eval="'10'" name="probability"/>11 <field eval="'10'" name="probability"/>
11 <field eval="'10'" name="sequence"/>12 <field eval="'10'" name="sequence"/>
12 <field name="type">both</field>13 <field name="type">both</field>
@@ -47,6 +48,7 @@
47 <field name="name">Won</field>48 <field name="name">Won</field>
48 <field eval="1" name="case_default"/>49 <field eval="1" name="case_default"/>
49 <field name="state">done</field>50 <field name="state">done</field>
51 <field eval="True" name="done_state"/>
50 <field eval="'100'" name="probability"/>52 <field eval="'100'" name="probability"/>
51 <field eval="'15'" name="sequence"/>53 <field eval="'15'" name="sequence"/>
52 <field eval="1" name="on_change"/>54 <field eval="1" name="on_change"/>
@@ -57,6 +59,7 @@
57 <field eval="1" name="case_default"/>59 <field eval="1" name="case_default"/>
58 <field eval="False" name="fold"/>60 <field eval="False" name="fold"/>
59 <field name="state">cancel</field>61 <field name="state">cancel</field>
62 <field eval="True" name="cancel_state"/>
60 <field eval="'0'" name="probability"/>63 <field eval="'0'" name="probability"/>
61 <field eval="'16'" name="sequence"/>64 <field eval="'16'" name="sequence"/>
62 <field name="type">lead</field>65 <field name="type">lead</field>
@@ -67,6 +70,7 @@
67 <field eval="True" name="fold"/>70 <field eval="True" name="fold"/>
68 <field eval="1" name="on_change"/>71 <field eval="1" name="on_change"/>
69 <field name="state">cancel</field>72 <field name="state">cancel</field>
73 <field eval="True" name="cancel_state"/>
70 <field eval="'0'" name="probability"/>74 <field eval="'0'" name="probability"/>
71 <field eval="'17'" name="sequence"/>75 <field eval="'17'" name="sequence"/>
72 <field name="type">opportunity</field>76 <field name="type">opportunity</field>
7377
=== modified file 'crm/crm_view.xml'
--- crm/crm_view.xml 2012-12-18 14:08:42 +0000
+++ crm/crm_view.xml 2013-02-26 09:48:36 +0000
@@ -183,7 +183,6 @@
183 <field name="sequence" widget="handle"/>183 <field name="sequence" widget="handle"/>
184 <field name="name"/>184 <field name="name"/>
185 <field name="probability"/>185 <field name="probability"/>
186 <field name="state"/>
187 <field name="type"/>186 <field name="type"/>
188 </tree>187 </tree>
189 </field>188 </field>
@@ -199,17 +198,27 @@
199 <form string="Stage" version="7.0">198 <form string="Stage" version="7.0">
200 <group col="4">199 <group col="4">
201 <field name="name"/>200 <field name="name"/>
202 <field name="state"/>
203 <field name="probability"/>201 <field name="probability"/>
204 <field name="type"/>202 <field name="type"/>
205 <field name="on_change"/>203 <field name="on_change"/>
206 <field name="sequence"/>204 <field name="sequence"/>
207 <field name="case_default"/>205 <field name="case_default"/>
208 <field name="fold"/>206 <field name="fold"/>
209 </group>207 <field name="state" invisible="1"/>
210 <separator string="Requirements"/>208 </group>
211 <field name="requirements" nolabel="1"/>209 <group>
212 <field name="section_ids" invisible="1"/>210 <group string="Column Status">
211 <field name='alert' attrs="{'invisible': [('state','in',('draft','cancel','done'))]}" class="oe_inline oe_stage_status_alert" nolabel="1"/>
212 <newline/>
213 <field name="draft_state" on_change="onchange_stage_state(draft_state,False,False)" attrs="{'invisible': ['|', ('done_state', '=', True), ('cancel_state', '=', True)]}"/>
214 <field name="done_state" on_change="onchange_stage_state(False,done_state,False)" attrs="{'invisible': ['|', ('draft_state', '=', True), ('cancel_state', '=', True)]}"/>
215 <field name="cancel_state" on_change="onchange_stage_state(False,False,cancel_state)" attrs="{'invisible': ['|', ('done_state', '=', True), ('draft_state', '=', True)]}"/>
216 </group>
217 <group string="Requirements">
218 <field name="requirements" nolabel="1"/>
219 <field name="section_ids" invisible="1"/>
220 </group>
221 </group>
213 </form>222 </form>
214 </field>223 </field>
215 </record>224 </record>
216225
=== modified file 'crm_claim/crm_claim.py'
--- crm_claim/crm_claim.py 2013-01-15 13:43:59 +0000
+++ crm_claim/crm_claim.py 2013-02-26 09:48:36 +0000
@@ -57,15 +57,31 @@
57 help="If you check this field, this stage will be proposed by default on each sales team. It will not assign this stage to existing teams."),57 help="If you check this field, this stage will be proposed by default on each sales team. It will not assign this stage to existing teams."),
58 'fold': fields.boolean('Hide in Views when Empty',58 'fold': fields.boolean('Hide in Views when Empty',
59 help="This stage is not visible, for example in status bar or kanban view, when there are no records in that stage to display."),59 help="This stage is not visible, for example in status bar or kanban view, when there are no records in that stage to display."),
60 'draft_state': fields.boolean('This stage contains newly created documents', help="This stage contains newly created documents."),
61 'done_state': fields.boolean('This stage contains closed documents', help="This stage contains closed documents."),
62 'cancel_state': fields.boolean('This stage contains cancelled documents', help="This stage contains cancelled documents."),
63 'alert': fields.text('Alert Message',readonly=True),
60 }64 }
6165
62 _defaults = {66 _defaults = {
63 'sequence': lambda *args: 1,67 'sequence': lambda *args: 1,
64 'state': 'draft',68 'state': 'draft',
69 'draft_state': True,
65 'fold': False,70 'fold': False,
66 'case_refused': False,71 'case_refused': False,
72 'alert': "If you do not select any of the boolean field then this stage will be considered as 'In Progress.'",
67 }73 }
6874
75 def onchange_stage_state(self, cr, uid, ids, draft_state, done_state, cancel_state, context=None):
76 if draft_state:
77 return {'value':{'state':'draft', 'done_state': False, 'cancel_state': False}}
78 if done_state:
79 return {'value':{'state':'done', 'draft_state': False, 'cancel_state': False}}
80 if cancel_state:
81 return {'value':{'state':'cancel', 'done_state': False, 'draft_state': False}}
82 return {'value':{'state':'open', 'draft_state': False, 'cancel_state': False, 'done_state': False}}
83
84
69class crm_claim(base_stage, osv.osv):85class crm_claim(base_stage, osv.osv):
70 """ Crm claim86 """ Crm claim
71 """87 """
@@ -156,6 +172,7 @@
156 stage_ids = self.pool.get('crm.claim.stage').search(cr, uid, search_domain, order=order, context=context)172 stage_ids = self.pool.get('crm.claim.stage').search(cr, uid, search_domain, order=order, context=context)
157 if stage_ids:173 if stage_ids:
158 return stage_ids[0]174 return stage_ids[0]
175 raise self.pool.get('res.config.settings').get_config_warning(cr, _("Any stage related to '%s' state not found.\nPlease configure any one stage which will contain documents of this state in %%(menu:crm_claim.menu_claim_stage_view)s.")%context.get('state_name'), context)
159 return False176 return False
160177
161 def case_refuse(self, cr, uid, ids, context=None):178 def case_refuse(self, cr, uid, ids, context=None):
162179
=== modified file 'crm_claim/crm_claim_data.xml'
--- crm_claim/crm_claim_data.xml 2012-11-29 22:26:45 +0000
+++ crm_claim/crm_claim_data.xml 2013-02-26 09:48:36 +0000
@@ -45,6 +45,7 @@
45 <record model="crm.claim.stage" id="stage_claim1">45 <record model="crm.claim.stage" id="stage_claim1">
46 <field name="name">New</field>46 <field name="name">New</field>
47 <field name="state">draft</field>47 <field name="state">draft</field>
48 <field eval="True" name="draft_state"/>
48 <field name="sequence">26</field>49 <field name="sequence">26</field>
49 <field name="case_default" eval="True"/>50 <field name="case_default" eval="True"/>
50 </record>51 </record>
@@ -57,12 +58,14 @@
57 <record model="crm.claim.stage" id="stage_claim2">58 <record model="crm.claim.stage" id="stage_claim2">
58 <field name="name">Settled</field>59 <field name="name">Settled</field>
59 <field name="state">done</field>60 <field name="state">done</field>
61 <field eval="True" name="done_state"/>
60 <field name="sequence">28</field>62 <field name="sequence">28</field>
61 <field name="case_default" eval="True"/>63 <field name="case_default" eval="True"/>
62 </record>64 </record>
63 <record model="crm.claim.stage" id="stage_claim3">65 <record model="crm.claim.stage" id="stage_claim3">
64 <field name="name">Rejected</field>66 <field name="name">Rejected</field>
65 <field name="state">cancel</field>67 <field name="state">cancel</field>
68 <field eval="True" name="cancel_state"/>
66 <field name="sequence">29</field>69 <field name="sequence">29</field>
67 <field name="case_default" eval="True"/>70 <field name="case_default" eval="True"/>
68 <field name="case_refused" eval="True"/>71 <field name="case_refused" eval="True"/>
6972
=== modified file 'crm_claim/crm_claim_view.xml'
--- crm_claim/crm_claim_view.xml 2012-11-29 22:26:45 +0000
+++ crm_claim/crm_claim_view.xml 2013-02-26 09:48:36 +0000
@@ -36,9 +36,8 @@
36 <field name="model">crm.claim.stage</field>36 <field name="model">crm.claim.stage</field>
37 <field name="arch" type="xml">37 <field name="arch" type="xml">
38 <tree string="Claim Stages">38 <tree string="Claim Stages">
39 <field name="name"/>
39 <field name="sequence"/>40 <field name="sequence"/>
40 <field name="name"/>
41 <field name="state"/>
42 </tree>41 </tree>
43 </field>42 </field>
44 </record>43 </record>
@@ -47,13 +46,22 @@
47 <field name="name">crm.claim.stage.form</field>46 <field name="name">crm.claim.stage.form</field>
48 <field name="model">crm.claim.stage</field>47 <field name="model">crm.claim.stage</field>
49 <field name="arch" type="xml">48 <field name="arch" type="xml">
50 <form string="Claim Stage">49 <form string="Claim Stage" version="7.0">
51 <field name="name"/>50 <group col="4">
52 <field name="case_default"/>51 <field name="name"/>
53 <field name="sequence"/>52 <field name="case_default"/>
54 <field name="state"/>53 <field name="sequence"/>
55 <field name="case_refused"/>54 <field name="case_refused"/>
56 <field name="fold"/>55 <field name="fold"/>
56 <field name="state" invisible="1"/>
57 </group>
58 <group string="Column Status">
59 <field name='alert' attrs="{'invisible': [('state','in',('draft','cancel','done'))]}" class="oe_inline oe_stage_status_alert" nolabel="1"/>
60 <newline/>
61 <field name="draft_state" on_change="onchange_stage_state(draft_state,False,False)" attrs="{'invisible': ['|', ('done_state', '=', True), ('cancel_state', '=', True)]}"/>
62 <field name="done_state" on_change="onchange_stage_state(False,done_state,False)" attrs="{'invisible': ['|', ('draft_state', '=', True), ('cancel_state', '=', True)]}"/>
63 <field name="cancel_state" on_change="onchange_stage_state(False,False,cancel_state)" attrs="{'invisible': ['|', ('done_state', '=', True), ('draft_state', '=', True)]}"/>
64 </group>
57 </form>65 </form>
58 </field>66 </field>
59 </record>67 </record>
6068
=== modified file 'hr_recruitment/hr_recruitment.py'
--- hr_recruitment/hr_recruitment.py 2013-02-24 11:52:27 +0000
+++ hr_recruitment/hr_recruitment.py 2013-02-26 09:48:36 +0000
@@ -65,13 +65,31 @@
65 'state': fields.selection(AVAILABLE_STATES, 'Status', required=True, help="The related status for the stage. The status of your document will automatically change according to the selected stage. Example, a stage is related to the status 'Close', when your document reach this stage, it will be automatically closed."),65 'state': fields.selection(AVAILABLE_STATES, 'Status', required=True, help="The related status for the stage. The status of your document will automatically change according to the selected stage. Example, a stage is related to the status 'Close', when your document reach this stage, it will be automatically closed."),
66 'fold': fields.boolean('Hide in views if empty', help="This stage is not visible, for example in status bar or kanban view, when there are no records in that stage to display."),66 'fold': fields.boolean('Hide in views if empty', help="This stage is not visible, for example in status bar or kanban view, when there are no records in that stage to display."),
67 'requirements': fields.text('Requirements'),67 'requirements': fields.text('Requirements'),
68 'draft_state': fields.boolean('This stage contains newly created applications', help="This stage contains newly created applications."),
69 'pending_state': fields.boolean('This stage contains pending applications', help="This stage contains pending applications."),
70 'done_state': fields.boolean('This stage contains hired applications', help="This stage contains hired applications."),
71 'cancel_state': fields.boolean('This stage contains refused applications', help="This stage contains refused applications."),
72 'alert': fields.text('Alert Message',readonly=True),
68 }73 }
69 _defaults = {74 _defaults = {
70 'sequence': 1,75 'sequence': 1,
71 'state': 'draft',76 'state': 'draft',
77 'draft_state': True,
72 'fold': False,78 'fold': False,
79 'alert': "If you do not select any of the boolean field then this stage will be considered as 'In Progress.'",
73 }80 }
7481
82 def onchange_stage_state(self, cr, uid, ids, draft_state, pending_state, done_state, cancel_state, context=None):
83 if draft_state:
84 return {'value':{'state':'draft', 'done_state': False, 'cancel_state': False, 'pending_state': False}}
85 if pending_state:
86 return {'value':{'state':'pending', 'done_state': False, 'draft_state': False, 'cancel_state': False}}
87 if done_state:
88 return {'value':{'state':'done', 'draft_state': False, 'cancel_state': False, 'pending_state': False}}
89 if cancel_state:
90 return {'value':{'state':'cancel', 'done_state': False, 'draft_state': False, 'pending_state': False}}
91 return {'value':{'state':'open', 'draft_state': False, 'cancel_state': False, 'done_state': False, 'pending_state': False}}
92
75class hr_recruitment_degree(osv.osv):93class hr_recruitment_degree(osv.osv):
76 """ Degree of HR Recruitment """94 """ Degree of HR Recruitment """
77 _name = "hr.recruitment.degree"95 _name = "hr.recruitment.degree"
@@ -108,6 +126,7 @@
108126
109 def _get_default_stage_id(self, cr, uid, context=None):127 def _get_default_stage_id(self, cr, uid, context=None):
110 """ Gives default stage_id """128 """ Gives default stage_id """
129 context.update({'state_name': 'draft',})
111 department_id = self._get_default_department_id(cr, uid, context=context)130 department_id = self._get_default_department_id(cr, uid, context=context)
112 return self.stage_find(cr, uid, [], department_id, [('state', '=', 'draft')], context=context)131 return self.stage_find(cr, uid, [], department_id, [('state', '=', 'draft')], context=context)
113132
@@ -304,6 +323,7 @@
304 stage_ids = self.pool.get('hr.recruitment.stage').search(cr, uid, search_domain, order=order, context=context)323 stage_ids = self.pool.get('hr.recruitment.stage').search(cr, uid, search_domain, order=order, context=context)
305 if stage_ids:324 if stage_ids:
306 return stage_ids[0]325 return stage_ids[0]
326 raise self.pool.get('res.config.settings').get_config_warning(cr, _("Any stage related to '%s' state not found.\nPlease configure any one stage which will contain documents of this state in %%(menu:hr_recruitment.menu_hr_recruitment_stage)s.")%context.get('state_name'), context)
307 return False327 return False
308328
309 def action_makeMeeting(self, cr, uid, ids, context=None):329 def action_makeMeeting(self, cr, uid, ids, context=None):
310330
=== modified file 'hr_recruitment/hr_recruitment_data.xml'
--- hr_recruitment/hr_recruitment_data.xml 2013-01-30 13:58:25 +0000
+++ hr_recruitment/hr_recruitment_data.xml 2013-02-26 09:48:36 +0000
@@ -54,31 +54,40 @@
54 <record model="hr.recruitment.stage" id="stage_job1">54 <record model="hr.recruitment.stage" id="stage_job1">
55 <field name="name">Initial Qualification</field>55 <field name="name">Initial Qualification</field>
56 <field name="state">draft</field>56 <field name="state">draft</field>
57 <field eval="True" name="draft_state"/>
57 <field name="sequence">1</field>58 <field name="sequence">1</field>
58 </record>59 </record>
59 <record model="hr.recruitment.stage" id="stage_job2">60 <record model="hr.recruitment.stage" id="stage_job2">
60 <field name="name">First Interview</field>61 <field name="name">First Interview</field>
61 <field name="state">open</field>62 <field name="state">open</field>
63 <field eval="False" name="draft_state"/>
62 <field name="sequence">2</field>64 <field name="sequence">2</field>
63 </record>65 </record>
64 <record model="hr.recruitment.stage" id="stage_job3">66 <record model="hr.recruitment.stage" id="stage_job3">
65 <field name="name">Second Interview</field>67 <field name="name">Second Interview</field>
66 <field name="state">open</field>68 <field name="state">open</field>
69 <field eval="False" name="draft_state"/>
67 <field name="sequence">3</field>70 <field name="sequence">3</field>
68 </record>71 </record>
69 <record model="hr.recruitment.stage" id="stage_job4">72 <record model="hr.recruitment.stage" id="stage_job4">
70 <field name="name">Contract Proposed</field>73 <field name="name">Contract Proposed</field>
71 <field name="state">pending</field>74 <field name="state">pending</field>
75 <field eval="True" name="pending_state"/>
76 <field eval="False" name="draft_state"/>
72 <field name="sequence">4</field>77 <field name="sequence">4</field>
73 </record>78 </record>
74 <record model="hr.recruitment.stage" id="stage_job5">79 <record model="hr.recruitment.stage" id="stage_job5">
75 <field name="name">Contract Signed</field>80 <field name="name">Contract Signed</field>
76 <field name="state">done</field>81 <field name="state">done</field>
82 <field eval="True" name="done_state"/>
83 <field eval="False" name="draft_state"/>
77 <field name="sequence">5</field>84 <field name="sequence">5</field>
78 </record>85 </record>
79 <record model="hr.recruitment.stage" id="stage_job6">86 <record model="hr.recruitment.stage" id="stage_job6">
80 <field name="name">Refused</field>87 <field name="name">Refused</field>
81 <field name="state">cancel</field>88 <field name="state">cancel</field>
89 <field eval="True" name="cancel_state"/>
90 <field eval="False" name="draft_state"/>
82 <field name="sequence">6</field>91 <field name="sequence">6</field>
83 <field name="fold" eval="True"/>92 <field name="fold" eval="True"/>
84 </record>93 </record>
8594
=== modified file 'hr_recruitment/hr_recruitment_view.xml'
--- hr_recruitment/hr_recruitment_view.xml 2013-02-11 12:57:51 +0000
+++ hr_recruitment/hr_recruitment_view.xml 2013-02-26 09:48:36 +0000
@@ -328,7 +328,6 @@
328 <field name="sequence" invisible="1"/>328 <field name="sequence" invisible="1"/>
329 <field name="name"/>329 <field name="name"/>
330 <field name="department_id"/>330 <field name="department_id"/>
331 <field name="state"/>
332 </tree>331 </tree>
333 </field>332 </field>
334 </record>333 </record>
@@ -345,13 +344,25 @@
345 <field name="department_id"/>344 <field name="department_id"/>
346 </group>345 </group>
347 <group>346 <group>
348 <field name="state"/>347 <field name="state" invisible="1"/>
349 <field name="sequence"/>348 <field name="sequence"/>
350 <field name="fold"/>349 <field name="fold"/>
351 </group>350 </group>
352 </group>351 </group>
353 <separator string="Requirements"/>352 <group>
354 <field name="requirements"/>353 <group string="Column status">
354 <field name='alert' attrs="{'invisible': [('state','in',('draft','cancel','done','pending'))]}" class="oe_inline oe_stage_status_alert" nolabel="1"/>
355 <newline/>
356 <field name="draft_state" on_change="onchange_stage_state(draft_state,False,False,False)" attrs="{'invisible': ['|','|', ('done_state', '=', True), ('cancel_state', '=', True), ('pending_state', '=', True)]}"/>
357 <field name="pending_state" on_change="onchange_stage_state(False,pending_state,False,False)" attrs="{'invisible': ['|','|', ('done_state', '=', True), ('cancel_state', '=', True), ('draft_state', '=', True)]}"/>
358 <field name="done_state" on_change="onchange_stage_state(False,False,done_state,False)" attrs="{'invisible': ['|','|', ('draft_state', '=', True), ('cancel_state', '=', True), ('pending_state', '=', True)]}"/>
359 <field name="cancel_state" on_change="onchange_stage_state(False,False,False,cancel_state)" attrs="{'invisible': ['|','|', ('done_state', '=', True), ('draft_state', '=', True), ('pending_state', '=', True)]}"/>
360 </group>
361 <group string="Requirements">
362 <field name="requirements" nolabel="1"/>
363 </group>
364 </group>
365
355 </form>366 </form>
356 </field>367 </field>
357 </record>368 </record>
358369
=== modified file 'project/project.py'
--- project/project.py 2013-01-15 10:03:53 +0000
+++ project/project.py 2013-02-26 09:48:36 +0000
@@ -49,6 +49,11 @@
49 "For example, if a stage is related to the status 'Close', when your document reaches this stage, it is automatically closed."),49 "For example, if a stage is related to the status 'Close', when your document reaches this stage, it is automatically closed."),
50 'fold': fields.boolean('Folded by Default',50 'fold': fields.boolean('Folded by Default',
51 help="This stage is not visible, for example in status bar or kanban view, when there are no records in that stage to display."),51 help="This stage is not visible, for example in status bar or kanban view, when there are no records in that stage to display."),
52 'draft_state': fields.boolean('This stage contains newly created documents', help="This stage contains newly created documents."),
53 'done_state': fields.boolean('This stage contains closed documents', help="This stage contains closed documents."),
54 'pending_state': fields.boolean('This stage contains pending documents', help="This stage contains pending documents."),
55 'cancelled_state': fields.boolean('This stage contains cancelled documents', help="This stage contains cancelled documents."),
56 'alert': fields.text('Alert Message',readonly=True),
52 }57 }
53 def _get_default_project_id(self, cr, uid, ctx={}):58 def _get_default_project_id(self, cr, uid, ctx={}):
54 proj = ctx.get('default_project_id', False)59 proj = ctx.get('default_project_id', False)
@@ -60,10 +65,22 @@
60 'state': 'open',65 'state': 'open',
61 'fold': False,66 'fold': False,
62 'case_default': False,67 'case_default': False,
63 'project_ids': _get_default_project_id68 'project_ids': _get_default_project_id,
69 'alert': "If you do not select any of the boolean field then this stage will be considered as 'In Progress.'",
64 }70 }
65 _order = 'sequence'71 _order = 'sequence'
6672
73 def onchange_stage_state(self, cr, uid, ids, draft_state, pending_state, done_state, cancelled_state, context=None):
74 if draft_state:
75 return {'value':{'state':'draft', 'done_state': False, 'cancelled_state': False, 'pending_state': False}}
76 if pending_state:
77 return {'value':{'state':'pending', 'done_state': False, 'draft_state': False, 'cancelled_state': False}}
78 if done_state:
79 return {'value':{'state':'done', 'draft_state': False, 'cancelled_state': False, 'pending_state': False}}
80 if cancelled_state:
81 return {'value':{'state':'cancelled', 'done_state': False, 'draft_state': False, 'pending_state': False}}
82 return {'value':{'state':'open', 'draft_state': False, 'cancelled_state': False, 'done_state': False, 'pending_state': False}}
83
67def short_name(name):84def short_name(name):
68 """Keep first word(s) of name to make it small enough85 """Keep first word(s) of name to make it small enough
69 but distinctive"""86 but distinctive"""
@@ -578,6 +595,7 @@
578595
579 def _get_default_stage_id(self, cr, uid, context=None):596 def _get_default_stage_id(self, cr, uid, context=None):
580 """ Gives default stage_id """597 """ Gives default stage_id """
598 context.update({'state_name': 'draft',})
581 project_id = self._get_default_project_id(cr, uid, context=context)599 project_id = self._get_default_project_id(cr, uid, context=context)
582 return self.stage_find(cr, uid, [], project_id, [('state', '=', 'draft')], context=context)600 return self.stage_find(cr, uid, [], project_id, [('state', '=', 'draft')], context=context)
583601
@@ -919,6 +937,7 @@
919 stage_ids = self.pool.get('project.task.type').search(cr, uid, search_domain, order=order, context=context)937 stage_ids = self.pool.get('project.task.type').search(cr, uid, search_domain, order=order, context=context)
920 if stage_ids:938 if stage_ids:
921 return stage_ids[0]939 return stage_ids[0]
940 raise self.pool.get('res.config.settings').get_config_warning(cr, _("Any stage related to '%s' state not found.\nPlease configure any one stage which will contain documents of this state in %%(menu:project.menu_task_types_view)s.")%context.get('state_name'), context)
922 return False941 return False
923942
924 def _check_child_task(self, cr, uid, ids, context=None):943 def _check_child_task(self, cr, uid, ids, context=None):
925944
=== modified file 'project/project_data.xml'
--- project/project_data.xml 2013-01-30 09:09:42 +0000
+++ project/project_data.xml 2013-02-26 09:48:36 +0000
@@ -30,12 +30,14 @@
30 <field name="sequence">1</field>30 <field name="sequence">1</field>
31 <field name="name">Analysis</field>31 <field name="name">Analysis</field>
32 <field name="state">draft</field>32 <field name="state">draft</field>
33 <field eval="True" name="draft_state"/>
33 <field name="case_default" eval="False"/>34 <field name="case_default" eval="False"/>
34 </record>35 </record>
35 <record id="project_tt_specification" model="project.task.type">36 <record id="project_tt_specification" model="project.task.type">
36 <field name="sequence">2</field>37 <field name="sequence">2</field>
37 <field name="name">Specification</field>38 <field name="name">Specification</field>
38 <field name="state">pending</field>39 <field name="state">pending</field>
40 <field eval="True" name="pending_state"/>
39 <field name="case_default" eval="True"/>41 <field name="case_default" eval="True"/>
40 </record>42 </record>
41 <record id="project_tt_design" model="project.task.type">43 <record id="project_tt_design" model="project.task.type">
@@ -67,6 +69,7 @@
67 <field name="sequence">100</field>69 <field name="sequence">100</field>
68 <field name="name">Done</field>70 <field name="name">Done</field>
69 <field name="state">done</field>71 <field name="state">done</field>
72 <field eval="True" name="done_state"/>
70 <field name="case_default" eval="True"/>73 <field name="case_default" eval="True"/>
71 <field name="fold" eval="True"/>74 <field name="fold" eval="True"/>
72 </record>75 </record>
@@ -74,6 +77,7 @@
74 <field name="sequence">200</field>77 <field name="sequence">200</field>
75 <field name="name">Cancelled</field>78 <field name="name">Cancelled</field>
76 <field name="state">cancelled</field>79 <field name="state">cancelled</field>
80 <field eval="True" name="cancelled_state"/>
77 <field name="case_default" eval="True"/>81 <field name="case_default" eval="True"/>
78 <field name="fold" eval="True"/>82 <field name="fold" eval="True"/>
79 </record>83 </record>
8084
=== modified file 'project/project_view.xml'
--- project/project_view.xml 2013-02-25 12:03:31 +0000
+++ project/project_view.xml 2013-02-26 09:48:36 +0000
@@ -689,12 +689,24 @@
689 <field name="case_default"/>689 <field name="case_default"/>
690 </group>690 </group>
691 <group>691 <group>
692 <field name="state"/>
693 <field name="sequence"/>692 <field name="sequence"/>
694 <field name="fold"/>693 <field name="fold"/>
695 </group>694 <field name="state" invisible="1"/>
696 </group>695 </group>
697 <field name="description" placeholder="Add a description..."/>696 </group>
697 <group>
698 <group string="Column Status">
699 <field name='alert' attrs="{'invisible': [('state','in',('draft','cancelled','done','pending'))]}" class="oe_inline oe_stage_status_alert" nolabel="1"/>
700 <newline/>
701 <field name="draft_state" on_change="onchange_stage_state(draft_state,False,False,False)" attrs="{'invisible': ['|','|', ('done_state', '=', True), ('cancelled_state', '=', True), ('pending_state', '=', True)]}"/>
702 <field name="pending_state" on_change="onchange_stage_state(False,pending_state,False,False)" attrs="{'invisible': ['|','|', ('done_state', '=', True), ('cancelled_state', '=', True), ('draft_state', '=', True)]}"/>
703 <field name="done_state" on_change="onchange_stage_state(False,False,done_state,False)" attrs="{'invisible': ['|','|', ('draft_state', '=', True), ('cancelled_state', '=', True), ('pending_state', '=', True)]}"/>
704 <field name="cancelled_state" on_change="onchange_stage_state(False,False,False,cancelled_state)" attrs="{'invisible': ['|','|', ('done_state', '=', True), ('draft_state', '=', True), ('pending_state', '=', True)]}"/>
705 </group>
706 <group string="Description">
707 <field name="description" placeholder="Add a description..." nolabel="1"/>
708 </group>
709 </group>
698 </form>710 </form>
699 </field>711 </field>
700 </record>712 </record>
@@ -706,7 +718,7 @@
706 <tree string="Task Stage">718 <tree string="Task Stage">
707 <field name="sequence" widget="handle"/>719 <field name="sequence" widget="handle"/>
708 <field name="name"/>720 <field name="name"/>
709 <field name="state"/>721 <field name="case_default"/>
710 </tree>722 </tree>
711 </field>723 </field>
712 </record>724 </record>
713725
=== modified file 'project_issue/project_issue.py'
--- project_issue/project_issue.py 2013-01-15 13:43:59 +0000
+++ project_issue/project_issue.py 2013-02-26 09:48:36 +0000
@@ -80,6 +80,7 @@
8080
81 def _get_default_stage_id(self, cr, uid, context=None):81 def _get_default_stage_id(self, cr, uid, context=None):
82 """ Gives default stage_id """82 """ Gives default stage_id """
83 context.update({'state_name': 'draft',})
83 project_id = self._get_default_project_id(cr, uid, context=context)84 project_id = self._get_default_project_id(cr, uid, context=context)
84 return self.stage_find(cr, uid, [], project_id, [('state', '=', 'draft')], context=context)85 return self.stage_find(cr, uid, [], project_id, [('state', '=', 'draft')], context=context)
8586
@@ -454,6 +455,7 @@
454 stage_ids = self.pool.get('project.task.type').search(cr, uid, search_domain, order=order, context=context)455 stage_ids = self.pool.get('project.task.type').search(cr, uid, search_domain, order=order, context=context)
455 if stage_ids:456 if stage_ids:
456 return stage_ids[0]457 return stage_ids[0]
458 raise self.pool.get('res.config.settings').get_config_warning(cr, _("Any stage related to '%s' state not found.\nPlease configure any one stage which will contain documents of this state in %%(menu:project.menu_task_types_view)s.")%context.get('state_name'), context)
457 return False459 return False
458460
459 def case_cancel(self, cr, uid, ids, context=None):461 def case_cancel(self, cr, uid, ids, context=None):
460462
=== modified file 'project_issue/test/issue_demo.yml'
--- project_issue/test/issue_demo.yml 2012-11-29 22:26:45 +0000
+++ project_issue/test/issue_demo.yml 2013-02-26 09:48:36 +0000
@@ -1,8 +1,8 @@
1-1-
2 !record {model: project.issue, id: project_task_1, view: False}:2 !record {model: project.issue, id: project_task_1, view: False}:
3 task_id: 'project.project_task_17'3 task_id: 'project.project_task_1'
4 name: 'Error in account module'4 name: 'Error in account module'
5-5-
6 !record {model: project.issue, id: project01, view: False}:6 !record {model: project.issue, id: project01, view: False}:
7 project_id: 'project.project_project_2'7 project_id: 'project.project_project_1'
8 name: 'OpenERP Integration'8 name: 'OpenERP Integration'

Subscribers

People subscribed via source and target branches

to all changes: