[Merge] Merge with main server.
authorDivyesh Makwana (Open ERP) <mdi@tinyerp.com>
Wed, 13 Jun 2012 09:20:04 +0000 (14:50 +0530)
committerDivyesh Makwana (Open ERP) <mdi@tinyerp.com>
Wed, 13 Jun 2012 09:20:04 +0000 (14:50 +0530)
bzr revid: mdi@tinyerp.com-20120613092004-q4s7k4hm8zyzfycq

openerp/addons/base/ir/ir_ui_view.py
openerp/addons/base/module/module.py
openerp/addons/base/module/module_view.xml
openerp/addons/base/res/res_company.py

index ac1fc5c..4d7b0f4 100644 (file)
@@ -107,6 +107,7 @@ class view(osv.osv):
         for view in self.browse(cr, uid, ids, context):
             # RNG-based validation is not possible anymore with 7.0 forms
             # TODO 7.0: provide alternative assertion-based validation!
+            # TODO 7.0: and do the tests on the result of fields_view_get instead of each arch.
             view_docs = [etree.fromstring(view.arch.encode('utf8'))]
             if view_docs[0].tag == 'data':
                 # A <data> element is a wrapper for multiple root nodes
index e4e3a8f..d75f330 100644 (file)
@@ -23,8 +23,9 @@ import logging
 import re
 import urllib
 import zipimport
+import base64
 
-from openerp import modules, pooler, release, tools
+from openerp import modules, pooler, release, tools, addons
 from openerp.tools.parse_version import parse_version
 from openerp.tools.translate import _
 from openerp.osv import fields, osv, orm
@@ -160,6 +161,18 @@ class module(osv.osv):
                 res[key][k] = "\n".join(sorted(v))
         return res
 
+    def _get_icon_image(self, cr, uid, ids, field_name=None, arg=None, context=None):
+        res = dict.fromkeys(ids, '')
+        for module in self.browse(cr, uid, ids, context=context):
+            path = addons.get_module_resource(module.name, 'static', 'src', 'img', 'icon.png')
+            if path:
+                image_file = tools.file_open(path, 'rb')
+                try:
+                    res[module.id] = image_file.read().encode('base64')
+                finally:
+                    image_file.close()
+        return res
+
     _columns = {
         'name': fields.char("Technical Name", size=128, readonly=True, required=True, select=True),
         'category_id': fields.many2one('ir.module.category', 'Category', readonly=True, select=True),
@@ -211,6 +224,7 @@ class module(osv.osv):
         'certificate' : fields.char('Quality Certificate', size=64, readonly=True),
         'application': fields.boolean('Application', readonly=True),
         'icon': fields.char('Icon URL', size=128),
+        'icon_image': fields.function(_get_icon_image, string='Icon', type="binary"),
     }
 
     _defaults = {
index 6808bc1..182e058 100644 (file)
                 <header>
                     <button name="button_install" states="uninstalled" string="Install" icon="terp-gtk-jump-to-ltr" type="object" class="oe_form_button_hi"/>
                     <button name="button_upgrade" states="installed" string="Upgrade" icon="terp-gtk-go-back-rtl" type="object" class="oe_form_button_hi"/>
-                    <button name="button_uninstall" states="installed" string="Uninstall (beta)"
-                                        icon="terp-dialog-close" type="object"
-                                        confirm="Do you confirm the uninstallation of this module? This will permanently erase all data currently stored by the module!"/>
+                    <button name="button_uninstall" states="installed" string="Uninstall (beta)" icon="terp-dialog-close" type="object"
+                        confirm="Do you confirm the uninstallation of this module? This will permanently erase all data currently stored by the module!"/>
                     <button name="button_uninstall_cancel" states="to remove" string="Cancel Uninstall" icon="gtk-cancel" type="object"/>
                     <button name="button_upgrade_cancel" states="to upgrade" string="Cancel Upgrade" icon="gtk-cancel" type="object"/>
                     <button name="button_install_cancel" states="to install" string="Cancel Install" icon="gtk-cancel" type="object"/>
                 </header>
                 <sheet>
                     <div class="oe_right oe_form_button_box">
-                        <field name="icon" widget='image'/>
+                        <field name="icon_image" widget="image"/>
                     </div>
                     <div class="oe_form_title">
                         <label for="shortdesc" class="oe_form_readonly_hidden"/>
                         </page>
                         <page string="Technical Data">
                             <group col="4">
-                                <field name="name"/>
                                 <field name="demo"/>
                                 <field name="application"/>
                             </group>
                             </field>
                         </page>
                         <page string="Features" attrs="{'invisible':[('state','!=','installed')]}">
-                            <separator string="Created Menus"/>
+                            <label for="menus_by_module" string="Created Menus"/>
                             <field name="menus_by_module"/>
-                            <separator string="Created Views"/>
+                            <label for="views_by_module" string="Created Views"/>
                             <field name="views_by_module"/>
-                            <separator string="Defined Reports"/>
+                            <label for="reports_by_module" string="Defined Reports"/>
                             <field name="reports_by_module"/>
                         </page>
                     </notebook>
index 7778f6a..2454f34 100644 (file)
@@ -88,17 +88,6 @@ class res_company(osv.osv):
         return result
 
 
-    def _get_bank_data(self, cr, uid, ids, field_names, arg, context=None):
-        """ Read the 'address' functional fields. """
-        result = {}
-        for company in self.browse(cr, uid, ids, context=context):
-            r = []
-            for bank in company.bank_ids:
-                if bank.footer:
-                    r.append(bank.name_get(context=context)[0][1])
-            result[company.id] = ' | '.join(r)
-        return result
-
     def _set_address_data(self, cr, uid, company_id, name, value, arg, context=None):
         """ Write the 'address' functional fields. """
         company = self.browse(cr, uid, company_id, context=context)
@@ -120,7 +109,7 @@ class res_company(osv.osv):
         'partner_id': fields.many2one('res.partner', 'Partner', required=True),
         'rml_header1': fields.char('Report Header / Company Slogan', size=200, help="Appears by default on the top right corner of your printed documents."),
         'rml_footer1': fields.char('General Information Footer', size=200),
-        'rml_footer2': fields.function(_get_bank_data, type="char", string='Bank Accounts Footer', size=250, help="This field is computed automatically based on bank accounts defined, having the display on footer checkbox set."),
+        'rml_footer2': fields.char('Bank Accounts Footer', size=250, help="Write here your bank accounts for customer payments."),
         'rml_header': fields.text('RML Header', required=True),
         'rml_header2': fields.text('RML Internal Header', required=True),
         'rml_header3': fields.text('RML Internal Header', required=True),