Xavier (Open ERP) has proposed merging
lp:~openerp-dev/openerp-web/6.1-948219-xmo into lp:openerp-web/6.1.
Requested reviews:
Olivier Dony (OpenERP) (odo-openerp)
OpenERP Core Team (openerp)
Related bugs:
Bug #948219 in OpenERP Web: "Saved filters are one-shot only (no refining, no
persistence)"
https://bugs.launchpad.net/openerp-web/+bug/948219
For more details, see:
https://code.launchpad.net/~openerp-dev/openerp-web/6.1-948219-xmo/+merge/96342
When selecting saved filters in the search view, make them non-transient:
instead of executing a search on the filter data, store the filter data in the
searchview and trigger a search (which will get the full search data & the
stored filter data)
--
https://code.launchpad.net/~openerp-dev/openerp-web/6.1-948219-xmo/+merge/96342
Your team OpenERP R&D Team is subscribed to branch
lp:~openerp-dev/openerp-web/6.1-948219-xmo.
=== modified file 'addons/web/controllers/main.py'
--- addons/web/controllers/main.py 2012-03-06 20:59:55 +0000
+++ addons/web/controllers/main.py 2012-03-07 12:14:20 +0000
@@ -1308,10 +1308,15 @@
filters = Model.get_filters(model)
for filter in filters:
try:
- filter["context"] = req.session.eval_context(
- parse_context(filter["context"], req.session))
- filter["domain"] = req.session.eval_domain(
- parse_domain(filter["domain"], req.session))
+ parsed_context = parse_context(filter["context"], req.session)
+ filter["context"] = (parsed_context
+ if not isinstance(parsed_context, common.nonliterals.BaseContext)
+ else req.session.eval_context(parsed_context))
+
+ parsed_domain = parse_domain(filter["domain"], req.session)
+ filter["domain"] = (parsed_domain
+ if not isinstance(parsed_domain, common.nonliterals.BaseDomain)
+ else req.session.eval_domain(parsed_domain))
except Exception:
logger.exception("Failed to parse custom filter %s in %s",
filter['name'], model)
=== modified file 'addons/web/static/src/js/search.js'
--- addons/web/static/src/js/search.js 2012-02-21 14:05:17 +0000
+++ addons/web/static/src/js/search.js 2012-03-07 12:14:20 +0000
@@ -32,6 +32,8 @@
this.hidden = !!hidden;
this.headless = this.hidden && !this.has_defaults;
+ this.filter_data = {};
+
this.ready = $.Deferred();
},
start: function() {
@@ -271,7 +273,12 @@
group_by instanceof Array ? group_by : group_by.split(','),
function (el) { return { group_by: el }; });
}
- this.on_search([filter.domain], [filter.context], groupbys);
+ this.filter_data = {
+ domains: [filter.domain],
+ contexts: [filter.context],
+ groupbys: groupbys
+ };
+ this.do_search();
}, this));
} else {
select.val('');
@@ -339,9 +346,6 @@
if (this.headless && !this.has_defaults) {
return this.on_search([], [], []);
}
- // reset filters management
- var select = this.$element.find(".oe_search-view-filters-management");
- select.val("_filters");
if (e && e.preventDefault) { e.preventDefault(); }
@@ -385,6 +389,16 @@
.map(function (filter) { return filter.get_context();})
.compact()
.value();
+
+ if (this.filter_data.contexts) {
+ contexts = this.filter_data.contexts.concat(contexts)
+ }
+ if (this.filter_data.domains) {
+ domains = this.filter_data.domains.concat(domains);
+ }
+ if (this.filter_data.groupbys) {
+ groupbys = this.filter_data.groupbys.concat(groupbys);
+ }
return {domains: domains, contexts: contexts, errors: errors, groupbys: groupbys};
},
/**
@@ -423,6 +437,9 @@
* @param {Boolean} [reload_view=true]
*/
do_clear: function (reload_view) {
+ this.filter_data = {};
+ this.$element.find(".oe_search-view-filters-management").val('');
+
this.$element.find('.filter_label, .filter_icon').removeClass('enabled');
this.enabled_filters.splice(0);
var string = $('a.searchview_group_string');
_______________________________________________
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