From a09b0db51dcfb80cb28a54eace0c0d90fbf5fc1b Mon Sep 17 00:00:00 2001 From: Christophe Matthieu Date: Wed, 19 Feb 2014 11:55:02 +0100 Subject: [PATCH] [FIX] website: Select some text > Click on the link button > Select Page textfield and start typing (e.g. comm) > There is a lot of noise here; Dsiplaying create page for existing page bzr revid: odo@openerp.com-20140219105502-jg8f2i1gpz5vdarf --- addons/website/models/website.py | 9 +++++---- addons/website/static/src/js/website.editor.js | 3 +++ 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/addons/website/models/website.py b/addons/website/models/website.py index 3dcb028fed2..99187fc7bad 100644 --- a/addons/website/models/website.py +++ b/addons/website/models/website.py @@ -175,10 +175,8 @@ class website(osv.osv): return '%s.%s' % (module, slugify(name, max_length=50)) def page_exists(self, cr, uid, ids, name, module='website', context=None): - page = self.page_for_name(cr, uid, ids, name, module=module, context=context) - try: - self.pool["ir.model.data"].get_object_reference(cr, uid, module, name) + return self.pool["ir.model.data"].get_object_reference(cr, uid, module, name) except: return False @@ -348,6 +346,7 @@ class website(osv.osv): router = request.httprequest.app.get_db_router(request.db) # Force enumeration to be performed as public user uid = self.get_public_user(cr, uid, context=context) + url_list = [] for rule in router.iter_rules(): if not self.rule_is_enumerable(rule): continue @@ -369,7 +368,9 @@ class website(osv.osv): for values in generated: domain_part, url = rule.build(values, append_unknown=False) page = {'name': url, 'url': url} - + if url in url_list: + continue + url_list.append(url) if not filtered and query_string and not self.page_matches(cr, uid, page, query_string, context=context): continue yield page diff --git a/addons/website/static/src/js/website.editor.js b/addons/website/static/src/js/website.editor.js index 8b27c97acb3..dc82c0c17b9 100644 --- a/addons/website/static/src/js/website.editor.js +++ b/addons/website/static/src/js/website.editor.js @@ -1034,10 +1034,13 @@ }, start: function () { var self = this; + var last; this.$('#link-page').select2({ minimumInputLength: 1, placeholder: _t("New or existing page"), query: function (q) { + if (q.term == last) return; + last = q.term; $.when( self.page_exists(q.term), self.fetch_pages(q.term)