2011-07-04 13 views
5

पर गतिशील दृश्य कैसे बनाएं मुझे गतिशील दृश्य बनाने में सहायता चाहिए। मुझे समझाएं: मेरे पास फॉर्म 1 और फॉर्म 2 विचार हैं। फॉर्म 1 में expression फ़ील्ड और extract बटन शामिल है। फॉर्म 2 में फॉर्म 1 से अभिव्यक्ति के निकाले गए तत्व शामिल हैं। उदाहरण के लिए जब आप Form1 की अभिव्यक्ति क्षेत्र के लिए (a+b)*c-d*0,5 प्रवेश के लिए, Form2 निकालने और प्रदर्शित करना चाहिए इस:OpenERP

(- open brace 
a - variable 
+ - addition 
b - variable 
) - close brace 
* - multiplication 
c - variable 
- - subtraction 
d - variable 
* - multiplication 
0,5 - constant number 

अब, यहाँ मेरी कक्षा है:

<?xml version="1.0" encoding="utf-8"?> 
<openerp> 
    <data> 

     <record id="view_wz_formula" model="ir.ui.view"> 
      <field name="name">Formula</field> 
      <field name="model">wz.formula</field> 
      <field name="type">form</field> 
      <field name="arch" type="xml"> 
       <form string="Formula"> 
        <group colspan="8" col="8" states="init"> 
         <separator string="Formula" colspan="8"/> 
         <field name="state" invisible="1"/> 
         <field name="name"/> 
         <field name="expression" width="220"/> 
         <button special="cancel" string="Cancel" icon="gtk-cancel" colspan="1"/> 
         <button name="next" string="Next" type="object" icon="gtk-ok" colspan="1"/> 
        </group> 
        <group colspan="8" col="8" states="done"> 
         <separator string="Done" colspan="8"/> 
         <button special="cancel" string="Close" icon="gtk-cancel"/> 
        </group> 
       </form> 
      </field> 
     </record> 

     <record id="action_view_wz_formula" model="ir.actions.act_window"> 
      <field name="name">Formula</field> 
      <field name="type">ir.actions.act_window</field> 
      <field name="res_model">wz.formula</field> 
      <field name="view_type">form</field> 
      <field name="view_mode">form</field> 
      <field name="target">new</field> 
     </record> 

     <menuitem 
      name="Create a formula" 
      action="action_view_wz_formula" 
      id="menu_view_wz_formula" 
      parent="menu_fs_root" sequence="2"/> 

    </data> 
</openerp> 
:

class wz_formula(osv.osv_memory): 
    """ 
     Formula Wizard 
    """ 
    _name = "wz.formula" 
    _inherit = "ir.wizard.screen" 
    _description = "Formula Wizard" 

    _columns = { 
      'name': fields.char('Formula name', required=True, size=64) 
      , 'expression': fields.char('expression', required=True, size=64) 
      , 'state': fields.selection([('init','init'),('done','done')], 'state', readonly=True) 
    } 

    _defaults = { 
      'state': 'init' 
    } 

    def next(self, cr, uid, ids, context=None): 
     if context is None: 
      context = {} 
     formula_obj = self.browse(cr, uid, ids)[0] 
     formula_name = formula_obj.name 
     infix = formula_obj.expression 
     if formula_name and expression: 
      modobj = self.pool.get('ir.module.module') 
      mids = modobj.search(cr, uid, [('state', '=', 'installed')]) 
      modobj.update_translations(cr, uid, mids, [formula_name, expression], context or {}) 
      self.write(cr, uid, ids, {'state': 'done'}, context=context) 
     return { 
      'name': _('Formula') 
      , 'view_type': 'form' 
      , 'view_mode': 'form' 
      , 'view_id': False 
      , 'res_model': 'wz.formula' 
      , 'domain': [] 
      , 'context': dict(context, active_ids=ids) 
      , 'type': 'ir.actions.act_window' 
      , 'target': 'new' 
      , 'res_id': ids and ids[0] or False 
     } 

# create an object 
wz_formula() 

यहाँ मेरी एक्सएमएल है

अभी तक, यह सिर्फ फॉर्म 1 और फॉर्म 2 के बीच स्विच करता है। जैसा कि मैंने उपरोक्त समझाया है, मैं अभिव्यक्ति कैसे निकाल सकता हूं?

उत्तर

-1

मुझे यकीन नहीं है कि आप क्या पूछ रहे हैं, लेकिन यदि आप उपयोगकर्ता की अभिव्यक्ति को पार्स करना चाहते हैं, तो this question on Python expression parsers सहायक होना चाहिए।

6

fields_view_get()

def fields_view_get(self, cr, uid, view_id=None, view_type='form', context={}, toolbar=False): 
    result = super(<your_class_name>, self).fields_view_get(cr, uid, view_id, view_type, context=context, toolbar=toolbar) 
    # your modification in the view 
    # result['fields'] will give you the fields. modify it if needed 
    # result['arch'] will give you the xml architecture. modify it if needed 
    return result 

result समारोह OpenERP v6 में एक गतिशील दृश्य जोड़ने के लिए, एक शब्दकोश जो मुख्य रूप से दो बातें, एक्सएमएल वास्तुकला और क्षेत्रों को शामिल किया जाएगा ओवरराइड। result['arch'] में स्ट्रिंग के रूप में xml आर्किटेक्चर प्रदान करें, result['fields'] में फ़ील्ड को शब्दकोशों के शब्दकोश के रूप में प्रदान करें। फिर परिणाम वापस करें। फिर आप फ़ील्ड और आर्किटेक्चर में जो कुछ दिया है उसके अनुसार आपको एक दृश्य मिलेगा।

1

एक आसान तरीका होगा ... पहले अभिव्यक्ति को पहले फॉर्म (फॉर्म 1) से प्राप्त करें, और अपनी पसंद के अनुसार इसका मूल्यांकन करें, और "टेक्स्ट" फ़ील्ड को दूसरे रूप में रखें, जिसमें यह डेटा आपके अनुसार है उस क्षेत्र में प्रारूप ..