[MERGE] Forward-port of latest saas-2 bugfixes, up to rev. 5015 dle@openerp.com-20140221104908-7ytdg6xkxaza05o4
bzr revid: dle@openerp.com-20140220132700-hhc1nsu25j1ye257 bzr revid: mat@openerp.com-20140220150028-p6l0vnwa5q18uxiu bzr revid: dle@openerp.com-20140221105500-t7jg037uusdloigl
This commit is contained in:
commit
67866db5b6
|
@ -1117,6 +1117,10 @@ class ir_model_data(osv.osv):
|
|||
# Don't remove the LOG_ACCESS_COLUMNS unless _log_access
|
||||
# has been turned off on the model.
|
||||
field = self.pool[model].browse(cr, uid, [res_id], context=context)[0]
|
||||
if not field.exists():
|
||||
_logger.info('Deleting orphan external_ids %s', external_ids)
|
||||
self.unlink(cr, uid, external_ids)
|
||||
continue
|
||||
if field.name in openerp.osv.orm.LOG_ACCESS_COLUMNS and self.pool[field.model]._log_access:
|
||||
continue
|
||||
if field.name == 'id':
|
||||
|
|
|
@ -2195,19 +2195,24 @@ class BaseModel(object):
|
|||
:param query: the query object used to construct the query afterwards
|
||||
"""
|
||||
orderby_list = []
|
||||
ob = ''
|
||||
ob = []
|
||||
for order_splits in orderby.split(','):
|
||||
order_split = order_splits.split()
|
||||
orderby_field = order_split[0]
|
||||
fields = openerp.osv.fields
|
||||
if isinstance(self._all_columns[orderby_field].column, (fields.date, fields.datetime)):
|
||||
continue
|
||||
orderby_dir = len(order_split) == 2 and order_split[1].upper() == 'ASC' and 'ASC' or 'DESC'
|
||||
if orderby_field == groupby:
|
||||
ob = self._generate_order_by(order_splits, query).replace('ORDER BY ', '')
|
||||
orderby_list.append(ob)
|
||||
orderby_item = self._generate_order_by(order_splits, query).replace('ORDER BY ', '')
|
||||
if orderby_item:
|
||||
orderby_list.append(orderby_item)
|
||||
ob += [obi.split()[0] for obi in orderby_item.split(',')]
|
||||
elif orderby_field in aggregated_fields:
|
||||
orderby_list.append('%s %s' % (orderby_field,orderby_dir))
|
||||
|
||||
if orderby_list:
|
||||
return ' ORDER BY %s' % (','.join(orderby_list)), ob and ob.split()[0] or ''
|
||||
return ' ORDER BY %s' % (','.join(orderby_list)), ob and ','.join(ob) or ''
|
||||
else:
|
||||
return '', ''
|
||||
|
||||
|
@ -2337,7 +2342,7 @@ class BaseModel(object):
|
|||
offset_str = offset and ' offset %d' % offset or ''
|
||||
if len(groupby_list) < 2 and context.get('group_by_no_leaf'):
|
||||
group_count = '_'
|
||||
cr.execute('SELECT min(%s.id) AS id, count(%s.id) AS %s_count' % (self._table, self._table, group_count) + (flist and ',') + flist + ' FROM ' + from_clause + where_clause + gb + (ob and ',') + ob + orderby_clause + limit_str + offset_str, where_clause_params)
|
||||
cr.execute('SELECT min(%s.id) AS id, count(%s.id) AS %s_count' % (self._table, self._table, group_count) + (flist and ',') + flist + ' FROM ' + from_clause + where_clause + gb + (ob and ',') + ob + orderby_clause + limit_str + offset_str, where_clause_params)
|
||||
alldata = {}
|
||||
groupby = group_by
|
||||
|
||||
|
|
|
@ -311,7 +311,7 @@ def exp_list(document=False):
|
|||
cr.execute("select datname from pg_database where datdba=(select usesysid from pg_user where usename=%s) and datname not in %s order by datname", (db_user, templates_list))
|
||||
else:
|
||||
cr.execute("select datname from pg_database where datname not in %s order by datname", (templates_list,))
|
||||
res = [tools.ustr(name) for (name,) in cr.fetchall()]
|
||||
res = [openerp.tools.ustr(name) for (name,) in cr.fetchall()]
|
||||
except Exception:
|
||||
res = []
|
||||
res.sort()
|
||||
|
|
Loading…
Reference in New Issue