← Back to team overview

openerp-dev-web team mailing list archive

[Merge] lp:~openerp-dev/openobject-client-web/export into lp:openobject-client-web

 

kch (Open ERP) has proposed merging lp:~openerp-dev/openobject-client-web/export into lp:openobject-client-web.

Requested reviews:
  OpenERP SA's Web Client R&D (openerp-dev-web)

-- 
https://code.launchpad.net/~openerp-dev/openobject-client-web/export/+merge/41588
Your team OpenERP R&D Team is subscribed to branch lp:~openerp-dev/openobject-client-web/export.
=== modified file 'addons/openerp/controllers/impex.py'
--- addons/openerp/controllers/impex.py	2010-11-09 09:24:23 +0000
+++ addons/openerp/controllers/impex.py	2010-11-23 12:43:57 +0000
@@ -71,7 +71,7 @@
         raise common.message(_("Operation failed\nI/O error")+"(%s)" % (errno,))
 
 def _fields_get_all(model, views, context=None):
-    
+
     context = context or {}
 
     def parse(root, fields):
@@ -117,7 +117,7 @@
     @expose(template="/openerp/controllers/templates/exp.mako")
     def exp(self, **kw):
         params, data = TinyDict.split(kw)
-        
+
         ctx = dict((params.context or {}), **rpc.session.context)
 
         views = {}
@@ -143,11 +143,17 @@
         new_list = listgrid.List(name='_terp_list', model='ir.exports', view=view, ids=None,
                                  domain=[('resource', '=', params.model)],
                                  context=ctx, selectable=1, editable=False, pageable=False, impex=True)
+        try:
+            import xlwt
+            options = [('xls', _('Export as Excel')),
+                       ('csv', _('Export as CSV'))]
+        except:
+            options = [('csv', _('Export as CSV'))]
 
 
         return dict(new_list=new_list, model=params.model, ids=params.ids, ctx=ctx,
                     search_domain=params.search_domain, source=params.source,
-                    tree=tree)
+                    tree=tree,options=options)
 
     @expose()
     def save_exp(self, **kw):
@@ -178,23 +184,23 @@
     @expose('json')
     def get_fields(self, model, prefix='', name='', field_parent=None, **kw):
 
-        is_importing = kw.get('is_importing', False)        
-        
+        is_importing = kw.get('is_importing', False)
+
         try:
             ctx = ast.literal_eval(kw['context'])
         except:
             ctx = {}
-            
+
         ctx.update(**rpc.session.context)
 
         try:
             views = ast.literal_eval(kw['views'])
         except:
             views = {}
-            
+
 
         fields = _fields_get_all(model, views, ctx)
-        
+
         fields.update({'id': {'string': 'ID'}, 'db_id': {'string': 'Database ID'}})
 
         fields_order = fields.keys()
@@ -257,7 +263,7 @@
     def get_namelist(self, **kw):
 
         params, data = TinyDict.split(kw)
-        
+
         ctx = dict((params.context or {}), **rpc.session.context)
 
         id = params.id
@@ -343,11 +349,8 @@
             params.fields2 = fields
 
         if export_as == 'xls':
-            try:
-                import xlwt
-            except ImportError:
-                  raise common.warning(_('Please Install xlwt Library.\nTo create spreadsheet files compatible with MS Excel.'), _('Import Error.'))
 
+            import xlwt
             ezxf = xlwt.easyxf
 
             fp = StringIO.StringIO()
@@ -380,9 +383,9 @@
     @expose(template="/openerp/controllers/templates/imp.mako")
     def imp(self, **kw):
         params, data = TinyDict.split(kw)
-        
+
         ctx = dict((params.context or {}), **rpc.session.context)
-        
+
         views = {}
         if params.view_mode and params.view_ids:
             for i, view in enumerate(params.view_mode):
@@ -408,11 +411,11 @@
 
         _fields = {}
         _fields_invert = {}
-        
+
         fields = dict(rpc.RPCProxy(params.model).fields_get(False, rpc.session.context),
                       id={'type': 'char', 'string': 'ID'},
                       db_id={'type': 'char', 'string': 'Database ID'})
-        
+
         def model_populate(fields, prefix_node='', prefix=None, prefix_value='', level=2):
             def str_comp(x,y):
                 if x<y: return 1
@@ -426,7 +429,7 @@
                             and (not fields[field].get('readonly')\
                             or not dict(fields[field].get('states', {}).get(
                             'draft', [('readonly', True)])).get('readonly',True)):
-                    
+
                     st_name = prefix_value+fields[field]['string'] or field
                     _fields[prefix_node+field] = st_name
                     _fields_invert[st_name] = prefix_node+field
@@ -474,7 +477,7 @@
         data = list(csv.reader(input, quotechar=str(csvdel), delimiter=str(csvsep)))[int(csvskip):]
         datas = []
         ctx = dict(rpc.session.context)
-        
+
         if not isinstance(fields, list):
             fields = [fields]
 

=== modified file 'addons/openerp/controllers/templates/exp.mako'
--- addons/openerp/controllers/templates/exp.mako	2010-11-09 09:04:31 +0000
+++ addons/openerp/controllers/templates/exp.mako	2010-11-23 12:43:57 +0000
@@ -7,9 +7,9 @@
 
     <script type="text/javascript">
         function add_fields(){
-        
+
             var tree = treeGrids['${tree.name}'];
-            
+
             var fields = tree.selection;
             var select = openobject.dom.get('fields');
 
@@ -28,7 +28,7 @@
                 select.options.add(new Option(text, id));
             });
         }
-		
+
         function open_savelist(id) {
             var elem = openobject.dom.get(id);
             elem.style.display = elem.style.display == 'none' ? '' : 'none';
@@ -56,7 +56,7 @@
                 });
             }
         }
-        
+
         function do_select(id, src) {
             openobject.dom.get('fields').innerHTML = '';
             var model = openobject.dom.get('_terp_model').value;
@@ -87,7 +87,7 @@
             var id = boxes[0].value;
             form.action = openobject.http.getURL('/openerp/impex/delete_listname', {'_terp_id' : id});
   			form.submit();
-  			
+
         }
 
         function reload(name_list) {
@@ -148,7 +148,7 @@
                     </tr>
                 </table>
             </td>
-        </tr>        
+        </tr>
         % if new_list.ids:
         <tr>
             <td class="side_spacing">
@@ -211,13 +211,13 @@
             </td>
         </tr>
         <tr>
-            <td class="side_spacing">            
+            <td class="side_spacing">
                 <div id="savelist" style="display: none">
                     <fieldset>
                         <legend>${_("Save List")}</legend>
                         <table>
-                            <tr>                           
-                                <td class="label">${_("Name of This Export:")}</td>                            
+                            <tr>
+                                <td class="label">${_("Name of This Export:")}</td>
                                 <td>
                                     <input type="text" id="savelist_name" name="savelist_name"/>
                                 </td>
@@ -226,10 +226,10 @@
                                 </td>
                             </tr>
                         </table>
-                    </fieldset>         
-                </div>   
+                    </fieldset>
+                </div>
             </td>
-        </tr>        
+        </tr>
         <tr>
             <td class="side_spacing">
                 <fieldset>
@@ -238,8 +238,9 @@
                         <tr>
                             <td>
                                 <select id="export_as" name="export_as">
-                                    <option value="csv">${_("Export as CSV")}</option>
-                                    <option value="xls">${_("Export as Excel")}</option>
+                                    % for (k, v) in options:
+							            <option value="${k}" selected="1">${v}</option>
+            						% endfor
                                 </select>
                             </td>
                             <td>


Follow ups