Merge lp:~openerp-dev/openobject-server/trunk-res-state-cleaning-mme into lp:openobject-server
- trunk-res-state-cleaning-mme
- Merge into trunk
Status: | Needs review |
---|---|
Proposed branch: | lp:~openerp-dev/openobject-server/trunk-res-state-cleaning-mme |
Merge into: | lp:openobject-server |
Diff against target: |
959 lines (+56/-341) 20 files modified
openerp/addons/base/__openerp__.py (+0/-1) openerp/addons/base/report/corporate_defaults.xml (+1/-1) openerp/addons/base/res/res.country.state.csv (+0/-52) 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/-7) openerp/addons/base/res/res_company_view.xml (+1/-1) openerp/addons/base/res/res_country.py (+1/-18) openerp/addons/base/res/res_country_data.xml (+11/-11) openerp/addons/base/res/res_country_view.xml (+0/-41) openerp/addons/base/res/res_partner.py (+10/-16) 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 (+6/-6) 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 (+7/-146) openerp/addons/base/tests/test_mail_examples.py (+1/-1) openerp/addons/base/tests/test_search.py (+7/-9) openerp/osv/expression.py (+1/-9) |
To merge this branch: | bzr merge lp:~openerp-dev/openobject-server/trunk-res-state-cleaning-mme |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
OpenERP Core Team | Pending | ||
Review via email: mp+209912@code.launchpad.net |
Commit message
Description of the change
Hello,
I have clean res.country.state.
- remove res.country.state model
- replace all many2one state_ids field by a char field
Thanks,
Mehul Mehta(mme)
- 5110. By Mehul Mehta(OpenERP)
-
[MERGE] Merged with lp:openobject-server
- 5111. By Mehul Mehta(OpenERP)
-
[IMP] improved a change as per regarding error
- 5112. By Mehul Mehta(OpenERP)
-
[MERGE] Merged with lp:openobject-server
- 5113. By Mehul Mehta(OpenERP)
-
[MERGE] Merged with lp:openobject-server
- 5114. By Mehul Mehta(OpenERP)
-
[MERGE] Merged with lp:openobject-server
- 5115. By Mehul Mehta(OpenERP)
-
[MERGE] Merged with lp:openobject-server
- 5116. By Mehul Mehta(OpenERP)
-
[IMP]improved a code for state field print issue in report
- 5117. By Mehul Mehta(OpenERP)
-
[IMP] improved address_format field in res_country_data file
- 5118. By Mehul Mehta(OpenERP)
-
[MERGE] Merged with lp:openobject-server
- 5119. By Mehul Mehta(OpenERP)
-
[MERGE] Merged lp:openobject-server
- 5120. By Mehul Mehta(OpenERP)
-
[IMP] Improved minor changes in res_partner
- 5121. By Mehul Mehta(OpenERP)
-
[MERGE] Merged openobject-server
Unmerged revisions
- 5121. By Mehul Mehta(OpenERP)
-
[MERGE] Merged openobject-server
- 5120. By Mehul Mehta(OpenERP)
-
[IMP] Improved minor changes in res_partner
- 5119. By Mehul Mehta(OpenERP)
-
[MERGE] Merged lp:openobject-server
- 5118. By Mehul Mehta(OpenERP)
-
[MERGE] Merged with lp:openobject-server
- 5117. By Mehul Mehta(OpenERP)
-
[IMP] improved address_format field in res_country_data file
- 5116. By Mehul Mehta(OpenERP)
-
[IMP]improved a code for state field print issue in report
- 5115. By Mehul Mehta(OpenERP)
-
[MERGE] Merged with lp:openobject-server
- 5114. By Mehul Mehta(OpenERP)
-
[MERGE] Merged with lp:openobject-server
- 5113. By Mehul Mehta(OpenERP)
-
[MERGE] Merged with lp:openobject-server
- 5112. By Mehul Mehta(OpenERP)
-
[MERGE] Merged with lp:openobject-server
Preview Diff
1 | === modified file 'openerp/addons/base/__openerp__.py' |
2 | --- openerp/addons/base/__openerp__.py 2014-05-01 18:42:17 +0000 |
3 | +++ openerp/addons/base/__openerp__.py 2014-05-19 04:38:55 +0000 |
4 | @@ -41,7 +41,6 @@ |
5 | 'base_menu.xml', |
6 | 'res/res_security.xml', |
7 | 'res/res_config.xml', |
8 | - 'res/res.country.state.csv', |
9 | 'ir/ir_actions.xml', |
10 | 'ir/ir_config_parameter_view.xml', |
11 | 'ir/ir_cron_view.xml', |
12 | |
13 | === modified file 'openerp/addons/base/report/corporate_defaults.xml' |
14 | --- openerp/addons/base/report/corporate_defaults.xml 2012-08-20 10:20:22 +0000 |
15 | +++ openerp/addons/base/report/corporate_defaults.xml 2014-05-19 04:38:55 +0000 |
16 | @@ -8,7 +8,7 @@ |
17 | <street type="field" name="street"/> |
18 | <zip type="field" name="zip"/> |
19 | <city type="field" name="city"/> |
20 | - <state type="field" name="state_id.name"/> |
21 | + <state type="field" name="state_name"/> |
22 | <country type="field" name="country_id.name"/> |
23 | <phone type="field" name="phone"/> |
24 | <email type="field" name="email"/> |
25 | |
26 | === removed file 'openerp/addons/base/res/res.country.state.csv' |
27 | --- openerp/addons/base/res/res.country.state.csv 2013-10-06 11:26:08 +0000 |
28 | +++ openerp/addons/base/res/res.country.state.csv 1970-01-01 00:00:00 +0000 |
29 | @@ -1,52 +0,0 @@ |
30 | -"id","country_id:id","name","code" |
31 | -state_us_1,us,"Alabama","AL" |
32 | -state_us_2,us,"Alaska","AK" |
33 | -state_us_3,us,"Arizona","AZ" |
34 | -state_us_4,us,"Arkansas","AR" |
35 | -state_us_5,us,"California","CA" |
36 | -state_us_6,us,"Colorado","CO" |
37 | -state_us_7,us,"Connecticut","CT" |
38 | -state_us_8,us,"Delaware","DE" |
39 | -state_us_9,us,"District of Columbia","DC" |
40 | -state_us_10,us,"Florida","FL" |
41 | -state_us_11,us,"Georgia","GA" |
42 | -state_us_12,us,"Hawaii","HI" |
43 | -state_us_13,us,"Idaho","ID" |
44 | -state_us_14,us,"Illinois","IL" |
45 | -state_us_15,us,"Indiana","IN" |
46 | -state_us_16,us,"Iowa","IA" |
47 | -state_us_17,us,"Kansas","KS" |
48 | -state_us_18,us,"Kentucky","KY" |
49 | -state_us_19,us,"Louisiana","LA" |
50 | -state_us_20,us,"Maine","ME" |
51 | -state_us_21,us,"Montana","MT" |
52 | -state_us_22,us,"Nebraska","NE" |
53 | -state_us_23,us,"Nevada","NV" |
54 | -state_us_24,us,"New Hampshire","NH" |
55 | -state_us_25,us,"New Jersey","NJ" |
56 | -state_us_26,us,"New Mexico","NM" |
57 | -state_us_27,us,"New York","NY" |
58 | -state_us_28,us,"North Carolina","NC" |
59 | -state_us_29,us,"North Dakota","ND" |
60 | -state_us_30,us,"Ohio","OH" |
61 | -state_us_31,us,"Oklahoma","OK" |
62 | -state_us_32,us,"Oregon","OR" |
63 | -state_us_33,us,"Maryland","MD" |
64 | -state_us_34,us,"Massachusetts","MA" |
65 | -state_us_35,us,"Michigan","MI" |
66 | -state_us_36,us,"Minnesota","MN" |
67 | -state_us_37,us,"Mississippi","MS" |
68 | -state_us_38,us,"Missouri","MO" |
69 | -state_us_39,us,"Pennsylvania","PA" |
70 | -state_us_40,us,"Rhode Island","RI" |
71 | -state_us_41,us,"South Carolina","SC" |
72 | -state_us_42,us,"South Dakota","SD" |
73 | -state_us_43,us,"Tennessee","TN" |
74 | -state_us_44,us,"Texas","TX" |
75 | -state_us_45,us,"Utah","UT" |
76 | -state_us_46,us,"Vermont","VT" |
77 | -state_us_47,us,"Virginia","VA" |
78 | -state_us_48,us,"Washington","WA" |
79 | -state_us_49,us,"West Virginia","WV" |
80 | -state_us_50,us,"Wisconsin","WI" |
81 | -state_us_51,us,"Wyoming","WY" |
82 | |
83 | === modified file 'openerp/addons/base/res/res_bank.py' |
84 | --- openerp/addons/base/res/res_bank.py 2014-05-01 18:42:17 +0000 |
85 | +++ openerp/addons/base/res/res_bank.py 2014-05-19 04:38:55 +0000 |
86 | @@ -32,8 +32,7 @@ |
87 | 'street2': fields.char('Street2', size=128), |
88 | 'zip': fields.char('Zip', change_default=True, size=24), |
89 | 'city': fields.char('City', size=128), |
90 | - 'state': fields.many2one("res.country.state", 'Fed. State', |
91 | - domain="[('country_id', '=', country)]"), |
92 | + 'state': fields.char('Fed. State', size=32), |
93 | 'country': fields.many2one('res.country', 'Country'), |
94 | 'email': fields.char('Email', size=64), |
95 | 'phone': fields.char('Phone', size=64), |
96 | @@ -96,7 +95,7 @@ |
97 | |
98 | def _default_value(self, cursor, user, field, context=None): |
99 | if context is None: context = {} |
100 | - if field in ('country_id', 'state_id'): |
101 | + if field in ('country_id', 'state_name'): |
102 | value = False |
103 | else: |
104 | value = '' |
105 | @@ -124,8 +123,7 @@ |
106 | 'city': fields.char('City', size=128), |
107 | 'country_id': fields.many2one('res.country', 'Country', |
108 | change_default=True), |
109 | - 'state_id': fields.many2one("res.country.state", 'Fed. State', |
110 | - change_default=True, domain="[('country_id','=',country_id)]"), |
111 | + 'state_name': fields.char('Fed. State', size=32), |
112 | 'company_id': fields.many2one('res.company', 'Company', |
113 | ondelete='cascade', help="Only if this bank account belong to your company"), |
114 | 'partner_id': fields.many2one('res.partner', 'Account Owner', required=True, |
115 | @@ -147,8 +145,8 @@ |
116 | cursor, user, 'zip', context=context), |
117 | 'country_id': lambda obj, cursor, user, context: obj._default_value( |
118 | cursor, user, 'country_id', context=context), |
119 | - 'state_id': lambda obj, cursor, user, context: obj._default_value( |
120 | - cursor, user, 'state_id', context=context), |
121 | + 'state_name': lambda obj, cursor, user, context: obj._default_value( |
122 | + cursor, user, 'state_name', context=context), |
123 | 'name': '/' |
124 | } |
125 | |
126 | @@ -225,7 +223,7 @@ |
127 | result['city'] = part.city or False |
128 | result['zip'] = part.zip or False |
129 | result['country_id'] = part.country_id.id |
130 | - result['state_id'] = part.state_id.id |
131 | + result['state_name'] = part.state_name or False |
132 | return {'value': result} |
133 | |
134 | # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: |
135 | |
136 | === modified file 'openerp/addons/base/res/res_bank_view.xml' |
137 | --- openerp/addons/base/res/res_bank_view.xml 2014-04-11 13:15:01 +0000 |
138 | +++ openerp/addons/base/res/res_bank_view.xml 2014-05-19 04:38:55 +0000 |
139 | @@ -113,7 +113,7 @@ |
140 | <field name="zip" class="oe_inline" placeholder="ZIP"/> |
141 | <field name="city" class="oe_inline" placeholder="City"/> |
142 | </div> |
143 | - <field name="state_id" placeholder="State" options='{"no_open": True}'/> |
144 | + <field name="state_name" placeholder="State"/> |
145 | <field name="country_id" placeholder="Country" options='{"no_open": True}'/> |
146 | </div> |
147 | </group> |
148 | |
149 | === modified file 'openerp/addons/base/res/res_company.py' |
150 | --- openerp/addons/base/res/res_company.py 2014-03-11 13:38:50 +0000 |
151 | +++ openerp/addons/base/res/res_company.py 2014-05-19 04:38:55 +0000 |
152 | @@ -139,7 +139,7 @@ |
153 | 'street2': fields.function(_get_address_data, fnct_inv=_set_address_data, size=128, type='char', string="Street2", multi='address'), |
154 | 'zip': fields.function(_get_address_data, fnct_inv=_set_address_data, size=24, type='char', string="Zip", multi='address'), |
155 | 'city': fields.function(_get_address_data, fnct_inv=_set_address_data, size=24, type='char', string="City", multi='address'), |
156 | - 'state_id': fields.function(_get_address_data, fnct_inv=_set_address_data, type='many2one', relation='res.country.state', string="Fed. State", multi='address'), |
157 | + 'state_name': fields.function(_get_address_data, fnct_inv=_set_address_data, size=32, type='char', string="Fed. State", multi='address'), |
158 | 'bank_ids': fields.one2many('res.partner.bank','company_id', 'Bank Accounts', help='Bank accounts related to this company'), |
159 | 'country_id': fields.function(_get_address_data, fnct_inv=_set_address_data, type='many2one', relation='res.country', string="Country", multi='address'), |
160 | 'email': fields.related('partner_id', 'email', size=64, type='char', string="Email", store=True), |
161 | @@ -176,10 +176,6 @@ |
162 | res += '\n%s: %s' % (title, ', '.join(name for id, name in account_names)) |
163 | |
164 | return {'value': {'rml_footer': res, 'rml_footer_readonly': res}} |
165 | - def onchange_state(self, cr, uid, ids, state_id, context=None): |
166 | - if state_id: |
167 | - return {'value':{'country_id': self.pool.get('res.country.state').browse(cr, uid, state_id, context).country_id.id }} |
168 | - return {} |
169 | |
170 | def onchange_font_name(self, cr, uid, ids, font, rml_header, rml_header2, rml_header3, context=None): |
171 | """ To change default header style of all <para> and drawstring. """ |
172 | @@ -200,11 +196,10 @@ |
173 | }} |
174 | |
175 | def on_change_country(self, cr, uid, ids, country_id, context=None): |
176 | - res = {'domain': {'state_id': []}} |
177 | + res = {} |
178 | currency_id = self._get_euro(cr, uid, context=context) |
179 | if country_id: |
180 | currency_id = self.pool.get('res.country').browse(cr, uid, country_id, context=context).currency_id.id |
181 | - res['domain'] = {'state_id': [('country_id','=',country_id)]} |
182 | res['value'] = {'currency_id': currency_id} |
183 | return res |
184 | |
185 | |
186 | === modified file 'openerp/addons/base/res/res_company_view.xml' |
187 | --- openerp/addons/base/res/res_company_view.xml 2014-04-23 13:26:35 +0000 |
188 | +++ openerp/addons/base/res/res_company_view.xml 2014-05-19 04:38:55 +0000 |
189 | @@ -48,7 +48,7 @@ |
190 | <field name="street2"/> |
191 | <div> |
192 | <field name="city" placeholder="City" style="width: 40%%"/> |
193 | - <field name="state_id" class="oe_no_button" placeholder="State" on_change="onchange_state(state_id)" style="width: 24%%" options='{"no_open": True}'/> |
194 | + <field name="state_name" placeholder="State" style="width: 24%%"/> |
195 | <field name="zip" placeholder="ZIP" style="width: 34%%"/> |
196 | </div> |
197 | <field name="country_id" placeholder="Country" class="oe_no_button" options='{"no_open": True}' on_change="on_change_country(country_id)"/> |
198 | |
199 | === modified file 'openerp/addons/base/res/res_country.py' |
200 | --- openerp/addons/base/res/res_country.py 2014-02-25 09:13:58 +0000 |
201 | +++ openerp/addons/base/res/res_country.py 2014-05-19 04:38:55 +0000 |
202 | @@ -52,7 +52,6 @@ |
203 | addresses belonging to this country.\n\nYou can use the python-style string patern with all the field of the address \ |
204 | (for example, use '%(street)s' to display the field 'street') plus |
205 | \n%(state_name)s: the name of the state |
206 | - \n%(state_code)s: the code of the state |
207 | \n%(country_name)s: the name of the country |
208 | \n%(country_code)s: the code of the country"""), |
209 | 'currency_id': fields.many2one('res.currency', 'Currency'), |
210 | @@ -65,7 +64,7 @@ |
211 | 'The code of the country must be unique !') |
212 | ] |
213 | _defaults = { |
214 | - 'address_format': "%(street)s\n%(street2)s\n%(city)s %(state_code)s %(zip)s\n%(country_name)s", |
215 | + 'address_format': "%(street)s\n%(street2)s\n%(city)s %(state_name)s %(zip)s\n%(country_name)s", |
216 | } |
217 | _order='name' |
218 | |
219 | @@ -83,21 +82,5 @@ |
220 | return super(Country, self).write(cursor, user, ids, vals, |
221 | context=context) |
222 | |
223 | - |
224 | -class CountryState(osv.osv): |
225 | - _description="Country state" |
226 | - _name = 'res.country.state' |
227 | - _columns = { |
228 | - 'country_id': fields.many2one('res.country', 'Country', |
229 | - required=True), |
230 | - 'name': fields.char('State Name', size=64, required=True, |
231 | - help='Administrative divisions of a country. E.g. Fed. State, Departement, Canton'), |
232 | - 'code': fields.char('State Code', size=3, |
233 | - help='The state code in max. three chars.', required=True), |
234 | - } |
235 | - _order = 'code' |
236 | - |
237 | - name_search = location_name_search |
238 | - |
239 | # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: |
240 | |
241 | |
242 | === modified file 'openerp/addons/base/res/res_country_data.xml' |
243 | --- openerp/addons/base/res/res_country_data.xml 2014-02-25 09:13:58 +0000 |
244 | +++ openerp/addons/base/res/res_country_data.xml 2014-05-19 04:38:55 +0000 |
245 | @@ -83,7 +83,7 @@ |
246 | <field name="name">Australia</field> |
247 | <field name="code">au</field> |
248 | <field name="image" type="base64" file="base/static/img/country_flags/au.png"></field> |
249 | - <field name="address_format" eval="'%(street)s\n%(street2)s\n%(city)s %(state_code)s %(zip)s\n%(country_name)s'" /> |
250 | + <field name="address_format" eval="'%(street)s\n%(street2)s\n%(city)s %(state_name)s %(zip)s\n%(country_name)s'" /> |
251 | <field name="currency_id" ref="AUD"/> |
252 | </record> |
253 | <record id="aw" model="res.country"> |
254 | @@ -126,7 +126,7 @@ |
255 | <field name="name">Belgium</field> |
256 | <field name="code">be</field> |
257 | <field name="image" type="base64" file="base/static/img/country_flags/be.png"></field> |
258 | - <field name="address_format" eval="'%(street)s\n%(street2)s\n%(zip)s %(city)s\n%(country_name)s'" /> |
259 | + <field name="address_format" eval="'%(street)s\n%(street2)s\n%(zip)s %(city)s %(state_name)s\n%(country_name)s'" /> |
260 | <field name="currency_id" ref="EUR"/> |
261 | </record> |
262 | <record id="bf" model="res.country"> |
263 | @@ -192,7 +192,7 @@ |
264 | <field name="name">Brazil</field> |
265 | <field name="code">br</field> |
266 | <field name="image" type="base64" file="base/static/img/country_flags/br.png"></field> |
267 | - <field name="address_format" eval="'%(street)s\n%(street2)s\n%(city)s %(state_code)s\n%(zip)s\n%(country_name)s'" /> |
268 | + <field name="address_format" eval="'%(street)s\n%(street2)s\n%(city)s %(state_name)s\n %(zip)s\n%(country_name)s'" /> |
269 | <field name="currency_id" ref="BRL"/> |
270 | </record> |
271 | <record id="bs" model="res.country"> |
272 | @@ -234,7 +234,7 @@ |
273 | <field name="name">Canada</field> |
274 | <field name="code">ca</field> |
275 | <field name="image" type="base64" file="base/static/img/country_flags/ca.png"></field> |
276 | - <field name="address_format" eval="'%(street)s\n%(street2)s\n%(city)s %(state_code)s %(zip)s\n%(country_name)s'" /> |
277 | + <field name="address_format" eval="'%(street)s\n%(street2)s\n%(city)s %(state_name)s %(zip)s\n%(country_name)s'" /> |
278 | <field name="currency_id" ref="CAD"/> |
279 | </record> |
280 | <record id="cc" model="res.country"> |
281 | @@ -349,7 +349,7 @@ |
282 | <field name="name">Germany</field> |
283 | <field name="code">de</field> |
284 | <field name="image" type="base64" file="base/static/img/country_flags/de.png"></field> |
285 | - <field name="address_format" eval="'%(street)s\n%(street2)s\n%(zip)s %(city)s\n%(country_name)s'" /> |
286 | + <field name="address_format" eval="'%(street)s\n%(street2)s\n%(zip)s %(city)s %(state_name)s\n%(country_name)s'" /> |
287 | <field name="currency_id" ref="EUR"/> |
288 | </record> |
289 | <record id="dj" model="res.country"> |
290 | @@ -415,7 +415,7 @@ |
291 | <field name="name">Spain</field> |
292 | <field name="code">es</field> |
293 | <field name="image" type="base64" file="base/static/img/country_flags/es.png"></field> |
294 | - <field name="address_format" eval="'%(street)s\n%(street2)s\n%(zip)s %(city)s\n%(country_name)s'" /> |
295 | + <field name="address_format" eval="'%(street)s\n%(street2)s\n%(zip)s %(city)s %(state_name)s\n%(country_name)s'" /> |
296 | <field name="currency_id" ref="EUR"/> |
297 | </record> |
298 | <record id="et" model="res.country"> |
299 | @@ -458,7 +458,7 @@ |
300 | <field name="name">France</field> |
301 | <field name="code">fr</field> |
302 | <field name="image" type="base64" file="base/static/img/country_flags/fr.png"></field> |
303 | - <field name="address_format" eval="'%(street)s\n%(street2)s\n%(zip)s %(city)s\n%(country_name)s'" /> |
304 | + <field name="address_format" eval="'%(street)s\n%(street2)s\n%(zip)s %(city)s %(state_name)s\n%(country_name)s'" /> |
305 | <field name="currency_id" ref="EUR"/> |
306 | </record> |
307 | <record id="ga" model="res.country"> |
308 | @@ -630,7 +630,7 @@ |
309 | <field name="name">India</field> |
310 | <field name="code">in</field> |
311 | <field name="image" type="base64" file="base/static/img/country_flags/in.png"></field> |
312 | - <field name="address_format" eval="'%(street)s\n%(street2)s\n%(city)s %(zip)s\n%(state_name)s\n%(country_name)s'" /> |
313 | + <field name="address_format" eval="'%(street)s\n%(street2)s\n%(city)s %(zip)s\n %(state_name)s\n %(country_name)s'" /> |
314 | <field name="currency_id" ref="INR"/> |
315 | </record> |
316 | <record id="io" model="res.country"> |
317 | @@ -996,7 +996,7 @@ |
318 | <field name="name">Netherlands</field> |
319 | <field name="code">nl</field> |
320 | <field name="image" type="base64" file="base/static/img/country_flags/nl.png"></field> |
321 | - <field name="address_format" eval="'%(street)s\n%(street2)s\n%(zip)s %(city)s\n%(country_name)s'" /> |
322 | + <field name="address_format" eval="'%(street)s\n%(street2)s\n%(zip)s %(city)s %(state_name)s\n%(country_name)s'" /> |
323 | <field name="currency_id" ref="EUR"/> |
324 | </record> |
325 | <record id="no" model="res.country"> |
326 | @@ -1393,9 +1393,9 @@ |
327 | </record> |
328 | <record id="uk" model="res.country"> |
329 | <field name="name">United Kingdom</field> |
330 | - <field name="address_format" eval="'%(street)s\n%(street2)s\n%(city)s\n%(state_name)s\n%(zip)s\n%(country_name)s'" /> |
331 | <field name="code">gb</field> |
332 | <field name="image" type="base64" file="base/static/img/country_flags/gb.png"></field> |
333 | + <field name="address_format" eval="'%(street)s\n%(street2)s\n%(city)s\n%(zip)s\n %(state_name)s\n %(country_name)s'" /> |
334 | <field name="currency_id" ref="GBP"/> |
335 | </record> |
336 | <record id="um" model="res.country"> |
337 | @@ -1407,7 +1407,7 @@ |
338 | <field name="name">United States</field> |
339 | <field name="code">us</field> |
340 | <field name="image" type="base64" file="base/static/img/country_flags/us.png"></field> |
341 | - <field name="address_format" eval="'%(street)s\n%(street2)s\n%(city)s, %(state_code)s %(zip)s\n%(country_name)s'" /> |
342 | + <field name="address_format" eval="'%(street)s\n%(street2)s\n%(city)s,%(state_name)s%(zip)s\n%(country_name)s'" /> |
343 | <field name="currency_id" ref="USD"/> |
344 | </record> |
345 | <record id="uy" model="res.country"> |
346 | |
347 | === modified file 'openerp/addons/base/res/res_country_view.xml' |
348 | --- openerp/addons/base/res/res_country_view.xml 2014-04-11 13:15:01 +0000 |
349 | +++ openerp/addons/base/res/res_country_view.xml 2014-05-19 04:38:55 +0000 |
350 | @@ -50,46 +50,5 @@ |
351 | |
352 | <menuitem action="action_country" id="menu_country_partner" parent="menu_localisation" sequence="0" groups="base.group_no_one"/> |
353 | |
354 | - <!-- |
355 | - State |
356 | - --> |
357 | - |
358 | - <record id="view_country_state_tree" model="ir.ui.view"> |
359 | - <field name="name">res.country.state.tree</field> |
360 | - <field name="model">res.country.state</field> |
361 | - <field name="arch" type="xml"> |
362 | - <tree string="State"> |
363 | - <field name="name"/> |
364 | - <field name="code"/> |
365 | - <field name="country_id"/> |
366 | - </tree> |
367 | - </field> |
368 | - </record> |
369 | - |
370 | - <record id="view_country_state_form" model="ir.ui.view"> |
371 | - <field name="name">res.country.state.form</field> |
372 | - <field name="model">res.country.state</field> |
373 | - <field name="arch" type="xml"> |
374 | - <form string="State" version="7.0"> |
375 | - <group> |
376 | - <field name="name"/> |
377 | - <field name="code"/> |
378 | - <field name="country_id" options='{"no_open": True}'/> |
379 | - </group> |
380 | - </form> |
381 | - </field> |
382 | - </record> |
383 | - |
384 | - <record id="action_country_state" model="ir.actions.act_window"> |
385 | - <field name="name">Fed. States</field> |
386 | - <field name="type">ir.actions.act_window</field> |
387 | - <field name="res_model">res.country.state</field> |
388 | - <field name="view_type">form</field> |
389 | - <field name="view_id" ref="view_country_state_tree"/> |
390 | - <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> |
391 | - </record> |
392 | - |
393 | - <menuitem action="action_country_state" id="menu_country_state_partner" parent="menu_localisation" sequence="1" groups="base.group_no_one"/> |
394 | - |
395 | </data> |
396 | </openerp> |
397 | |
398 | === modified file 'openerp/addons/base/res/res_partner.py' |
399 | --- openerp/addons/base/res/res_partner.py 2014-04-17 14:55:22 +0000 |
400 | +++ openerp/addons/base/res/res_partner.py 2014-05-19 04:38:55 +0000 |
401 | @@ -37,10 +37,10 @@ |
402 | fmt = user_obj.browse(cr, SUPERUSER_ID, uid, context).company_id.country_id |
403 | fmt = fmt and fmt.address_format |
404 | layouts = { |
405 | - '%(city)s %(state_code)s\n%(zip)s': """ |
406 | + '%(city)s %(state_name)s\n%(zip)s': """ |
407 | <div class="address_format"> |
408 | <field name="city" placeholder="City" style="width: 50%%"/> |
409 | - <field name="state_id" class="oe_no_button" placeholder="State" style="width: 47%%" options='{"no_open": true}'/> |
410 | + <field name="state_name" class="oe_no_button" placeholder="State" style="width: 47%%"/> |
411 | <br/> |
412 | <field name="zip" placeholder="ZIP"/> |
413 | </div> |
414 | @@ -50,13 +50,13 @@ |
415 | <field name="zip" placeholder="ZIP" style="width: 40%%"/> |
416 | <field name="city" placeholder="City" style="width: 57%%"/> |
417 | <br/> |
418 | - <field name="state_id" class="oe_no_button" placeholder="State" options='{"no_open": true}'/> |
419 | + <field name="state_name" class="oe_no_button" placeholder="State"/> |
420 | </div> |
421 | """, |
422 | '%(city)s\n%(state_name)s\n%(zip)s': """ |
423 | <div class="address_format"> |
424 | <field name="city" placeholder="City"/> |
425 | - <field name="state_id" class="oe_no_button" placeholder="State" options='{"no_open": true}'/> |
426 | + <field name="state_name" class="oe_no_button" placeholder="State"/> |
427 | <field name="zip" placeholder="ZIP"/> |
428 | </div> |
429 | """ |
430 | @@ -70,6 +70,7 @@ |
431 | arch = etree.tostring(doc) |
432 | break |
433 | return arch |
434 | + |
435 | |
436 | |
437 | def _tz_get(self,cr,uid, context=None): |
438 | @@ -161,7 +162,7 @@ |
439 | return [(r['code'], r['name']) for r in res] |
440 | |
441 | # fields copy if 'use_parent_address' is checked |
442 | -ADDRESS_FIELDS = ('street', 'street2', 'zip', 'city', 'state_id', 'country_id') |
443 | +ADDRESS_FIELDS = ('street', 'street2', 'zip', 'city', 'state_name', 'country_id') |
444 | |
445 | class res_partner(osv.osv, format_address): |
446 | _description = 'Partner' |
447 | @@ -263,7 +264,7 @@ |
448 | 'street2': fields.char('Street2', size=128), |
449 | 'zip': fields.char('Zip', change_default=True, size=24), |
450 | 'city': fields.char('City', size=128), |
451 | - 'state_id': fields.many2one("res.country.state", 'State', ondelete='restrict'), |
452 | + 'state_name': fields.char('State', size=32), |
453 | 'country_id': fields.many2one('res.country', 'Country', ondelete='restrict'), |
454 | 'country': fields.related('country_id', type='many2one', relation='res.country', string='Country', |
455 | deprecated="This field will be removed as of OpenERP 7.1, use country_id instead"), |
456 | @@ -388,12 +389,6 @@ |
457 | result['value'] = {'use_parent_address': False} |
458 | return result |
459 | |
460 | - def onchange_state(self, cr, uid, ids, state_id, context=None): |
461 | - if state_id: |
462 | - country_id = self.pool['res.country.state'].browse(cr, uid, state_id, context).country_id.id |
463 | - return {'value':{'country_id':country_id}} |
464 | - return {} |
465 | - |
466 | def _check_ean_key(self, cr, uid, ids, context=None): |
467 | for partner_o in self.pool['res.partner'].read(cr, uid, ids, ['ean13',]): |
468 | thisean=partner_o['ean13'] |
469 | @@ -726,7 +721,7 @@ |
470 | # default to type 'default' or the partner itself |
471 | default = result.get('default', partner.id) |
472 | for adr_type in adr_pref: |
473 | - result[adr_type] = result.get(adr_type) or default |
474 | + result[adr_type] = result.get(adr_type) or default |
475 | return result |
476 | |
477 | def view_header_get(self, cr, uid, view_id, view_type, context): |
478 | @@ -760,10 +755,9 @@ |
479 | # get the information that will be injected into the display format |
480 | # get the address format |
481 | address_format = address.country_id and address.country_id.address_format or \ |
482 | - "%(street)s\n%(street2)s\n%(city)s %(state_code)s %(zip)s\n%(country_name)s" |
483 | + "%(street)s\n%(street2)s\n%(city)s %(state_name)s %(zip)s\n%(country_name)s" |
484 | args = { |
485 | - 'state_code': address.state_id and address.state_id.code or '', |
486 | - 'state_name': address.state_id and address.state_id.name or '', |
487 | + 'state_name': address.state_name or '', |
488 | 'country_code': address.country_id and address.country_id.code or '', |
489 | 'country_name': address.country_id and address.country_id.name or '', |
490 | 'company_name': address.parent_id and address.parent_id.name or '', |
491 | |
492 | === modified file 'openerp/addons/base/res/res_partner_demo.xml' |
493 | --- openerp/addons/base/res/res_partner_demo.xml 2014-04-08 08:16:48 +0000 |
494 | +++ openerp/addons/base/res/res_partner_demo.xml 2014-05-19 04:38:55 +0000 |
495 | @@ -118,7 +118,6 @@ |
496 | <field name="city">Fremont</field> |
497 | <field name="zip">94538</field> |
498 | <field name="country_id" ref="base.us"/> |
499 | - <field model="res.country.state" name="state_id" search="[('code','ilike','ca')]"/> |
500 | <field name="street">3661 Station Street</field> |
501 | <field name="email">deltapc@yourcompany.example.com</field> |
502 | <field name="phone">+1 510 340 2385</field> |
503 | @@ -132,7 +131,6 @@ |
504 | <field name="is_company">1</field> |
505 | <field eval="0" name="customer"/> |
506 | <field name="country_id" ref="base.us"/> |
507 | - <field model="res.country.state" name="state_id" search="[('code','ilike','il')]"/> |
508 | <field name="zip">60610</field> |
509 | <field name="city">Chicago</field> |
510 | <field name="email">epic@yourcompany.example.com</field> |
511 | @@ -150,7 +148,6 @@ |
512 | <field name="zip">90001</field> |
513 | <field name="city">Los Angeles</field> |
514 | <field name="country_id" ref="base.us"/> |
515 | - <field model="res.country.state" name="state_id" search="[('code','ilike','ca')]"/> |
516 | <field name="street">23 Rockwell Lane</field> |
517 | <field name="email">openelecapplications@yourcompany.example.com</field> |
518 | <field name="phone">+1 312 349 2121</field> |
519 | @@ -209,7 +206,6 @@ |
520 | <field name="city">Miami</field> |
521 | <field name="zip">33169</field> |
522 | <field name="country_id" ref="base.us"/> |
523 | - <field model="res.country.state" name="state_id" search="[('code','=','FL')]"/> |
524 | <field name="email">jackson@yourcompany.example.com</field> |
525 | <field name="phone">+1 786 525 0724</field> |
526 | <field name="street">3203 Lamberts Branch Road</field> |
527 | @@ -274,7 +270,6 @@ |
528 | <field name="city">Detroit</field> |
529 | <field name="zip">48212</field> |
530 | <field name="country_id" ref="base.us"/> |
531 | - <field model="res.country.state" name="state_id" search="[('code','ilike','mi')]"/> |
532 | <field name="street">60, Rosewood Court</field> |
533 | <field name="email">chamberworks@yourcompany.example.com</field> |
534 | <field name="phone">+1 313 222 3456</field> |
535 | @@ -349,7 +344,6 @@ |
536 | <field name="city">Cupertino</field> |
537 | <field name="zip">95014</field> |
538 | <field name="country_id" ref="base.us"/> |
539 | - <field model="res.country.state" name="state_id" search="[('code','ilike','ca')]"/> |
540 | <field name="street">10200 S. De Anza Blvd</field> |
541 | <field name="email">seagate@yourcompany.example.com</field> |
542 | <field name="phone">+1 800 732 4283</field> |
543 | |
544 | === modified file 'openerp/addons/base/res/res_partner_report_address.xml' |
545 | --- openerp/addons/base/res/res_partner_report_address.xml 2013-10-06 14:40:20 +0000 |
546 | +++ openerp/addons/base/res/res_partner_report_address.xml 2014-05-19 04:38:55 +0000 |
547 | @@ -8,7 +8,7 @@ |
548 | <street2 type="field" name="street2"/> |
549 | <zip type="field" name="zip"/> |
550 | <city type="field" name="city"/> |
551 | - <state type="field" name="state_id.name"/> |
552 | + <state type="field" name="state_name"/> |
553 | <country type="field" name="country_id.name"/> |
554 | </address> |
555 | </addresses> |
556 | |
557 | === modified file 'openerp/addons/base/res/res_partner_view.xml' |
558 | --- openerp/addons/base/res/res_partner_view.xml 2014-05-12 08:05:23 +0000 |
559 | +++ openerp/addons/base/res/res_partner_view.xml 2014-05-19 04:38:55 +0000 |
560 | @@ -168,7 +168,7 @@ |
561 | <field name="street2" attrs="{'readonly': [('use_parent_address','=',True)]}"/> |
562 | <div class="address_format"> |
563 | <field name="city" placeholder="City" style="width: 40%%" attrs="{'readonly': [('use_parent_address','=',True)]}"/> |
564 | - <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)]}"/> |
565 | + <field name="state_name" placeholder="State" style="width: 37%%" attrs="{'readonly': [('use_parent_address','=',True)]}"/> |
566 | <field name="zip" placeholder="ZIP" style="width: 20%%" attrs="{'readonly': [('use_parent_address','=',True)]}"/> |
567 | </div> |
568 | <field name="country_id" placeholder="Country" class="oe_no_button" options='{"no_open": True}' attrs="{'readonly': [('use_parent_address','=',True)]}"/> |
569 | @@ -190,7 +190,7 @@ |
570 | |
571 | <notebook colspan="4"> |
572 | <page string="Contacts" attrs="{'invisible': [('is_company','=',False), ('child_ids', '=', [])]}" autofocus="autofocus"> |
573 | - <field name="child_ids" mode="kanban" context="{'default_parent_id': active_id, 'default_street': street, 'default_street2': street2, 'default_city': city, 'default_state_id': state_id, 'default_zip': zip, 'default_country_id': country_id, 'default_supplier': supplier, 'default_customer': customer, 'default_use_parent_address': True}"> |
574 | + <field name="child_ids" mode="kanban" context="{'default_parent_id': active_id, 'default_street': street, 'default_street2': street2, 'default_city': city, 'default_zip': zip, 'default_state_name': state_name, 'default_country_id': country_id, 'default_supplier': supplier, 'default_customer': customer}"> |
575 | <kanban> |
576 | <field name="color"/> |
577 | <field name="name"/> |
578 | @@ -207,7 +207,7 @@ |
579 | <field name="country_id"/> |
580 | <field name="mobile"/> |
581 | <field name="fax"/> |
582 | - <field name="state_id"/> |
583 | + <field name="state_name"/> |
584 | <field name="has_image"/> |
585 | <templates> |
586 | <t t-name="kanban-box"> |
587 | @@ -279,11 +279,11 @@ |
588 | </div> |
589 | <label for="street" string="Address" attrs="{'invisible': [('use_parent_address','=', True)]}"/> |
590 | <div attrs="{'invisible': [('use_parent_address','=', True)]}" name="div_address"> |
591 | - <field name="street" placeholder="Street..."/> |
592 | + <field name="street" placeholder="Street..."/> |
593 | <field name="street2"/> |
594 | <div class="address_format"> |
595 | <field name="city" placeholder="City" style="width: 40%%"/> |
596 | - <field name="state_id" class="oe_no_button" placeholder="State" style="width: 37%%" options='{"no_open": True}' on_change="onchange_state(state_id)"/> |
597 | + <field name="state_name" placeholder="State" style="width: 37%%"/> |
598 | <field name="zip" placeholder="ZIP" style="width: 20%%"/> |
599 | </div> |
600 | <field name="country_id" placeholder="Country" class="oe_no_button" options='{"no_open": True}'/> |
601 | @@ -372,7 +372,7 @@ |
602 | <field name="city"/> |
603 | <field name="country_id"/> |
604 | <field name="mobile"/> |
605 | - <field name="state_id"/> |
606 | + <field name="state_name"/> |
607 | <field name="category_id"/> |
608 | <field name="has_image"/> |
609 | <templates> |
610 | |
611 | === modified file 'openerp/addons/base/res/res_users.py' |
612 | --- openerp/addons/base/res/res_users.py 2014-05-12 08:05:23 +0000 |
613 | +++ openerp/addons/base/res/res_users.py 2014-05-19 04:38:55 +0000 |
614 | @@ -192,10 +192,6 @@ |
615 | return {'value': {'email': login}} |
616 | return {} |
617 | |
618 | - def onchange_state(self, cr, uid, ids, state_id, context=None): |
619 | - partner_ids = [user.partner_id.id for user in self.browse(cr, uid, ids, context=context)] |
620 | - return self.pool.get('res.partner').onchange_state(cr, uid, partner_ids, state_id, context=context) |
621 | - |
622 | def onchange_type(self, cr, uid, ids, is_company, context=None): |
623 | """ Wrapper on the user.partner onchange_type, because some calls to the |
624 | partner form view applied to the user may trigger the |
625 | |
626 | === modified file 'openerp/addons/base/security/ir.model.access.csv' |
627 | --- openerp/addons/base/security/ir.model.access.csv 2014-03-18 00:29:54 +0000 |
628 | +++ openerp/addons/base/security/ir.model.access.csv 2014-05-19 04:38:55 +0000 |
629 | @@ -44,9 +44,7 @@ |
630 | "access_res_company_group_erp_manager","res_company group_erp_manager","model_res_company","group_erp_manager",1,1,1,1 |
631 | "access_res_company_group_user","res_company group_user","model_res_company",,1,0,0,0 |
632 | "access_res_country_group_all","res_country group_user_all","model_res_country",,1,0,0,0 |
633 | -"access_res_country_state_group_all","res_country_state group_user_all","model_res_country_state",,1,0,0,0 |
634 | "access_res_country_group_user","res_country group_user","model_res_country","group_partner_manager",1,1,1,1 |
635 | -"access_res_country_state_group_user","res_country_state group_user","model_res_country_state","group_partner_manager",1,1,1,1 |
636 | "access_res_currency_group_all","res_currency group_all","model_res_currency",,1,0,0,0 |
637 | "access_res_currency_rate_group_all","res_currency_rate group_all","model_res_currency_rate",,1,0,0,0 |
638 | "access_res_currency_rate_type_group_all","res_currency_rate_type group_all","model_res_currency_rate_type",,1,0,0,0 |
639 | |
640 | === modified file 'openerp/addons/base/tests/test_expression.py' |
641 | --- openerp/addons/base/tests/test_expression.py 2014-04-10 10:54:54 +0000 |
642 | +++ openerp/addons/base/tests/test_expression.py 2014-05-19 04:38:55 +0000 |
643 | @@ -129,13 +129,10 @@ |
644 | |
645 | # Get models |
646 | partner_obj = registry('res.partner') |
647 | - state_obj = registry('res.country.state') |
648 | bank_obj = registry('res.partner.bank') |
649 | |
650 | # Get test columns |
651 | - partner_state_id_col = partner_obj._columns.get('state_id') # many2one on res.partner to res.country.state |
652 | partner_parent_id_col = partner_obj._columns.get('parent_id') # many2one on res.partner to res.partner |
653 | - state_country_id_col = state_obj._columns.get('country_id') # many2one on res.country.state on res.country |
654 | partner_child_ids_col = partner_obj._columns.get('child_ids') # one2many on res.partner to res.partner |
655 | partner_bank_ids_col = partner_obj._columns.get('bank_ids') # one2many on res.partner to res.partner.bank |
656 | category_id_col = partner_obj._columns.get('category_id') # many2many on res.partner to res.partner.category |
657 | @@ -144,14 +141,13 @@ |
658 | bank_type = bank_obj._bank_type_get(cr, uid)[0] |
659 | # Get country/state data |
660 | country_us_id = registry('res.country').search(cr, uid, [('code', 'like', 'US')])[0] |
661 | - state_ids = registry('res.country.state').search(cr, uid, [('country_id', '=', country_us_id)], limit=2) |
662 | |
663 | # Create demo data: partners and bank object |
664 | - p_a = partner_obj.create(cr, uid, {'name': 'test__A', 'state_id': state_ids[0]}) |
665 | - p_b = partner_obj.create(cr, uid, {'name': 'test__B', 'state_id': state_ids[1]}) |
666 | - p_aa = partner_obj.create(cr, uid, {'name': 'test__AA', 'parent_id': p_a, 'state_id': state_ids[0]}) |
667 | - p_ab = partner_obj.create(cr, uid, {'name': 'test__AB', 'parent_id': p_a, 'state_id': state_ids[1]}) |
668 | - p_ba = partner_obj.create(cr, uid, {'name': 'test__BA', 'parent_id': p_b, 'state_id': state_ids[0]}) |
669 | + p_a = partner_obj.create(cr, uid, {'name': 'test__A'}) |
670 | + p_b = partner_obj.create(cr, uid, {'name': 'test__B'}) |
671 | + p_aa = partner_obj.create(cr, uid, {'name': 'test__AA', 'parent_id': p_a}) |
672 | + p_ab = partner_obj.create(cr, uid, {'name': 'test__AB', 'parent_id': p_a}) |
673 | + p_ba = partner_obj.create(cr, uid, {'name': 'test__BA', 'parent_id': p_b}) |
674 | b_aa = bank_obj.create(cr, uid, {'name': '__bank_test_a', 'state': bank_type[0], 'partner_id': p_aa, 'acc_number': '1234'}) |
675 | b_ab = bank_obj.create(cr, uid, {'name': '__bank_test_b', 'state': bank_type[0], 'partner_id': p_ab, 'acc_number': '5678'}) |
676 | b_ba = bank_obj.create(cr, uid, {'name': '__bank_test_b', 'state': bank_type[0], 'partner_id': p_ba, 'acc_number': '9876'}) |
677 | @@ -276,116 +272,7 @@ |
678 | "_auto_join on: ('child_ids.bank_ids.id', 'in', [..]) query incorrect parameter") |
679 | |
680 | # -------------------------------------------------- |
681 | - # Test3: many2one |
682 | - # -------------------------------------------------- |
683 | - |
684 | - name_test = 'US' |
685 | - |
686 | - # Do: many2one without _auto_join |
687 | - self._reinit_mock() |
688 | - partner_ids = partner_obj.search(cr, uid, [('state_id.country_id.code', 'like', name_test)]) |
689 | - # Test result: at least our added data + demo data |
690 | - self.assertTrue(set([p_a, p_b, p_aa, p_ab, p_ba]).issubset(set(partner_ids)), |
691 | - "_auto_join off: ('state_id.country_id.code', 'like', '..') incorrect result") |
692 | - # Test produced queries |
693 | - self.assertEqual(len(self.query_list), 3, |
694 | - "_auto_join off: ('state_id.country_id.code', 'like', '..') should produce 3 queries (1 on res_country, 1 on res_country_state, 1 on res_partner)") |
695 | - |
696 | - # Do: many2one with 1 _auto_join on the first many2one |
697 | - partner_state_id_col._auto_join = True |
698 | - self._reinit_mock() |
699 | - partner_ids = partner_obj.search(cr, uid, [('state_id.country_id.code', 'like', name_test)]) |
700 | - # Test result: at least our added data + demo data |
701 | - self.assertTrue(set([p_a, p_b, p_aa, p_ab, p_ba]).issubset(set(partner_ids)), |
702 | - "_auto_join on for state_id: ('state_id.country_id.code', 'like', '..') incorrect result") |
703 | - # Test produced queries |
704 | - self.assertEqual(len(self.query_list), 2, |
705 | - "_auto_join on for state_id: ('state_id.country_id.code', 'like', '..') should produce 2 query") |
706 | - sql_query = self.query_list[0].get_sql() |
707 | - self.assertIn('"res_country"', sql_query[0], |
708 | - "_auto_join on for state_id: ('state_id.country_id.code', 'like', '..') query 1 incorrect main table") |
709 | - |
710 | - expected = "%s::text like %s" % (unaccent('"res_country"."code"'), unaccent('%s')) |
711 | - self.assertIn(expected, sql_query[1], |
712 | - "_auto_join on for state_id: ('state_id.country_id.code', 'like', '..') query 1 incorrect where condition") |
713 | - |
714 | - self.assertEqual(['%' + name_test + '%'], sql_query[2], |
715 | - "_auto_join on for state_id: ('state_id.country_id.code', 'like', '..') query 1 incorrect parameter") |
716 | - sql_query = self.query_list[1].get_sql() |
717 | - self.assertIn('"res_partner"', sql_query[0], |
718 | - "_auto_join on for state_id: ('state_id.country_id.code', 'like', '..') query 2 incorrect main table") |
719 | - self.assertIn('"res_country_state" as "res_partner__state_id"', sql_query[0], |
720 | - "_auto_join on for state_id: ('state_id.country_id.code', 'like', '..') query 2 incorrect join") |
721 | - self.assertIn('"res_partner__state_id"."country_id" in (%s)', sql_query[1], |
722 | - "_auto_join on for state_id: ('state_id.country_id.code', 'like', '..') query 2 incorrect where condition") |
723 | - self.assertIn('"res_partner"."state_id"="res_partner__state_id"."id"', sql_query[1], |
724 | - "_auto_join on for state_id: ('state_id.country_id.code', 'like', '..') query 2 incorrect join condition") |
725 | - |
726 | - # Do: many2one with 1 _auto_join on the second many2one |
727 | - partner_state_id_col._auto_join = False |
728 | - state_country_id_col._auto_join = True |
729 | - self._reinit_mock() |
730 | - partner_ids = partner_obj.search(cr, uid, [('state_id.country_id.code', 'like', name_test)]) |
731 | - # Test result: at least our added data + demo data |
732 | - self.assertTrue(set([p_a, p_b, p_aa, p_ab, p_ba]).issubset(set(partner_ids)), |
733 | - "_auto_join on for country_id: ('state_id.country_id.code', 'like', '..') incorrect result") |
734 | - # Test produced queries |
735 | - self.assertEqual(len(self.query_list), 2, |
736 | - "_auto_join on for country_id: ('state_id.country_id.code', 'like', '..') should produce 2 query") |
737 | - # -- first query |
738 | - sql_query = self.query_list[0].get_sql() |
739 | - self.assertIn('"res_country_state"', sql_query[0], |
740 | - "_auto_join on for country_id: ('state_id.country_id.code', 'like', '..') query 1 incorrect main table") |
741 | - self.assertIn('"res_country" as "res_country_state__country_id"', sql_query[0], |
742 | - "_auto_join on for country_id: ('state_id.country_id.code', 'like', '..') query 1 incorrect join") |
743 | - |
744 | - expected = "%s::text like %s" % (unaccent('"res_country_state__country_id"."code"'), unaccent('%s')) |
745 | - self.assertIn(expected, sql_query[1], |
746 | - "_auto_join on for country_id: ('state_id.country_id.code', 'like', '..') query 1 incorrect where condition") |
747 | - |
748 | - self.assertIn('"res_country_state"."country_id"="res_country_state__country_id"."id"', sql_query[1], |
749 | - "_auto_join on for country_id: ('state_id.country_id.code', 'like', '..') query 1 incorrect join condition") |
750 | - self.assertEqual(['%' + name_test + '%'], sql_query[2], |
751 | - "_auto_join on for country_id: ('state_id.country_id.code', 'like', '..') query 1 incorrect parameter") |
752 | - # -- second query |
753 | - sql_query = self.query_list[1].get_sql() |
754 | - self.assertIn('"res_partner"', sql_query[0], |
755 | - "_auto_join on for country_id: ('state_id.country_id.code', 'like', '..') query 2 incorrect main table") |
756 | - self.assertIn('"res_partner"."state_id" in', sql_query[1], |
757 | - "_auto_join on for country_id: ('state_id.country_id.code', 'like', '..') query 2 incorrect where condition") |
758 | - |
759 | - # Do: many2one with 2 _auto_join |
760 | - partner_state_id_col._auto_join = True |
761 | - state_country_id_col._auto_join = True |
762 | - self._reinit_mock() |
763 | - partner_ids = partner_obj.search(cr, uid, [('state_id.country_id.code', 'like', name_test)]) |
764 | - # Test result: at least our added data + demo data |
765 | - self.assertTrue(set([p_a, p_b, p_aa, p_ab, p_ba]).issubset(set(partner_ids)), |
766 | - "_auto_join on: ('state_id.country_id.code', 'like', '..') incorrect result") |
767 | - # Test produced queries |
768 | - self.assertEqual(len(self.query_list), 1, |
769 | - "_auto_join on: ('state_id.country_id.code', 'like', '..') should produce 1 query") |
770 | - sql_query = self.query_list[0].get_sql() |
771 | - self.assertIn('"res_partner"', sql_query[0], |
772 | - "_auto_join on: ('state_id.country_id.code', 'like', '..') query incorrect main table") |
773 | - self.assertIn('"res_country_state" as "res_partner__state_id"', sql_query[0], |
774 | - "_auto_join on: ('state_id.country_id.code', 'like', '..') query incorrect join") |
775 | - self.assertIn('"res_country" as "res_partner__state_id__country_id"', sql_query[0], |
776 | - "_auto_join on: ('state_id.country_id.code', 'like', '..') query incorrect join") |
777 | - |
778 | - expected = "%s::text like %s" % (unaccent('"res_partner__state_id__country_id"."code"'), unaccent('%s')) |
779 | - self.assertIn(expected, sql_query[1], |
780 | - "_auto_join on: ('state_id.country_id.code', 'like', '..') query incorrect where condition") |
781 | - |
782 | - self.assertIn('"res_partner"."state_id"="res_partner__state_id"."id"', sql_query[1], |
783 | - "_auto_join on: ('state_id.country_id.code', 'like', '..') query incorrect join condition") |
784 | - self.assertIn('"res_partner__state_id"."country_id"="res_partner__state_id__country_id"."id"', sql_query[1], |
785 | - "_auto_join on: ('state_id.country_id.code', 'like', '..') query incorrect join condition") |
786 | - self.assertEqual(['%' + name_test + '%'], sql_query[2], |
787 | - "_auto_join on: ('state_id.country_id.code', 'like', '..') query incorrect parameter") |
788 | - |
789 | - # -------------------------------------------------- |
790 | - # Test4: domain attribute on one2many fields |
791 | + # Test3: domain attribute on one2many fields |
792 | # -------------------------------------------------- |
793 | |
794 | partner_child_ids_col._auto_join = True |
795 | @@ -418,46 +305,20 @@ |
796 | "_auto_join on one2many with domains incorrect result") |
797 | |
798 | # ---------------------------------------- |
799 | - # Test5: result-based tests |
800 | + # Test4: result-based tests |
801 | # ---------------------------------------- |
802 | |
803 | partner_bank_ids_col._auto_join = False |
804 | partner_child_ids_col._auto_join = False |
805 | - partner_state_id_col._auto_join = False |
806 | partner_parent_id_col._auto_join = False |
807 | - state_country_id_col._auto_join = False |
808 | partner_child_ids_col._domain = [] |
809 | partner_bank_ids_col._domain = [] |
810 | |
811 | - # Do: ('child_ids.state_id.country_id.code', 'like', '..') without _auto_join |
812 | - self._reinit_mock() |
813 | - partner_ids = partner_obj.search(cr, uid, [('child_ids.state_id.country_id.code', 'like', name_test)]) |
814 | - # Test result: at least our added data + demo data |
815 | - self.assertTrue(set([p_a, p_b]).issubset(set(partner_ids)), |
816 | - "_auto_join off: ('child_ids.state_id.country_id.code', 'like', '..') incorrect result") |
817 | - # Test produced queries |
818 | - self.assertEqual(len(self.query_list), 5, |
819 | - "_auto_join off: ('child_ids.state_id.country_id.code', 'like', '..') number of queries incorrect") |
820 | - |
821 | - # Do: ('child_ids.state_id.country_id.code', 'like', '..') with _auto_join |
822 | - partner_child_ids_col._auto_join = True |
823 | - partner_state_id_col._auto_join = True |
824 | - state_country_id_col._auto_join = True |
825 | - self._reinit_mock() |
826 | - partner_ids = partner_obj.search(cr, uid, [('child_ids.state_id.country_id.code', 'like', name_test)]) |
827 | - # Test result: at least our added data + demo data |
828 | - self.assertTrue(set([p_a, p_b]).issubset(set(partner_ids)), |
829 | - "_auto_join on: ('child_ids.state_id.country_id.code', 'like', '..') incorrect result") |
830 | - # Test produced queries |
831 | - self.assertEqual(len(self.query_list), 1, |
832 | - "_auto_join on: ('child_ids.state_id.country_id.code', 'like', '..') number of queries incorrect") |
833 | |
834 | # Remove mocks and modifications |
835 | partner_bank_ids_col._auto_join = False |
836 | partner_child_ids_col._auto_join = False |
837 | - partner_state_id_col._auto_join = False |
838 | partner_parent_id_col._auto_join = False |
839 | - state_country_id_col._auto_join = False |
840 | |
841 | def test_30_normalize_domain(self): |
842 | expression = openerp.osv.expression |
843 | |
844 | === modified file 'openerp/addons/base/tests/test_mail_examples.py' |
845 | --- openerp/addons/base/tests/test_mail_examples.py 2014-02-09 00:37:45 +0000 |
846 | +++ openerp/addons/base/tests/test_mail_examples.py 2014-05-19 04:38:55 +0000 |
847 | @@ -49,7 +49,7 @@ |
848 | ${object.company_id.street}<br/> |
849 | ${object.company_id.street2}<br/> |
850 | ${object.company_id.zip} ${object.company_id.city}<br/> |
851 | - ${object.company_id.state_id and ('%s, ' % object.company_id.state_id.name) or ''} ${object.company_id.country_id.name or ''}<br/> |
852 | + ${('%s, ' % object.company_id.state_name) or ''} ${object.company_id.country_id.name or ''}<br/> |
853 | </span> |
854 | <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; "> |
855 | Phone: ${object.company_id.phone} |
856 | |
857 | === modified file 'openerp/addons/base/tests/test_search.py' |
858 | --- openerp/addons/base/tests/test_search.py 2012-12-07 15:58:25 +0000 |
859 | +++ openerp/addons/base/tests/test_search.py 2014-05-19 04:38:55 +0000 |
860 | @@ -68,15 +68,13 @@ |
861 | |
862 | # Get country/state data |
863 | country_us_id = registry('res.country').search(cr, uid, [('code', 'like', 'US')])[0] |
864 | - state_ids = registry('res.country.state').search(cr, uid, [('country_id', '=', country_us_id)], limit=2) |
865 | country_be_id = registry('res.country').search(cr, uid, [('code', 'like', 'BE')])[0] |
866 | |
867 | # Create test users |
868 | search_user = users_obj.create(cr, uid, {'name': '__search', 'login': '__search', 'groups_id': [(6, 0, [group_employee_id])]}) |
869 | - a = users_obj.create(cr, uid, {'name': '__test_A', 'login': '__test_A', 'country_id': country_be_id, 'state_id': country_be_id}) |
870 | - b = users_obj.create(cr, uid, {'name': '__test_B', 'login': '__a_test_B', 'country_id': country_us_id, 'state_id': state_ids[1]}) |
871 | - c = users_obj.create(cr, uid, {'name': '__test_B', 'login': '__z_test_B', 'country_id': country_us_id, 'state_id': state_ids[0]}) |
872 | - |
873 | + a = users_obj.create(cr, uid, {'name': '__test_A', 'login': '__test_A', 'country_id': country_be_id}) |
874 | + b = users_obj.create(cr, uid, {'name': '__test_B', 'login': '__a_test_B', 'country_id': country_us_id}) |
875 | + c = users_obj.create(cr, uid, {'name': '__test_B', 'login': '__z_test_B', 'country_id': country_us_id}) |
876 | # Do: search on res.users, order on a field on res.partner to try inherits'd fields, then res.users |
877 | user_ids = users_obj.search(cr, search_user, [], order='name asc, login desc') |
878 | expected_ids = [search_user, a, c, b] |
879 | @@ -84,14 +82,14 @@ |
880 | self.assertEqual(test_user_ids, expected_ids, 'search on res_users did not provide expected ids or expected order') |
881 | |
882 | # Do: order on many2one and inherits'd fields |
883 | - user_ids = users_obj.search(cr, search_user, [], order='state_id asc, country_id desc, name asc, login desc') |
884 | - expected_ids = [c, b, a, search_user] |
885 | + user_ids = users_obj.search(cr, search_user, [], order='country_id desc, name asc, login desc') |
886 | + expected_ids = [search_user, c, b, a] |
887 | test_user_ids = filter(lambda x: x in expected_ids, user_ids) |
888 | self.assertEqual(test_user_ids, expected_ids, 'search on res_users did not provide expected ids or expected order') |
889 | |
890 | # Do: order on many2one and inherits'd fields |
891 | - user_ids = users_obj.search(cr, search_user, [], order='country_id desc, state_id desc, name asc, login desc') |
892 | - expected_ids = [search_user, b, c, a] |
893 | + user_ids = users_obj.search(cr, search_user, [], order='country_id desc, name asc, login desc') |
894 | + expected_ids = [search_user, c, b, a] |
895 | test_user_ids = filter(lambda x: x in expected_ids, user_ids) |
896 | self.assertEqual(test_user_ids, expected_ids, 'search on res_users did not provide expected ids or expected order') |
897 | |
898 | |
899 | === modified file 'openerp/osv/expression.py' |
900 | --- openerp/osv/expression.py 2014-04-09 15:35:27 +0000 |
901 | +++ openerp/osv/expression.py 2014-05-19 04:38:55 +0000 |
902 | @@ -449,25 +449,20 @@ |
903 | # running examples: |
904 | # - res_users.name, like, foo: name is on res_partner, not on res_users |
905 | # - res_partner.bank_ids.name, like, foo: bank_ids is a one2many with _auto_join |
906 | - # - res_partner.state_id.name, like, foo: state_id is a many2one with _auto_join |
907 | # A join: |
908 | # - link between src_table and dst_table, using src_field and dst_field |
909 | # i.e.: inherits: res_users.partner_id = res_partner.id |
910 | # i.e.: one2many: res_partner.id = res_partner_bank.partner_id |
911 | - # i.e.: many2one: res_partner.state_id = res_country_state.id |
912 | # - done in the context of a field |
913 | # i.e.: inherits: 'partner_id' |
914 | # i.e.: one2many: 'bank_ids' |
915 | - # i.e.: many2one: 'state_id' |
916 | # - table names use aliases: initial table followed by the context field |
917 | # names, joined using a '__' |
918 | # i.e.: inherits: res_partner as res_users__partner_id |
919 | # i.e.: one2many: res_partner_bank as res_partner__bank_ids |
920 | - # i.e.: many2one: res_country_state as res_partner__state_id |
921 | # - join condition use aliases |
922 | # i.e.: inherits: res_users.partner_id = res_users__partner_id.id |
923 | # i.e.: one2many: res_partner.id = res_partner__bank_ids.parr_id |
924 | - # i.e.: many2one: res_partner.state_id = res_partner__state_id.id |
925 | # Variables explanation: |
926 | # - src_table: working table before the join |
927 | # -> res_users, res_partner, res_partner |
928 | @@ -477,7 +472,6 @@ |
929 | # necessarily a field (because 'id' is not a field instance) |
930 | # i.e.: inherits: 'partner_id', found in the inherits of the current table |
931 | # i.e.: one2many: 'id', not a field |
932 | - # i.e.: many2one: 'state_id', the current field name |
933 | # - dst_table_link_name: field name used to link the dst table, not |
934 | # necessarily a field (because 'id' is not a field instance) |
935 | # i.e.: inherits: 'id', not a field |
936 | @@ -486,7 +480,6 @@ |
937 | # - context_field_name: field name used as a context to make the alias |
938 | # i.e.: inherits: 'partner_id': found in the inherits of the current table |
939 | # i.e.: one2many: 'bank_ids': current field name |
940 | - # i.e.: many2one: 'state_id': current field name |
941 | # -------------------------------------------------- |
942 | |
943 | def __init__(self, leaf, model, join_context=None): |
944 | @@ -629,7 +622,7 @@ |
945 | :attr list result: list that will hold the result of the parsing |
946 | as a list of ExtendedLeaf |
947 | :attr list joins: list of join conditions, such as |
948 | - (res_country_state."id" = res_partner."state_id") |
949 | + (res_country_state."id" = res_partner."state_name") |
950 | :attr root_model: base model for the query |
951 | :attr list expression: the domain expression, that will be normalized |
952 | and prepared |
953 | @@ -822,7 +815,6 @@ |
954 | # ---------------------------------------- |
955 | |
956 | elif len(field_path) > 1 and field._type == 'many2one' and field._auto_join: |
957 | - # res_partner.state_id = res_partner__state_id.id |
958 | leaf.add_join_context(relational_model, field_path[0], 'id', field_path[0]) |
959 | push(create_substitution_leaf(leaf, (field_path[1], operator, right), relational_model)) |
960 |
Puerto Rico is missing from the list of 'states' (it is an unincorporated territory of the United States).
For completeness, the following list adds additional missing state equivalents:
id code name
base.state_us_52 AS American Samoa
base.state_us_53 FM Federated States of Micronesia
base.state_us_54 GU Guam
base.state_us_55 MH Marshall Islands
base.state_us_56 MP Northern Mariana Islands
base.state_us_57 PW Palau
base.state_us_58 PR Puerto Rico
base.state_us_59 VI Virgin Islands
base.state_us_60 AA Armed Forces - Americas
base.state_us_61 AE Armed Forces - Europe
base.state_us_62 AP Armed Forces - Pacific