Merge lp:~openerp-dev/openobject-server/trunk-res-country-state-cleaning-mme into lp:openobject-server
- trunk-res-country-state-cleaning-mme
- Merge into trunk
Proposed by
Thibault Delavallée (OpenERP)
Status: | Needs review |
---|---|
Proposed branch: | lp:~openerp-dev/openobject-server/trunk-res-country-state-cleaning-mme |
Merge into: | lp:openobject-server |
Diff against target: |
584 lines (+29/-139) 21 files modified
doc/03_module_dev_02.rst (+0/-1) doc/03_module_dev_03.rst (+1/-1) doc/form-view-guidelines.rst (+1/-1) openerp/addons/base/__openerp__.py (+0/-1) openerp/addons/base/report/corporate_defaults.xml (+1/-1) openerp/addons/base/res/res_bank.py (+6/-8) openerp/addons/base/res/res_bank_view.xml (+1/-1) openerp/addons/base/res/res_company.py (+2/-15) openerp/addons/base/res/res_company_view.xml (+1/-1) openerp/addons/base/res/res_country.py (+0/-16) openerp/addons/base/res/res_country_view.xml (+0/-42) openerp/addons/base/res/res_partner.py (+7/-15) openerp/addons/base/res/res_partner_demo.xml (+0/-6) openerp/addons/base/res/res_partner_report_address.xml (+1/-1) openerp/addons/base/res/res_partner_view.xml (+2/-2) openerp/addons/base/res/res_users.py (+0/-4) openerp/addons/base/security/ir.model.access.csv (+0/-2) openerp/addons/base/tests/test_expression.py (+0/-4) openerp/addons/base/tests/test_mail_examples.py (+1/-1) openerp/addons/base/tests/test_search.py (+5/-6) openerp/osv/expression.py (+0/-10) |
To merge this branch: | bzr merge lp:~openerp-dev/openobject-server/trunk-res-country-state-cleaning-mme |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
OpenERP Core Team | Pending | ||
Review via email: mp+208115@code.launchpad.net |
Commit message
Description of the change
[Fix] remove res.country.state model and replace all many2one state by a char field
To post a comment you must log in.
- 5092. By Mehul Mehta(OpenERP)
-
[IMP] improvement in code
Unmerged revisions
- 5092. By Mehul Mehta(OpenERP)
-
[IMP] improvement in code
- 5091. By Mehul Mehta(OpenERP)
-
[MERGE] Merged lp:openobject-server
- 5090. By Mehul Mehta(OpenERP)
-
[Fix] remove res.country.state model and replace all many2one state by a char field
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === modified file 'doc/03_module_dev_02.rst' | |||
2 | --- doc/03_module_dev_02.rst 2013-06-19 09:13:32 +0000 | |||
3 | +++ doc/03_module_dev_02.rst 2014-02-26 13:35:37 +0000 | |||
4 | @@ -600,7 +600,6 @@ | |||
5 | 600 | the Country from a City, you can define a field as below in the City object:: | 600 | the Country from a City, you can define a field as below in the City object:: |
6 | 601 | 601 | ||
7 | 602 | 'country_id': fields.related( | 602 | 'country_id': fields.related( |
8 | 603 | 'state_id', | ||
9 | 604 | 'country_id', | 603 | 'country_id', |
10 | 605 | type="many2one", | 604 | type="many2one", |
11 | 606 | relation="res.country", | 605 | relation="res.country", |
12 | 607 | 606 | ||
13 | === modified file 'doc/03_module_dev_03.rst' | |||
14 | --- doc/03_module_dev_03.rst 2013-09-04 12:58:42 +0000 | |||
15 | +++ doc/03_module_dev_03.rst 2014-02-26 13:35:37 +0000 | |||
16 | @@ -878,7 +878,7 @@ | |||
17 | 878 | <field name="city" select="2"/> | 878 | <field name="city" select="2"/> |
18 | 879 | <newline/> | 879 | <newline/> |
19 | 880 | <field completion="1" name="country_id" select="2"/> | 880 | <field completion="1" name="country_id" select="2"/> |
21 | 881 | <field name="state_id" select="2"/> | 881 | <field name="state" select="2"/> |
22 | 882 | <newline/> | 882 | <newline/> |
23 | 883 | <field name="phone"/> | 883 | <field name="phone"/> |
24 | 884 | <field name="fax"/> | 884 | <field name="fax"/> |
25 | 885 | 885 | ||
26 | === modified file 'doc/form-view-guidelines.rst' | |||
27 | --- doc/form-view-guidelines.rst 2013-03-28 16:30:59 +0000 | |||
28 | +++ doc/form-view-guidelines.rst 2014-02-26 13:35:37 +0000 | |||
29 | @@ -228,7 +228,7 @@ | |||
30 | 228 | <field name="zip" class="oe_inline" placeholder="ZIP"/> | 228 | <field name="zip" class="oe_inline" placeholder="ZIP"/> |
31 | 229 | <field name="city" class="oe_inline" placeholder="City"/> | 229 | <field name="city" class="oe_inline" placeholder="City"/> |
32 | 230 | </div> | 230 | </div> |
34 | 231 | <field name="state_id" placeholder="State"/> | 231 | <field name="state" placeholder="State"/> |
35 | 232 | <field name="country_id" placeholder="Country"/> | 232 | <field name="country_id" placeholder="Country"/> |
36 | 233 | </div> | 233 | </div> |
37 | 234 | </group> | 234 | </group> |
38 | 235 | 235 | ||
39 | === modified file 'openerp/addons/base/__openerp__.py' | |||
40 | --- openerp/addons/base/__openerp__.py 2014-02-09 00:37:45 +0000 | |||
41 | +++ openerp/addons/base/__openerp__.py 2014-02-26 13:35:37 +0000 | |||
42 | @@ -41,7 +41,6 @@ | |||
43 | 41 | 'base_menu.xml', | 41 | 'base_menu.xml', |
44 | 42 | 'res/res_security.xml', | 42 | 'res/res_security.xml', |
45 | 43 | 'res/res_config.xml', | 43 | 'res/res_config.xml', |
46 | 44 | 'res/res.country.state.csv', | ||
47 | 45 | 'ir/ir_actions.xml', | 44 | 'ir/ir_actions.xml', |
48 | 46 | 'ir/ir_config_parameter_view.xml', | 45 | 'ir/ir_config_parameter_view.xml', |
49 | 47 | 'ir/ir_cron_view.xml', | 46 | 'ir/ir_cron_view.xml', |
50 | 48 | 47 | ||
51 | === modified file 'openerp/addons/base/report/corporate_defaults.xml' | |||
52 | --- openerp/addons/base/report/corporate_defaults.xml 2012-08-20 10:20:22 +0000 | |||
53 | +++ openerp/addons/base/report/corporate_defaults.xml 2014-02-26 13:35:37 +0000 | |||
54 | @@ -8,7 +8,7 @@ | |||
55 | 8 | <street type="field" name="street"/> | 8 | <street type="field" name="street"/> |
56 | 9 | <zip type="field" name="zip"/> | 9 | <zip type="field" name="zip"/> |
57 | 10 | <city type="field" name="city"/> | 10 | <city type="field" name="city"/> |
59 | 11 | <state type="field" name="state_id.name"/> | 11 | <state type="field" name="state"/> |
60 | 12 | <country type="field" name="country_id.name"/> | 12 | <country type="field" name="country_id.name"/> |
61 | 13 | <phone type="field" name="phone"/> | 13 | <phone type="field" name="phone"/> |
62 | 14 | <email type="field" name="email"/> | 14 | <email type="field" name="email"/> |
63 | 15 | 15 | ||
64 | === modified file 'openerp/addons/base/res/res_bank.py' | |||
65 | --- openerp/addons/base/res/res_bank.py 2013-04-12 13:30:08 +0000 | |||
66 | +++ openerp/addons/base/res/res_bank.py 2014-02-26 13:35:37 +0000 | |||
67 | @@ -32,8 +32,7 @@ | |||
68 | 32 | 'street2': fields.char('Street2', size=128), | 32 | 'street2': fields.char('Street2', size=128), |
69 | 33 | 'zip': fields.char('Zip', change_default=True, size=24), | 33 | 'zip': fields.char('Zip', change_default=True, size=24), |
70 | 34 | 'city': fields.char('City', size=128), | 34 | 'city': fields.char('City', size=128), |
73 | 35 | 'state': fields.many2one("res.country.state", 'Fed. State', | 35 | 'state': fields.char('Fed. State'), |
72 | 36 | domain="[('country_id', '=', country)]"), | ||
74 | 37 | 'country': fields.many2one('res.country', 'Country'), | 36 | 'country': fields.many2one('res.country', 'Country'), |
75 | 38 | 'email': fields.char('Email', size=64), | 37 | 'email': fields.char('Email', size=64), |
76 | 39 | 'phone': fields.char('Phone', size=64), | 38 | 'phone': fields.char('Phone', size=64), |
77 | @@ -102,7 +101,7 @@ | |||
78 | 102 | 101 | ||
79 | 103 | def _default_value(self, cursor, user, field, context=None): | 102 | def _default_value(self, cursor, user, field, context=None): |
80 | 104 | if context is None: context = {} | 103 | if context is None: context = {} |
82 | 105 | if field in ('country_id', 'state_id'): | 104 | if field in ('country_id'): |
83 | 106 | value = False | 105 | value = False |
84 | 107 | else: | 106 | else: |
85 | 108 | value = '' | 107 | value = '' |
86 | @@ -130,8 +129,7 @@ | |||
87 | 130 | 'city': fields.char('City', size=128), | 129 | 'city': fields.char('City', size=128), |
88 | 131 | 'country_id': fields.many2one('res.country', 'Country', | 130 | 'country_id': fields.many2one('res.country', 'Country', |
89 | 132 | change_default=True), | 131 | change_default=True), |
92 | 133 | 'state_id': fields.many2one("res.country.state", 'Fed. State', | 132 | 'state': fields.char('Fed. State'), |
91 | 134 | change_default=True, domain="[('country_id','=',country_id)]"), | ||
93 | 135 | 'company_id': fields.many2one('res.company', 'Company', | 133 | 'company_id': fields.many2one('res.company', 'Company', |
94 | 136 | ondelete='cascade', help="Only if this bank account belong to your company"), | 134 | ondelete='cascade', help="Only if this bank account belong to your company"), |
95 | 137 | 'partner_id': fields.many2one('res.partner', 'Account Owner', required=True, | 135 | 'partner_id': fields.many2one('res.partner', 'Account Owner', required=True, |
96 | @@ -153,8 +151,8 @@ | |||
97 | 153 | cursor, user, 'zip', context=context), | 151 | cursor, user, 'zip', context=context), |
98 | 154 | 'country_id': lambda obj, cursor, user, context: obj._default_value( | 152 | 'country_id': lambda obj, cursor, user, context: obj._default_value( |
99 | 155 | cursor, user, 'country_id', context=context), | 153 | cursor, user, 'country_id', context=context), |
102 | 156 | 'state_id': lambda obj, cursor, user, context: obj._default_value( | 154 | 'state': lambda obj, cursor, user, context: obj._default_value( |
103 | 157 | cursor, user, 'state_id', context=context), | 155 | cursor, user, 'state', context=context), |
104 | 158 | 'name': '/' | 156 | 'name': '/' |
105 | 159 | } | 157 | } |
106 | 160 | 158 | ||
107 | @@ -231,7 +229,7 @@ | |||
108 | 231 | result['city'] = part.city or False | 229 | result['city'] = part.city or False |
109 | 232 | result['zip'] = part.zip or False | 230 | result['zip'] = part.zip or False |
110 | 233 | result['country_id'] = part.country_id.id | 231 | result['country_id'] = part.country_id.id |
112 | 234 | result['state_id'] = part.state_id.id | 232 | result['state'] = part.state |
113 | 235 | return {'value': result} | 233 | return {'value': result} |
114 | 236 | 234 | ||
115 | 237 | res_partner_bank() | 235 | res_partner_bank() |
116 | 238 | 236 | ||
117 | === modified file 'openerp/addons/base/res/res_bank_view.xml' | |||
118 | --- openerp/addons/base/res/res_bank_view.xml 2013-06-13 17:54:53 +0000 | |||
119 | +++ openerp/addons/base/res/res_bank_view.xml 2014-02-26 13:35:37 +0000 | |||
120 | @@ -112,7 +112,7 @@ | |||
121 | 112 | <field name="zip" class="oe_inline" placeholder="ZIP"/> | 112 | <field name="zip" class="oe_inline" placeholder="ZIP"/> |
122 | 113 | <field name="city" class="oe_inline" placeholder="City"/> | 113 | <field name="city" class="oe_inline" placeholder="City"/> |
123 | 114 | </div> | 114 | </div> |
125 | 115 | <field name="state_id" placeholder="State" options='{"no_open": True}'/> | 115 | <field name="state" placeholder="State"/> |
126 | 116 | <field name="country_id" placeholder="Country" options='{"no_open": True}'/> | 116 | <field name="country_id" placeholder="Country" options='{"no_open": True}'/> |
127 | 117 | </div> | 117 | </div> |
128 | 118 | </group> | 118 | </group> |
129 | 119 | 119 | ||
130 | === modified file 'openerp/addons/base/res/res_company.py' | |||
131 | --- openerp/addons/base/res/res_company.py 2014-02-20 16:05:48 +0000 | |||
132 | +++ openerp/addons/base/res/res_company.py 2014-02-26 13:35:37 +0000 | |||
133 | @@ -139,7 +139,7 @@ | |||
134 | 139 | 'street2': fields.function(_get_address_data, fnct_inv=_set_address_data, size=128, type='char', string="Street2", multi='address'), | 139 | 'street2': fields.function(_get_address_data, fnct_inv=_set_address_data, size=128, type='char', string="Street2", multi='address'), |
135 | 140 | 'zip': fields.function(_get_address_data, fnct_inv=_set_address_data, size=24, type='char', string="Zip", multi='address'), | 140 | 'zip': fields.function(_get_address_data, fnct_inv=_set_address_data, size=24, type='char', string="Zip", multi='address'), |
136 | 141 | 'city': fields.function(_get_address_data, fnct_inv=_set_address_data, size=24, type='char', string="City", multi='address'), | 141 | 'city': fields.function(_get_address_data, fnct_inv=_set_address_data, size=24, type='char', string="City", multi='address'), |
138 | 142 | 'state_id': fields.function(_get_address_data, fnct_inv=_set_address_data, type='many2one', relation='res.country.state', string="Fed. State", multi='address'), | 142 | 'state': fields.function(_get_address_data, fnct_inv=_set_address_data, type='char', string="Fed. State", multi='address'), |
139 | 143 | 'bank_ids': fields.one2many('res.partner.bank','company_id', 'Bank Accounts', help='Bank accounts related to this company'), | 143 | 'bank_ids': fields.one2many('res.partner.bank','company_id', 'Bank Accounts', help='Bank accounts related to this company'), |
140 | 144 | 'country_id': fields.function(_get_address_data, fnct_inv=_set_address_data, type='many2one', relation='res.country', string="Country", multi='address'), | 144 | 'country_id': fields.function(_get_address_data, fnct_inv=_set_address_data, type='many2one', relation='res.country', string="Country", multi='address'), |
141 | 145 | 'email': fields.related('partner_id', 'email', size=64, type='char', string="Email", store=True), | 145 | 'email': fields.related('partner_id', 'email', size=64, type='char', string="Email", store=True), |
142 | @@ -176,11 +176,7 @@ | |||
143 | 176 | res += '\n%s: %s' % (title, ', '.join(name for id, name in account_names)) | 176 | res += '\n%s: %s' % (title, ', '.join(name for id, name in account_names)) |
144 | 177 | 177 | ||
145 | 178 | return {'value': {'rml_footer': res, 'rml_footer_readonly': res}} | 178 | return {'value': {'rml_footer': res, 'rml_footer_readonly': res}} |
151 | 179 | def onchange_state(self, cr, uid, ids, state_id, context=None): | 179 | |
147 | 180 | if state_id: | ||
148 | 181 | return {'value':{'country_id': self.pool.get('res.country.state').browse(cr, uid, state_id, context).country_id.id }} | ||
149 | 182 | return {} | ||
150 | 183 | |||
152 | 184 | def onchange_font_name(self, cr, uid, ids, font, rml_header, rml_header2, rml_header3, context=None): | 180 | def onchange_font_name(self, cr, uid, ids, font, rml_header, rml_header2, rml_header3, context=None): |
153 | 185 | """ To change default header style of all <para> and drawstring. """ | 181 | """ To change default header style of all <para> and drawstring. """ |
154 | 186 | 182 | ||
155 | @@ -199,15 +195,6 @@ | |||
156 | 199 | 'rml_header3':_change_header(rml_header3, fontname) | 195 | 'rml_header3':_change_header(rml_header3, fontname) |
157 | 200 | }} | 196 | }} |
158 | 201 | 197 | ||
159 | 202 | def on_change_country(self, cr, uid, ids, country_id, context=None): | ||
160 | 203 | res = {'domain': {'state_id': []}} | ||
161 | 204 | currency_id = self._get_euro(cr, uid, context=context) | ||
162 | 205 | if country_id: | ||
163 | 206 | currency_id = self.pool.get('res.country').browse(cr, uid, country_id, context=context).currency_id.id | ||
164 | 207 | res['domain'] = {'state_id': [('country_id','=',country_id)]} | ||
165 | 208 | res['value'] = {'currency_id': currency_id} | ||
166 | 209 | return res | ||
167 | 210 | |||
168 | 211 | def _search(self, cr, uid, args, offset=0, limit=None, order=None, | 198 | def _search(self, cr, uid, args, offset=0, limit=None, order=None, |
169 | 212 | context=None, count=False, access_rights_uid=None): | 199 | context=None, count=False, access_rights_uid=None): |
170 | 213 | if context is None: | 200 | if context is None: |
171 | 214 | 201 | ||
172 | === modified file 'openerp/addons/base/res/res_company_view.xml' | |||
173 | --- openerp/addons/base/res/res_company_view.xml 2014-02-20 16:05:48 +0000 | |||
174 | +++ openerp/addons/base/res/res_company_view.xml 2014-02-26 13:35:37 +0000 | |||
175 | @@ -48,7 +48,7 @@ | |||
176 | 48 | <field name="street2"/> | 48 | <field name="street2"/> |
177 | 49 | <div> | 49 | <div> |
178 | 50 | <field name="city" placeholder="City" style="width: 40%%"/> | 50 | <field name="city" placeholder="City" style="width: 40%%"/> |
180 | 51 | <field name="state_id" class="oe_no_button" placeholder="State" on_change="onchange_state(state_id)" style="width: 24%%" options='{"no_open": True}'/> | 51 | <field name="state" placeholder="State" style="width: 24%%"/> |
181 | 52 | <field name="zip" placeholder="ZIP" style="width: 34%%"/> | 52 | <field name="zip" placeholder="ZIP" style="width: 34%%"/> |
182 | 53 | </div> | 53 | </div> |
183 | 54 | <field name="country_id" placeholder="Country" class="oe_no_button" options='{"no_open": True}' on_change="on_change_country(country_id)"/> | 54 | <field name="country_id" placeholder="Country" class="oe_no_button" options='{"no_open": True}' on_change="on_change_country(country_id)"/> |
184 | 55 | 55 | ||
185 | === modified file 'openerp/addons/base/res/res_country.py' | |||
186 | --- openerp/addons/base/res/res_country.py 2014-01-07 14:15:24 +0000 | |||
187 | +++ openerp/addons/base/res/res_country.py 2014-02-26 13:35:37 +0000 | |||
188 | @@ -82,21 +82,5 @@ | |||
189 | 82 | return super(Country, self).write(cursor, user, ids, vals, | 82 | return super(Country, self).write(cursor, user, ids, vals, |
190 | 83 | context=context) | 83 | context=context) |
191 | 84 | 84 | ||
192 | 85 | |||
193 | 86 | class CountryState(osv.osv): | ||
194 | 87 | _description="Country state" | ||
195 | 88 | _name = 'res.country.state' | ||
196 | 89 | _columns = { | ||
197 | 90 | 'country_id': fields.many2one('res.country', 'Country', | ||
198 | 91 | required=True), | ||
199 | 92 | 'name': fields.char('State Name', size=64, required=True, | ||
200 | 93 | help='Administrative divisions of a country. E.g. Fed. State, Departement, Canton'), | ||
201 | 94 | 'code': fields.char('State Code', size=3, | ||
202 | 95 | help='The state code in max. three chars.', required=True), | ||
203 | 96 | } | ||
204 | 97 | _order = 'code' | ||
205 | 98 | |||
206 | 99 | name_search = location_name_search | ||
207 | 100 | |||
208 | 101 | # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: | 85 | # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: |
209 | 102 | 86 | ||
210 | 103 | 87 | ||
211 | === modified file 'openerp/addons/base/res/res_country_view.xml' | |||
212 | --- openerp/addons/base/res/res_country_view.xml 2012-10-26 06:51:43 +0000 | |||
213 | +++ openerp/addons/base/res/res_country_view.xml 2014-02-26 13:35:37 +0000 | |||
214 | @@ -47,47 +47,5 @@ | |||
215 | 47 | <menuitem id="menu_localisation" name="Localization" parent="menu_config_address_book" sequence="1" groups="base.group_no_one"/> | 47 | <menuitem id="menu_localisation" name="Localization" parent="menu_config_address_book" sequence="1" groups="base.group_no_one"/> |
216 | 48 | 48 | ||
217 | 49 | <menuitem action="action_country" id="menu_country_partner" parent="menu_localisation" sequence="0" groups="base.group_no_one"/> | 49 | <menuitem action="action_country" id="menu_country_partner" parent="menu_localisation" sequence="0" groups="base.group_no_one"/> |
218 | 50 | |||
219 | 51 | <!-- | ||
220 | 52 | State | ||
221 | 53 | --> | ||
222 | 54 | |||
223 | 55 | <record id="view_country_state_tree" model="ir.ui.view"> | ||
224 | 56 | <field name="name">res.country.state.tree</field> | ||
225 | 57 | <field name="model">res.country.state</field> | ||
226 | 58 | <field name="arch" type="xml"> | ||
227 | 59 | <tree string="State"> | ||
228 | 60 | <field name="name"/> | ||
229 | 61 | <field name="code"/> | ||
230 | 62 | <field name="country_id"/> | ||
231 | 63 | </tree> | ||
232 | 64 | </field> | ||
233 | 65 | </record> | ||
234 | 66 | |||
235 | 67 | <record id="view_country_state_form" model="ir.ui.view"> | ||
236 | 68 | <field name="name">res.country.state.form</field> | ||
237 | 69 | <field name="model">res.country.state</field> | ||
238 | 70 | <field name="arch" type="xml"> | ||
239 | 71 | <form string="State" version="7.0"> | ||
240 | 72 | <group> | ||
241 | 73 | <field name="name"/> | ||
242 | 74 | <field name="code"/> | ||
243 | 75 | <field name="country_id" options='{"no_open": True}'/> | ||
244 | 76 | </group> | ||
245 | 77 | </form> | ||
246 | 78 | </field> | ||
247 | 79 | </record> | ||
248 | 80 | |||
249 | 81 | <record id="action_country_state" model="ir.actions.act_window"> | ||
250 | 82 | <field name="name">Fed. States</field> | ||
251 | 83 | <field name="type">ir.actions.act_window</field> | ||
252 | 84 | <field name="res_model">res.country.state</field> | ||
253 | 85 | <field name="view_type">form</field> | ||
254 | 86 | <field name="view_id" ref="view_country_state_tree"/> | ||
255 | 87 | <field name="help">If you are working on the American market, you can manage the different federal states you are working on from here. Each state is attached to one country.</field> | ||
256 | 88 | </record> | ||
257 | 89 | |||
258 | 90 | <menuitem action="action_country_state" id="menu_country_state_partner" parent="menu_localisation" sequence="1" groups="base.group_no_one"/> | ||
259 | 91 | |||
260 | 92 | </data> | 50 | </data> |
261 | 93 | </openerp> | 51 | </openerp> |
262 | 94 | 52 | ||
263 | === modified file 'openerp/addons/base/res/res_partner.py' | |||
264 | --- openerp/addons/base/res/res_partner.py 2014-02-12 08:03:31 +0000 | |||
265 | +++ openerp/addons/base/res/res_partner.py 2014-02-26 13:35:37 +0000 | |||
266 | @@ -36,10 +36,10 @@ | |||
267 | 36 | fmt = user_obj.browse(cr, SUPERUSER_ID, uid, context).company_id.country_id | 36 | fmt = user_obj.browse(cr, SUPERUSER_ID, uid, context).company_id.country_id |
268 | 37 | fmt = fmt and fmt.address_format | 37 | fmt = fmt and fmt.address_format |
269 | 38 | layouts = { | 38 | layouts = { |
271 | 39 | '%(city)s %(state_code)s\n%(zip)s': """ | 39 | '%(city)s\n%(zip)s': """ |
272 | 40 | <div class="address_format"> | 40 | <div class="address_format"> |
273 | 41 | <field name="city" placeholder="City" style="width: 50%%"/> | 41 | <field name="city" placeholder="City" style="width: 50%%"/> |
275 | 42 | <field name="state_id" class="oe_no_button" placeholder="State" style="width: 47%%" options='{"no_open": true}'/> | 42 | <field name="state" placeholder="State" style="width: 47%%"/> |
276 | 43 | <br/> | 43 | <br/> |
277 | 44 | <field name="zip" placeholder="ZIP"/> | 44 | <field name="zip" placeholder="ZIP"/> |
278 | 45 | </div> | 45 | </div> |
279 | @@ -49,13 +49,13 @@ | |||
280 | 49 | <field name="zip" placeholder="ZIP" style="width: 40%%"/> | 49 | <field name="zip" placeholder="ZIP" style="width: 40%%"/> |
281 | 50 | <field name="city" placeholder="City" style="width: 57%%"/> | 50 | <field name="city" placeholder="City" style="width: 57%%"/> |
282 | 51 | <br/> | 51 | <br/> |
284 | 52 | <field name="state_id" class="oe_no_button" placeholder="State" options='{"no_open": true}'/> | 52 | <field name="state" placeholder="State"/> |
285 | 53 | </div> | 53 | </div> |
286 | 54 | """, | 54 | """, |
288 | 55 | '%(city)s\n%(state_name)s\n%(zip)s': """ | 55 | '%(city)s\n%(zip)s': """ |
289 | 56 | <div class="address_format"> | 56 | <div class="address_format"> |
290 | 57 | <field name="city" placeholder="City"/> | 57 | <field name="city" placeholder="City"/> |
292 | 58 | <field name="state_id" class="oe_no_button" placeholder="State" options='{"no_open": true}'/> | 58 | <field name="state" placeholder="State"/> |
293 | 59 | <field name="zip" placeholder="ZIP"/> | 59 | <field name="zip" placeholder="ZIP"/> |
294 | 60 | </div> | 60 | </div> |
295 | 61 | """ | 61 | """ |
296 | @@ -262,7 +262,7 @@ | |||
297 | 262 | 'street2': fields.char('Street2', size=128), | 262 | 'street2': fields.char('Street2', size=128), |
298 | 263 | 'zip': fields.char('Zip', change_default=True, size=24), | 263 | 'zip': fields.char('Zip', change_default=True, size=24), |
299 | 264 | 'city': fields.char('City', size=128), | 264 | 'city': fields.char('City', size=128), |
301 | 265 | 'state_id': fields.many2one("res.country.state", 'State', ondelete='restrict'), | 265 | 'state_id': fields.char('State'), |
302 | 266 | 'country_id': fields.many2one('res.country', 'Country', ondelete='restrict'), | 266 | 'country_id': fields.many2one('res.country', 'Country', ondelete='restrict'), |
303 | 267 | 'country': fields.related('country_id', type='many2one', relation='res.country', string='Country', | 267 | 'country': fields.related('country_id', type='many2one', relation='res.country', string='Country', |
304 | 268 | deprecated="This field will be removed as of OpenERP 7.1, use country_id instead"), | 268 | deprecated="This field will be removed as of OpenERP 7.1, use country_id instead"), |
305 | @@ -384,12 +384,6 @@ | |||
306 | 384 | result['value'] = {'use_parent_address': False} | 384 | result['value'] = {'use_parent_address': False} |
307 | 385 | return result | 385 | return result |
308 | 386 | 386 | ||
309 | 387 | def onchange_state(self, cr, uid, ids, state_id, context=None): | ||
310 | 388 | if state_id: | ||
311 | 389 | country_id = self.pool['res.country.state'].browse(cr, uid, state_id, context).country_id.id | ||
312 | 390 | return {'value':{'country_id':country_id}} | ||
313 | 391 | return {} | ||
314 | 392 | |||
315 | 393 | def _check_ean_key(self, cr, uid, ids, context=None): | 387 | def _check_ean_key(self, cr, uid, ids, context=None): |
316 | 394 | for partner_o in self.pool['res.partner'].read(cr, uid, ids, ['ean13',]): | 388 | for partner_o in self.pool['res.partner'].read(cr, uid, ids, ['ean13',]): |
317 | 395 | thisean=partner_o['ean13'] | 389 | thisean=partner_o['ean13'] |
318 | @@ -749,10 +743,8 @@ | |||
319 | 749 | # get the information that will be injected into the display format | 743 | # get the information that will be injected into the display format |
320 | 750 | # get the address format | 744 | # get the address format |
321 | 751 | address_format = address.country_id and address.country_id.address_format or \ | 745 | address_format = address.country_id and address.country_id.address_format or \ |
323 | 752 | "%(street)s\n%(street2)s\n%(city)s %(state_code)s %(zip)s\n%(country_name)s" | 746 | "%(street)s\n%(street2)s\n%(city)s %(zip)s\n%(country_name)s" |
324 | 753 | args = { | 747 | args = { |
325 | 754 | 'state_code': address.state_id and address.state_id.code or '', | ||
326 | 755 | 'state_name': address.state_id and address.state_id.name or '', | ||
327 | 756 | 'country_code': address.country_id and address.country_id.code or '', | 748 | 'country_code': address.country_id and address.country_id.code or '', |
328 | 757 | 'country_name': address.country_id and address.country_id.name or '', | 749 | 'country_name': address.country_id and address.country_id.name or '', |
329 | 758 | 'company_name': address.parent_id and address.parent_id.name or '', | 750 | 'company_name': address.parent_id and address.parent_id.name or '', |
330 | 759 | 751 | ||
331 | === modified file 'openerp/addons/base/res/res_partner_demo.xml' | |||
332 | --- openerp/addons/base/res/res_partner_demo.xml 2014-01-16 09:17:16 +0000 | |||
333 | +++ openerp/addons/base/res/res_partner_demo.xml 2014-02-26 13:35:37 +0000 | |||
334 | @@ -118,7 +118,6 @@ | |||
335 | 118 | <field name="city">Fremont</field> | 118 | <field name="city">Fremont</field> |
336 | 119 | <field name="zip">94538</field> | 119 | <field name="zip">94538</field> |
337 | 120 | <field name="country_id" ref="base.us"/> | 120 | <field name="country_id" ref="base.us"/> |
338 | 121 | <field model="res.country.state" name="state_id" search="[('code','ilike','ca')]"/> | ||
339 | 122 | <field name="street">3661 Station Street</field> | 121 | <field name="street">3661 Station Street</field> |
340 | 123 | <field name="email">deltapc@yourcompany.example.com</field> | 122 | <field name="email">deltapc@yourcompany.example.com</field> |
341 | 124 | <field name="phone">+1 510 340 2385</field> | 123 | <field name="phone">+1 510 340 2385</field> |
342 | @@ -132,7 +131,6 @@ | |||
343 | 132 | <field name="is_company">1</field> | 131 | <field name="is_company">1</field> |
344 | 133 | <field eval="0" name="customer"/> | 132 | <field eval="0" name="customer"/> |
345 | 134 | <field name="country_id" ref="base.us"/> | 133 | <field name="country_id" ref="base.us"/> |
346 | 135 | <field model="res.country.state" name="state_id" search="[('code','ilike','il')]"/> | ||
347 | 136 | <field name="zip">60610</field> | 134 | <field name="zip">60610</field> |
348 | 137 | <field name="city">Chicago</field> | 135 | <field name="city">Chicago</field> |
349 | 138 | <field name="email">epic@yourcompany.example.com</field> | 136 | <field name="email">epic@yourcompany.example.com</field> |
350 | @@ -150,7 +148,6 @@ | |||
351 | 150 | <field name="zip">90001</field> | 148 | <field name="zip">90001</field> |
352 | 151 | <field name="city">Los Angeles</field> | 149 | <field name="city">Los Angeles</field> |
353 | 152 | <field name="country_id" ref="base.us"/> | 150 | <field name="country_id" ref="base.us"/> |
354 | 153 | <field model="res.country.state" name="state_id" search="[('code','ilike','ca')]"/> | ||
355 | 154 | <field name="street">23 Rockwell Lane</field> | 151 | <field name="street">23 Rockwell Lane</field> |
356 | 155 | <field name="email">openelecapplications@yourcompany.example.com</field> | 152 | <field name="email">openelecapplications@yourcompany.example.com</field> |
357 | 156 | <field name="phone">+1 312 349 2121</field> | 153 | <field name="phone">+1 312 349 2121</field> |
358 | @@ -209,7 +206,6 @@ | |||
359 | 209 | <field name="city">Miami</field> | 206 | <field name="city">Miami</field> |
360 | 210 | <field name="zip">33169</field> | 207 | <field name="zip">33169</field> |
361 | 211 | <field name="country_id" ref="base.us"/> | 208 | <field name="country_id" ref="base.us"/> |
362 | 212 | <field model="res.country.state" name="state_id" search="[('code','=','FL')]"/> | ||
363 | 213 | <field name="email">jackson@yourcompany.example.com</field> | 209 | <field name="email">jackson@yourcompany.example.com</field> |
364 | 214 | <field name="phone">+1 786 525 0724</field> | 210 | <field name="phone">+1 786 525 0724</field> |
365 | 215 | <field name="street">3203 Lamberts Branch Road</field> | 211 | <field name="street">3203 Lamberts Branch Road</field> |
366 | @@ -274,7 +270,6 @@ | |||
367 | 274 | <field name="city">Detroit</field> | 270 | <field name="city">Detroit</field> |
368 | 275 | <field name="zip">48212</field> | 271 | <field name="zip">48212</field> |
369 | 276 | <field name="country_id" ref="base.us"/> | 272 | <field name="country_id" ref="base.us"/> |
370 | 277 | <field model="res.country.state" name="state_id" search="[('code','ilike','mi')]"/> | ||
371 | 278 | <field name="street">60, Rosewood Court</field> | 273 | <field name="street">60, Rosewood Court</field> |
372 | 279 | <field name="email">chamberworks@yourcompany.example.com</field> | 274 | <field name="email">chamberworks@yourcompany.example.com</field> |
373 | 280 | <field name="phone">+1 313 222 3456</field> | 275 | <field name="phone">+1 313 222 3456</field> |
374 | @@ -349,7 +344,6 @@ | |||
375 | 349 | <field name="city">Cupertino</field> | 344 | <field name="city">Cupertino</field> |
376 | 350 | <field name="zip">95014</field> | 345 | <field name="zip">95014</field> |
377 | 351 | <field name="country_id" ref="base.us"/> | 346 | <field name="country_id" ref="base.us"/> |
378 | 352 | <field model="res.country.state" name="state_id" search="[('code','ilike','ca')]"/> | ||
379 | 353 | <field name="street">10200 S. De Anza Blvd</field> | 347 | <field name="street">10200 S. De Anza Blvd</field> |
380 | 354 | <field name="email">seagate@yourcompany.example.com</field> | 348 | <field name="email">seagate@yourcompany.example.com</field> |
381 | 355 | <field name="phone">+1 800 732 4283</field> | 349 | <field name="phone">+1 800 732 4283</field> |
382 | 356 | 350 | ||
383 | === modified file 'openerp/addons/base/res/res_partner_report_address.xml' | |||
384 | --- openerp/addons/base/res/res_partner_report_address.xml 2013-10-06 14:40:20 +0000 | |||
385 | +++ openerp/addons/base/res/res_partner_report_address.xml 2014-02-26 13:35:37 +0000 | |||
386 | @@ -8,7 +8,7 @@ | |||
387 | 8 | <street2 type="field" name="street2"/> | 8 | <street2 type="field" name="street2"/> |
388 | 9 | <zip type="field" name="zip"/> | 9 | <zip type="field" name="zip"/> |
389 | 10 | <city type="field" name="city"/> | 10 | <city type="field" name="city"/> |
391 | 11 | <state type="field" name="state_id.name"/> | 11 | <state type="field" name="state"/> |
392 | 12 | <country type="field" name="country_id.name"/> | 12 | <country type="field" name="country_id.name"/> |
393 | 13 | </address> | 13 | </address> |
394 | 14 | </addresses> | 14 | </addresses> |
395 | 15 | 15 | ||
396 | === modified file 'openerp/addons/base/res/res_partner_view.xml' | |||
397 | --- openerp/addons/base/res/res_partner_view.xml 2014-02-03 16:30:52 +0000 | |||
398 | +++ openerp/addons/base/res/res_partner_view.xml 2014-02-26 13:35:37 +0000 | |||
399 | @@ -166,7 +166,7 @@ | |||
400 | 166 | <field name="street2" attrs="{'readonly': [('use_parent_address','=',True)]}"/> | 166 | <field name="street2" attrs="{'readonly': [('use_parent_address','=',True)]}"/> |
401 | 167 | <div class="address_format"> | 167 | <div class="address_format"> |
402 | 168 | <field name="city" placeholder="City" style="width: 40%%" attrs="{'readonly': [('use_parent_address','=',True)]}"/> | 168 | <field name="city" placeholder="City" style="width: 40%%" attrs="{'readonly': [('use_parent_address','=',True)]}"/> |
404 | 169 | <field name="state_id" class="oe_no_button" placeholder="State" style="width: 37%%" options='{"no_open": True}' on_change="onchange_state(state_id)" attrs="{'readonly': [('use_parent_address','=',True)]}"/> | 169 | <field name="state_id" placeholder="State" style="width: 37%%" attrs="{'readonly': [('use_parent_address','=',True)]}"/> |
405 | 170 | <field name="zip" placeholder="ZIP" style="width: 20%%" attrs="{'readonly': [('use_parent_address','=',True)]}"/> | 170 | <field name="zip" placeholder="ZIP" style="width: 20%%" attrs="{'readonly': [('use_parent_address','=',True)]}"/> |
406 | 171 | </div> | 171 | </div> |
407 | 172 | <field name="country_id" placeholder="Country" class="oe_no_button" options='{"no_open": True}' attrs="{'readonly': [('use_parent_address','=',True)]}"/> | 172 | <field name="country_id" placeholder="Country" class="oe_no_button" options='{"no_open": True}' attrs="{'readonly': [('use_parent_address','=',True)]}"/> |
408 | @@ -281,7 +281,7 @@ | |||
409 | 281 | <field name="street2"/> | 281 | <field name="street2"/> |
410 | 282 | <div class="address_format"> | 282 | <div class="address_format"> |
411 | 283 | <field name="city" placeholder="City" style="width: 40%%"/> | 283 | <field name="city" placeholder="City" style="width: 40%%"/> |
413 | 284 | <field name="state_id" class="oe_no_button" placeholder="State" style="width: 37%%" options='{"no_open": True}' on_change="onchange_state(state_id)"/> | 284 | <field name="state_id" placeholder="State" style="width: 37%%"/> |
414 | 285 | <field name="zip" placeholder="ZIP" style="width: 20%%"/> | 285 | <field name="zip" placeholder="ZIP" style="width: 20%%"/> |
415 | 286 | </div> | 286 | </div> |
416 | 287 | <field name="country_id" placeholder="Country" class="oe_no_button" options='{"no_open": True}'/> | 287 | <field name="country_id" placeholder="Country" class="oe_no_button" options='{"no_open": True}'/> |
417 | 288 | 288 | ||
418 | === modified file 'openerp/addons/base/res/res_users.py' | |||
419 | --- openerp/addons/base/res/res_users.py 2014-02-19 14:06:17 +0000 | |||
420 | +++ openerp/addons/base/res/res_users.py 2014-02-26 13:35:37 +0000 | |||
421 | @@ -172,10 +172,6 @@ | |||
422 | 172 | v = {'email': login} if tools.single_email_re.match(login) else {} | 172 | v = {'email': login} if tools.single_email_re.match(login) else {} |
423 | 173 | return {'value': v} | 173 | return {'value': v} |
424 | 174 | 174 | ||
425 | 175 | def onchange_state(self, cr, uid, ids, state_id, context=None): | ||
426 | 176 | partner_ids = [user.partner_id.id for user in self.browse(cr, uid, ids, context=context)] | ||
427 | 177 | return self.pool.get('res.partner').onchange_state(cr, uid, partner_ids, state_id, context=context) | ||
428 | 178 | |||
429 | 179 | def onchange_type(self, cr, uid, ids, is_company, context=None): | 175 | def onchange_type(self, cr, uid, ids, is_company, context=None): |
430 | 180 | """ Wrapper on the user.partner onchange_type, because some calls to the | 176 | """ Wrapper on the user.partner onchange_type, because some calls to the |
431 | 181 | partner form view applied to the user may trigger the | 177 | partner form view applied to the user may trigger the |
432 | 182 | 178 | ||
433 | === modified file 'openerp/addons/base/security/ir.model.access.csv' | |||
434 | --- openerp/addons/base/security/ir.model.access.csv 2014-01-16 14:06:21 +0000 | |||
435 | +++ openerp/addons/base/security/ir.model.access.csv 2014-02-26 13:35:37 +0000 | |||
436 | @@ -44,9 +44,7 @@ | |||
437 | 44 | "access_res_company_group_erp_manager","res_company group_erp_manager","model_res_company","group_erp_manager",1,1,1,1 | 44 | "access_res_company_group_erp_manager","res_company group_erp_manager","model_res_company","group_erp_manager",1,1,1,1 |
438 | 45 | "access_res_company_group_user","res_company group_user","model_res_company",,1,0,0,0 | 45 | "access_res_company_group_user","res_company group_user","model_res_company",,1,0,0,0 |
439 | 46 | "access_res_country_group_all","res_country group_user_all","model_res_country",,1,0,0,0 | 46 | "access_res_country_group_all","res_country group_user_all","model_res_country",,1,0,0,0 |
440 | 47 | "access_res_country_state_group_all","res_country_state group_user_all","model_res_country_state",,1,0,0,0 | ||
441 | 48 | "access_res_country_group_user","res_country group_user","model_res_country","group_partner_manager",1,1,1,1 | 47 | "access_res_country_group_user","res_country group_user","model_res_country","group_partner_manager",1,1,1,1 |
442 | 49 | "access_res_country_state_group_user","res_country_state group_user","model_res_country_state","group_partner_manager",1,1,1,1 | ||
443 | 50 | "access_res_currency_group_all","res_currency group_all","model_res_currency",,1,0,0,0 | 48 | "access_res_currency_group_all","res_currency group_all","model_res_currency",,1,0,0,0 |
444 | 51 | "access_res_currency_rate_group_all","res_currency_rate group_all","model_res_currency_rate",,1,0,0,0 | 49 | "access_res_currency_rate_group_all","res_currency_rate group_all","model_res_currency_rate",,1,0,0,0 |
445 | 52 | "access_res_currency_rate_type_group_all","res_currency_rate_type group_all","model_res_currency_rate_type",,1,0,0,0 | 50 | "access_res_currency_rate_type_group_all","res_currency_rate_type group_all","model_res_currency_rate_type",,1,0,0,0 |
446 | 53 | 51 | ||
447 | === modified file 'openerp/addons/base/tests/test_expression.py' | |||
448 | --- openerp/addons/base/tests/test_expression.py 2014-02-09 00:37:45 +0000 | |||
449 | +++ openerp/addons/base/tests/test_expression.py 2014-02-26 13:35:37 +0000 | |||
450 | @@ -127,13 +127,10 @@ | |||
451 | 127 | 127 | ||
452 | 128 | # Get models | 128 | # Get models |
453 | 129 | partner_obj = registry('res.partner') | 129 | partner_obj = registry('res.partner') |
454 | 130 | state_obj = registry('res.country.state') | ||
455 | 131 | bank_obj = registry('res.partner.bank') | 130 | bank_obj = registry('res.partner.bank') |
456 | 132 | 131 | ||
457 | 133 | # Get test columns | 132 | # Get test columns |
458 | 134 | partner_state_id_col = partner_obj._columns.get('state_id') # many2one on res.partner to res.country.state | ||
459 | 135 | partner_parent_id_col = partner_obj._columns.get('parent_id') # many2one on res.partner to res.partner | 133 | partner_parent_id_col = partner_obj._columns.get('parent_id') # many2one on res.partner to res.partner |
460 | 136 | state_country_id_col = state_obj._columns.get('country_id') # many2one on res.country.state on res.country | ||
461 | 137 | partner_child_ids_col = partner_obj._columns.get('child_ids') # one2many on res.partner to res.partner | 134 | partner_child_ids_col = partner_obj._columns.get('child_ids') # one2many on res.partner to res.partner |
462 | 138 | partner_bank_ids_col = partner_obj._columns.get('bank_ids') # one2many on res.partner to res.partner.bank | 135 | partner_bank_ids_col = partner_obj._columns.get('bank_ids') # one2many on res.partner to res.partner.bank |
463 | 139 | category_id_col = partner_obj._columns.get('category_id') # many2many on res.partner to res.partner.category | 136 | category_id_col = partner_obj._columns.get('category_id') # many2many on res.partner to res.partner.category |
464 | @@ -142,7 +139,6 @@ | |||
465 | 142 | bank_type = bank_obj._bank_type_get(cr, uid)[0] | 139 | bank_type = bank_obj._bank_type_get(cr, uid)[0] |
466 | 143 | # Get country/state data | 140 | # Get country/state data |
467 | 144 | country_us_id = registry('res.country').search(cr, uid, [('code', 'like', 'US')])[0] | 141 | country_us_id = registry('res.country').search(cr, uid, [('code', 'like', 'US')])[0] |
468 | 145 | state_ids = registry('res.country.state').search(cr, uid, [('country_id', '=', country_us_id)], limit=2) | ||
469 | 146 | 142 | ||
470 | 147 | # Create demo data: partners and bank object | 143 | # Create demo data: partners and bank object |
471 | 148 | p_a = partner_obj.create(cr, uid, {'name': 'test__A', 'state_id': state_ids[0]}) | 144 | p_a = partner_obj.create(cr, uid, {'name': 'test__A', 'state_id': state_ids[0]}) |
472 | 149 | 145 | ||
473 | === modified file 'openerp/addons/base/tests/test_mail_examples.py' | |||
474 | --- openerp/addons/base/tests/test_mail_examples.py 2014-02-09 00:37:45 +0000 | |||
475 | +++ openerp/addons/base/tests/test_mail_examples.py 2014-02-26 13:35:37 +0000 | |||
476 | @@ -49,7 +49,7 @@ | |||
477 | 49 | ${object.company_id.street}<br/> | 49 | ${object.company_id.street}<br/> |
478 | 50 | ${object.company_id.street2}<br/> | 50 | ${object.company_id.street2}<br/> |
479 | 51 | ${object.company_id.zip} ${object.company_id.city}<br/> | 51 | ${object.company_id.zip} ${object.company_id.city}<br/> |
481 | 52 | ${object.company_id.state_id and ('%s, ' % object.company_id.state_id.name) or ''} ${object.company_id.country_id.name or ''}<br/> | 52 | ${object.company_id.state}<br/> |
482 | 53 | </span> | 53 | </span> |
483 | 54 | <div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "> | 54 | <div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "> |
484 | 55 | Phone: ${object.company_id.phone} | 55 | Phone: ${object.company_id.phone} |
485 | 56 | 56 | ||
486 | === modified file 'openerp/addons/base/tests/test_search.py' | |||
487 | --- openerp/addons/base/tests/test_search.py 2012-12-07 15:58:25 +0000 | |||
488 | +++ openerp/addons/base/tests/test_search.py 2014-02-26 13:35:37 +0000 | |||
489 | @@ -68,14 +68,13 @@ | |||
490 | 68 | 68 | ||
491 | 69 | # Get country/state data | 69 | # Get country/state data |
492 | 70 | country_us_id = registry('res.country').search(cr, uid, [('code', 'like', 'US')])[0] | 70 | country_us_id = registry('res.country').search(cr, uid, [('code', 'like', 'US')])[0] |
493 | 71 | state_ids = registry('res.country.state').search(cr, uid, [('country_id', '=', country_us_id)], limit=2) | ||
494 | 72 | country_be_id = registry('res.country').search(cr, uid, [('code', 'like', 'BE')])[0] | 71 | country_be_id = registry('res.country').search(cr, uid, [('code', 'like', 'BE')])[0] |
495 | 73 | 72 | ||
496 | 74 | # Create test users | 73 | # Create test users |
497 | 75 | search_user = users_obj.create(cr, uid, {'name': '__search', 'login': '__search', 'groups_id': [(6, 0, [group_employee_id])]}) | 74 | search_user = users_obj.create(cr, uid, {'name': '__search', 'login': '__search', 'groups_id': [(6, 0, [group_employee_id])]}) |
501 | 76 | a = users_obj.create(cr, uid, {'name': '__test_A', 'login': '__test_A', 'country_id': country_be_id, 'state_id': country_be_id}) | 75 | a = users_obj.create(cr, uid, {'name': '__test_A', 'login': '__test_A', 'country_id': country_be_id}) |
502 | 77 | b = users_obj.create(cr, uid, {'name': '__test_B', 'login': '__a_test_B', 'country_id': country_us_id, 'state_id': state_ids[1]}) | 76 | b = users_obj.create(cr, uid, {'name': '__test_B', 'login': '__a_test_B', 'country_id': country_us_id}) |
503 | 78 | c = users_obj.create(cr, uid, {'name': '__test_B', 'login': '__z_test_B', 'country_id': country_us_id, 'state_id': state_ids[0]}) | 77 | c = users_obj.create(cr, uid, {'name': '__test_B', 'login': '__z_test_B', 'country_id': country_us_id}) |
504 | 79 | 78 | ||
505 | 80 | # Do: search on res.users, order on a field on res.partner to try inherits'd fields, then res.users | 79 | # Do: search on res.users, order on a field on res.partner to try inherits'd fields, then res.users |
506 | 81 | user_ids = users_obj.search(cr, search_user, [], order='name asc, login desc') | 80 | user_ids = users_obj.search(cr, search_user, [], order='name asc, login desc') |
507 | @@ -84,13 +83,13 @@ | |||
508 | 84 | self.assertEqual(test_user_ids, expected_ids, 'search on res_users did not provide expected ids or expected order') | 83 | self.assertEqual(test_user_ids, expected_ids, 'search on res_users did not provide expected ids or expected order') |
509 | 85 | 84 | ||
510 | 86 | # Do: order on many2one and inherits'd fields | 85 | # Do: order on many2one and inherits'd fields |
512 | 87 | user_ids = users_obj.search(cr, search_user, [], order='state_id asc, country_id desc, name asc, login desc') | 86 | user_ids = users_obj.search(cr, search_user, [], order='country_id desc, name asc, login desc') |
513 | 88 | expected_ids = [c, b, a, search_user] | 87 | expected_ids = [c, b, a, search_user] |
514 | 89 | test_user_ids = filter(lambda x: x in expected_ids, user_ids) | 88 | test_user_ids = filter(lambda x: x in expected_ids, user_ids) |
515 | 90 | self.assertEqual(test_user_ids, expected_ids, 'search on res_users did not provide expected ids or expected order') | 89 | self.assertEqual(test_user_ids, expected_ids, 'search on res_users did not provide expected ids or expected order') |
516 | 91 | 90 | ||
517 | 92 | # Do: order on many2one and inherits'd fields | 91 | # Do: order on many2one and inherits'd fields |
519 | 93 | user_ids = users_obj.search(cr, search_user, [], order='country_id desc, state_id desc, name asc, login desc') | 92 | user_ids = users_obj.search(cr, search_user, [], order='country_id desc, name asc, login desc') |
520 | 94 | expected_ids = [search_user, b, c, a] | 93 | expected_ids = [search_user, b, c, a] |
521 | 95 | test_user_ids = filter(lambda x: x in expected_ids, user_ids) | 94 | test_user_ids = filter(lambda x: x in expected_ids, user_ids) |
522 | 96 | self.assertEqual(test_user_ids, expected_ids, 'search on res_users did not provide expected ids or expected order') | 95 | self.assertEqual(test_user_ids, expected_ids, 'search on res_users did not provide expected ids or expected order') |
523 | 97 | 96 | ||
524 | === modified file 'openerp/osv/expression.py' | |||
525 | --- openerp/osv/expression.py 2014-02-06 11:04:23 +0000 | |||
526 | +++ openerp/osv/expression.py 2014-02-26 13:35:37 +0000 | |||
527 | @@ -445,25 +445,20 @@ | |||
528 | 445 | # running examples: | 445 | # running examples: |
529 | 446 | # - res_users.name, like, foo: name is on res_partner, not on res_users | 446 | # - res_users.name, like, foo: name is on res_partner, not on res_users |
530 | 447 | # - res_partner.bank_ids.name, like, foo: bank_ids is a one2many with _auto_join | 447 | # - res_partner.bank_ids.name, like, foo: bank_ids is a one2many with _auto_join |
531 | 448 | # - res_partner.state_id.name, like, foo: state_id is a many2one with _auto_join | ||
532 | 449 | # A join: | 448 | # A join: |
533 | 450 | # - link between src_table and dst_table, using src_field and dst_field | 449 | # - link between src_table and dst_table, using src_field and dst_field |
534 | 451 | # i.e.: inherits: res_users.partner_id = res_partner.id | 450 | # i.e.: inherits: res_users.partner_id = res_partner.id |
535 | 452 | # i.e.: one2many: res_partner.id = res_partner_bank.partner_id | 451 | # i.e.: one2many: res_partner.id = res_partner_bank.partner_id |
536 | 453 | # i.e.: many2one: res_partner.state_id = res_country_state.id | ||
537 | 454 | # - done in the context of a field | 452 | # - done in the context of a field |
538 | 455 | # i.e.: inherits: 'partner_id' | 453 | # i.e.: inherits: 'partner_id' |
539 | 456 | # i.e.: one2many: 'bank_ids' | 454 | # i.e.: one2many: 'bank_ids' |
540 | 457 | # i.e.: many2one: 'state_id' | ||
541 | 458 | # - table names use aliases: initial table followed by the context field | 455 | # - table names use aliases: initial table followed by the context field |
542 | 459 | # names, joined using a '__' | 456 | # names, joined using a '__' |
543 | 460 | # i.e.: inherits: res_partner as res_users__partner_id | 457 | # i.e.: inherits: res_partner as res_users__partner_id |
544 | 461 | # i.e.: one2many: res_partner_bank as res_partner__bank_ids | 458 | # i.e.: one2many: res_partner_bank as res_partner__bank_ids |
545 | 462 | # i.e.: many2one: res_country_state as res_partner__state_id | ||
546 | 463 | # - join condition use aliases | 459 | # - join condition use aliases |
547 | 464 | # i.e.: inherits: res_users.partner_id = res_users__partner_id.id | 460 | # i.e.: inherits: res_users.partner_id = res_users__partner_id.id |
548 | 465 | # i.e.: one2many: res_partner.id = res_partner__bank_ids.parr_id | 461 | # i.e.: one2many: res_partner.id = res_partner__bank_ids.parr_id |
549 | 466 | # i.e.: many2one: res_partner.state_id = res_partner__state_id.id | ||
550 | 467 | # Variables explanation: | 462 | # Variables explanation: |
551 | 468 | # - src_table: working table before the join | 463 | # - src_table: working table before the join |
552 | 469 | # -> res_users, res_partner, res_partner | 464 | # -> res_users, res_partner, res_partner |
553 | @@ -473,7 +468,6 @@ | |||
554 | 473 | # necessarily a field (because 'id' is not a field instance) | 468 | # necessarily a field (because 'id' is not a field instance) |
555 | 474 | # i.e.: inherits: 'partner_id', found in the inherits of the current table | 469 | # i.e.: inherits: 'partner_id', found in the inherits of the current table |
556 | 475 | # i.e.: one2many: 'id', not a field | 470 | # i.e.: one2many: 'id', not a field |
557 | 476 | # i.e.: many2one: 'state_id', the current field name | ||
558 | 477 | # - dst_table_link_name: field name used to link the dst table, not | 471 | # - dst_table_link_name: field name used to link the dst table, not |
559 | 478 | # necessarily a field (because 'id' is not a field instance) | 472 | # necessarily a field (because 'id' is not a field instance) |
560 | 479 | # i.e.: inherits: 'id', not a field | 473 | # i.e.: inherits: 'id', not a field |
561 | @@ -482,7 +476,6 @@ | |||
562 | 482 | # - context_field_name: field name used as a context to make the alias | 476 | # - context_field_name: field name used as a context to make the alias |
563 | 483 | # i.e.: inherits: 'partner_id': found in the inherits of the current table | 477 | # i.e.: inherits: 'partner_id': found in the inherits of the current table |
564 | 484 | # i.e.: one2many: 'bank_ids': current field name | 478 | # i.e.: one2many: 'bank_ids': current field name |
565 | 485 | # i.e.: many2one: 'state_id': current field name | ||
566 | 486 | # -------------------------------------------------- | 479 | # -------------------------------------------------- |
567 | 487 | 480 | ||
568 | 488 | def __init__(self, leaf, model, join_context=None): | 481 | def __init__(self, leaf, model, join_context=None): |
569 | @@ -624,8 +617,6 @@ | |||
570 | 624 | 617 | ||
571 | 625 | :attr list result: list that will hold the result of the parsing | 618 | :attr list result: list that will hold the result of the parsing |
572 | 626 | as a list of ExtendedLeaf | 619 | as a list of ExtendedLeaf |
573 | 627 | :attr list joins: list of join conditions, such as | ||
574 | 628 | (res_country_state."id" = res_partner."state_id") | ||
575 | 629 | :attr root_model: base model for the query | 620 | :attr root_model: base model for the query |
576 | 630 | :attr list expression: the domain expression, that will be normalized | 621 | :attr list expression: the domain expression, that will be normalized |
577 | 631 | and prepared | 622 | and prepared |
578 | @@ -818,7 +809,6 @@ | |||
579 | 818 | # ---------------------------------------- | 809 | # ---------------------------------------- |
580 | 819 | 810 | ||
581 | 820 | elif len(field_path) > 1 and field._type == 'many2one' and field._auto_join: | 811 | elif len(field_path) > 1 and field._type == 'many2one' and field._auto_join: |
582 | 821 | # res_partner.state_id = res_partner__state_id.id | ||
583 | 822 | leaf.add_join_context(relational_model, field_path[0], 'id', field_path[0]) | 812 | leaf.add_join_context(relational_model, field_path[0], 'id', field_path[0]) |
584 | 823 | push(create_substitution_leaf(leaf, (field_path[1], operator, right), relational_model)) | 813 | push(create_substitution_leaf(leaf, (field_path[1], operator, right), relational_model)) |
585 | 824 | 814 |