openerp-dev-web team mailing list archive
-
openerp-dev-web team
-
Mailing list archive
-
Message #00675
[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