Rifakat (OpenERP) has proposed merging
lp:~openerp-dev/openobject-addons/6.0-opw-16778-rha into
lp:openobject-addons/6.0.
Requested reviews:
Naresh(OpenERP) (nch-openerp)
Raphael Collet (OpenERP) (rco-openerp)
nel (nel-tinyerp)
For more details, see:
https://code.launchpad.net/~openerp-dev/openobject-addons/6.0-opw-16778-rha/+merge/97872
Hello,
Improved functionality for search criteria of base_report_creator module.
Search criteria was not working and throwing errors. Improved sql query for
filters.
Kindly review it.
Regards,
Rifakat
--
https://code.launchpad.net/~openerp-dev/openobject-addons/6.0-opw-16778-rha/+merge/97872
Your team OpenERP R&D Team is subscribed to branch
lp:~openerp-dev/openobject-addons/6.0-opw-16778-rha.
=== modified file 'audittrail/audittrail.py'
--- audittrail/audittrail.py 2011-11-28 06:54:12 +0000
+++ audittrail/audittrail.py 2012-03-16 13:15:24 +0000
@@ -324,7 +324,7 @@
"object_id": model.id,
"user_id": uid_orig,
"res_id": resource['id'],
- "name": resource['name'],
+ "name": resource.get('name', ''),
}
if 'id' in resource:
del resource['id']
@@ -389,7 +389,7 @@
"object_id": model.id,
"user_id": uid_orig,
"res_id": res_id,
- "name" : v['name'],
+ "name" : v.get('name', ''),
}
log_id = log_pool.create(cr, uid, vals)
lines = []
@@ -444,7 +444,7 @@
"object_id": model.id,
"user_id": uid_orig,
"res_id": resource_id,
- "name": resource['name'],
+ "name": resource.get('name', ''),
}
=== modified file 'base_report_creator/base_report_creator.py'
--- base_report_creator/base_report_creator.py 2011-01-17 08:00:48 +0000
+++ base_report_creator/base_report_creator.py 2012-03-16 13:15:24 +0000
@@ -197,24 +197,53 @@
for f in report.field_ids:
if f.field_id.model:
fields['field'+str(i)] = (f.field_id.model, f.field_id.name)
+
i += 1
else:
fields['column_count'] = (False, 'Count')
- newargs = []
- newargs2 = []
+ where_str = []
+ where_clause = ''
for a in args:
+ param_value = ''
+ if a == '|':
+ args.pop(args.index(a)+1)
+ if not isinstance(a, tuple):
+ continue
if fields[a[0]][0]:
res = self.pool.get(fields[a[0]][0])._where_calc(cr, user, [[fields[a[0]][1], a[1], a[2]]], active_test = False, context = context)
- newargs += res[0]
- newargs2 += res[1]
- else:
- newargs += [("count(*) " + a[1] +" " + str(a[2]))]
- ctx = context or {}
- ctx['getid'] = True
- sql_query = report.sql_query
- cr.execute(sql_query) # TODO: FILTER
- result = cr.fetchall()
- return map(lambda x: x[0], result)
+ from_clause, where_clause, where_clause_params = res.get_sql()
+ if where_clause:
+ if where_clause_params:
+ if isinstance(where_clause_params[0], str):
+ param_value = "'"+where_clause_params[0]+"'"
+ elif isinstance(where_clause_params[0], (int, float, long)):
+ param_value = tuple(where_clause_params)
+ if param_value:
+ if where_str:
+ where_str.append((where_clause) % param_value)
+ else:
+ where_str.append((where_clause) % param_value)
+ else:
+ where_str.append(where_clause)
+ query = report.sql_query.split('group by')
+ main = query and query[0].split('where')
+ if len(main)>1:
+ where_str.append(main[1])
+ where = ''
+ for domain in where_str:
+ where += domain
+ if domain == where_str[-1]:
+ break
+ where += ' and '
+ if where:
+ where = ' where ' + where
+ query = main[0] + where + ' group by ' + query[1]
+ if query:
+ cr.execute(query)
+ result = cr.fetchall()
+ return map(lambda x: x[0], result)
+ else:
+ return []
report_result()
_______________________________________________
Mailing list: https://launchpad.net/~openerp-dev-gtk
Post to : [email protected]
Unsubscribe : https://launchpad.net/~openerp-dev-gtk
More help : https://help.launchpad.net/ListHelp