qdp (OpenERP) has proposed merging 
lp:~openerp-dev/openobject-server/trunk-python-syntax-for-widget-options-qdp 
into lp:openobject-server.

Requested reviews:
  OpenERP Core Team (openerp)

For more details, see:
https://code.launchpad.net/~openerp-dev/openobject-server/trunk-python-syntax-for-widget-options-qdp/+merge/128734

[IMP] osv/orm.py: evaluate in python the 'options' attribute of a field in an 
xml view, before enclosing it in json. 

This allow to use python instead of json syntax in the definition of the 
options of a widget, which is a much more consistent behavior among the whole 
ERP (`True´ instead of `true´, possibility to use simple quotes...)
-- 
https://code.launchpad.net/~openerp-dev/openobject-server/trunk-python-syntax-for-widget-options-qdp/+merge/128734
Your team OpenERP R&D Team is subscribed to branch 
lp:~openerp-dev/openobject-server/trunk-python-syntax-for-widget-options-qdp.
=== modified file 'openerp/addons/base/res/res_bank_view.xml'
--- openerp/addons/base/res/res_bank_view.xml	2012-09-25 09:39:15 +0000
+++ openerp/addons/base/res/res_bank_view.xml	2012-10-09 14:48:21 +0000
@@ -106,8 +106,8 @@
                                     <field name="zip" class="oe_inline" placeholder="ZIP"/>
                                     <field name="city" class="oe_inline" placeholder="City"/>
                                 </div>
-                                <field name="state_id" placeholder="State" options='{"no_open": true}'/>
-                                <field name="country_id" placeholder="Country" options='{"no_open": true}'/>
+                                <field name="state_id" placeholder="State" options='{"no_open": True}'/>
+                                <field name="country_id" placeholder="Country" options='{"no_open": True}'/>
                             </div>
                         </group>
                         <group name="bank" string="Information About the Bank">

=== modified file 'openerp/addons/base/res/res_company_view.xml'
--- openerp/addons/base/res/res_company_view.xml	2012-09-13 12:20:11 +0000
+++ openerp/addons/base/res/res_company_view.xml	2012-10-09 14:48:21 +0000
@@ -46,10 +46,10 @@
                                         <field name="street2"/>
                                         <div>
                                             <field name="city" placeholder="City" style="width: 40%%"/>
-                                            <field name="state_id" class="oe_no_button" placeholder="State" style="width: 24%%" options='{"no_open": true}'/>
+                                            <field name="state_id" class="oe_no_button" placeholder="State" style="width: 24%%" options='{"no_open": True}'/>
                                             <field name="zip" placeholder="ZIP" style="width: 34%%"/>
                                         </div>
-                                        <field name="country_id" placeholder="Country" class="oe_no_button" options='{"no_open": true}' on_change="on_change_country(country_id)"/>
+                                        <field name="country_id" placeholder="Country" class="oe_no_button" options='{"no_open": True}' on_change="on_change_country(country_id)"/>
                                     </div>
                                     <label for="rml_header1"/>
                                     <div>

=== modified file 'openerp/addons/base/res/res_country_view.xml'
--- openerp/addons/base/res/res_country_view.xml	2012-08-20 06:30:58 +0000
+++ openerp/addons/base/res/res_country_view.xml	2012-10-09 14:48:21 +0000
@@ -73,7 +73,7 @@
                     <group>
                         <field name="name"/>
                         <field name="code"/>
-                        <field name="country_id" options='{"no_open": true}'/>
+                        <field name="country_id" options='{"no_open": True}'/>
                     </group>
                 </form>
             </field>

=== modified file 'openerp/addons/base/res/res_partner_view.xml'
--- openerp/addons/base/res/res_partner_view.xml	2012-09-28 05:05:41 +0000
+++ openerp/addons/base/res/res_partner_view.xml	2012-10-09 14:48:21 +0000
@@ -161,10 +161,10 @@
                                 <field name="street2"/>
                                 <div class="address_format">
                                     <field name="city" placeholder="City" style="width: 40%%"/>
-                                    <field name="state_id" class="oe_no_button" placeholder="State" style="width: 37%%" options='{"no_open": true}'/>
+                                    <field name="state_id" class="oe_no_button" placeholder="State" style="width: 37%%" options='{"no_open": True}'/>
                                     <field name="zip" placeholder="ZIP" style="width: 20%%"/>
                                 </div>
-                                <field name="country_id" placeholder="Country" class="oe_no_button" options='{"no_open": true}'/>
+                                <field name="country_id" placeholder="Country" class="oe_no_button" options='{"no_open": True}'/>
                             </div>
                             <field name="website" widget="url" placeholder="e.g. www.openerp.com"/>
                         </group>
@@ -177,7 +177,7 @@
                             <field name="email" widget="email"/>
                             <field name="title" domain="[('domain', '=', 'contact')]"
                                 groups="base.group_no_one"
-                                options='{"no_open": true}' attrs="{'invisible': [('is_company','=', True)]}" />
+                                options='{"no_open": True}' attrs="{'invisible': [('is_company','=', True)]}" />
                         </group>
                     </group>
 

=== modified file 'openerp/osv/orm.py'
--- openerp/osv/orm.py	2012-10-05 12:48:45 +0000
+++ openerp/osv/orm.py	2012-10-09 14:48:21 +0000
@@ -60,7 +60,7 @@
 import openerp.netsvc as netsvc
 import openerp.tools as tools
 from openerp.tools.config import config
-from openerp.tools.safe_eval import safe_eval as eval
+from openerp.tools.safe_eval import const_eval, safe_eval as eval
 from openerp.tools.translate import _
 from openerp import SUPERUSER_ID
 from query import Query
@@ -1732,7 +1732,11 @@
                 field = model_fields.get(node.get('name'))
                 if field:
                     transfer_field_to_modifiers(field, modifiers)
-
+                if node.get('options'):
+                    try:
+                        node.set('options', simplejson.dumps(const_eval(node.get('options'))))
+                    except Exception, msg:
+                        raise except_orm('Invalide Python code in %s'%(node.get('options')), msg[0])
 
         elif node.tag in ('form', 'tree'):
             result = self.view_header_get(cr, user, False, node.tag, context)

=== modified file 'openerp/tools/safe_eval.py'
--- openerp/tools/safe_eval.py	2012-06-05 15:26:30 +0000
+++ openerp/tools/safe_eval.py	2012-10-09 14:48:21 +0000
@@ -46,7 +46,7 @@
 _CONST_OPCODES = set(opmap[x] for x in [
     'POP_TOP', 'ROT_TWO', 'ROT_THREE', 'ROT_FOUR', 'DUP_TOP', 'DUP_TOPX',
     'POP_BLOCK','SETUP_LOOP', 'BUILD_LIST', 'BUILD_MAP', 'BUILD_TUPLE',
-    'LOAD_CONST', 'RETURN_VALUE', 'STORE_SUBSCR'] if x in opmap)
+    'LOAD_CONST', 'RETURN_VALUE', 'STORE_SUBSCR', 'STORE_MAP', 'LOAD_NAME'] if x in opmap)
 
 _EXPR_OPCODES = _CONST_OPCODES.union(set(opmap[x] for x in [
     'UNARY_POSITIVE', 'UNARY_NEGATIVE', 'UNARY_NOT',

_______________________________________________
Mailing list: https://launchpad.net/~openerp-dev-gtk
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~openerp-dev-gtk
More help   : https://help.launchpad.net/ListHelp

Reply via email to