[REF] website, website_blog, website_sale: move QueryURL to be common
This commit is contained in:
@@ -16,6 +16,8 @@ from openerp.addons.base.ir.ir_qweb import AssetsBundle
|
||||
from openerp.addons.web.controllers.main import WebClient, Binary
|
||||
from openerp.addons.web import http
|
||||
from openerp.http import request
|
||||
from openerp.osv.orm import browse_record
|
||||
from openerp.addons.website.models.website import slug
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
@@ -24,6 +26,37 @@ MAX_IMAGE_WIDTH, MAX_IMAGE_HEIGHT = IMAGE_LIMITS = (1024, 768)
|
||||
LOC_PER_SITEMAP = 45000
|
||||
SITEMAP_CACHE_TIME = datetime.timedelta(hours=12)
|
||||
|
||||
|
||||
class QueryURL(object):
|
||||
def __init__(self, path='', path_args=None, **args):
|
||||
self.path = path
|
||||
self.args = args
|
||||
self.path_args = set(path_args or [])
|
||||
|
||||
def __call__(self, path=None, path_args=None, **kw):
|
||||
path = path or self.path
|
||||
for k, v in self.args.items():
|
||||
kw.setdefault(k, v)
|
||||
path_args = set(path_args or []).union(self.path_args)
|
||||
paths, fragments = [], []
|
||||
for key, value in kw.items():
|
||||
if value and key in path_args:
|
||||
if isinstance(value, browse_record):
|
||||
paths.append((key, slug(value)))
|
||||
else:
|
||||
paths.append((key, value))
|
||||
elif value:
|
||||
if isinstance(value, list) or isinstance(value, set):
|
||||
fragments.append(werkzeug.url_encode([(key, item) for item in value]))
|
||||
else:
|
||||
fragments.append(werkzeug.url_encode([(key, value)]))
|
||||
for key, value in paths:
|
||||
path += '/' + key + '/%s' % value
|
||||
if fragments:
|
||||
path += '?' + '&'.join(fragments)
|
||||
return path
|
||||
|
||||
|
||||
class Website(openerp.addons.web.controllers.main.Home):
|
||||
#------------------------------------------------------
|
||||
# View
|
||||
|
||||
@@ -8,43 +8,13 @@ from openerp import tools
|
||||
from openerp.addons.web import http
|
||||
from openerp.addons.web.http import request
|
||||
from openerp.addons.website.models.website import slug, unslug
|
||||
from odoo.addons.website.controllers.main import QueryURL
|
||||
from openerp.exceptions import UserError
|
||||
from openerp.osv.orm import browse_record
|
||||
from openerp.tools.translate import _
|
||||
from openerp import SUPERUSER_ID
|
||||
from openerp.tools import html2plaintext
|
||||
|
||||
|
||||
class QueryURL(object):
|
||||
def __init__(self, path='', path_args=None, **args):
|
||||
self.path = path
|
||||
self.args = args
|
||||
self.path_args = set(path_args or [])
|
||||
|
||||
def __call__(self, path=None, path_args=None, **kw):
|
||||
path = path or self.path
|
||||
for k, v in self.args.items():
|
||||
kw.setdefault(k, v)
|
||||
path_args = set(path_args or []).union(self.path_args)
|
||||
paths, fragments = [], []
|
||||
for key, value in kw.items():
|
||||
if value and key in path_args:
|
||||
if isinstance(value, browse_record):
|
||||
paths.append((key, slug(value)))
|
||||
else:
|
||||
paths.append((key, value))
|
||||
elif value:
|
||||
if isinstance(value, list) or isinstance(value, set):
|
||||
fragments.append(werkzeug.url_encode([(key, item) for item in value]))
|
||||
else:
|
||||
fragments.append(werkzeug.url_encode([(key, value)]))
|
||||
for key, value in paths:
|
||||
path += '/' + key + '/%s' % value
|
||||
if fragments:
|
||||
path += '?' + '&'.join(fragments)
|
||||
return path
|
||||
|
||||
|
||||
class WebsiteBlog(http.Controller):
|
||||
_blog_post_per_page = 20
|
||||
_post_comment_per_page = 10
|
||||
|
||||
@@ -5,6 +5,7 @@ import werkzeug
|
||||
from odoo import http, tools, _
|
||||
from odoo.http import request
|
||||
from odoo.addons.website.models.website import slug
|
||||
from odoo.addons.website.controllers.main import QueryURL
|
||||
|
||||
PPG = 20 # Products Per Page
|
||||
PPR = 4 # Products Per Row
|
||||
@@ -80,26 +81,6 @@ class TableCompute(object):
|
||||
# TODO keep with input type hidden
|
||||
|
||||
|
||||
class QueryURL(object):
|
||||
def __init__(self, path='', **args):
|
||||
self.path = path
|
||||
self.args = args
|
||||
|
||||
def __call__(self, path=None, **kw):
|
||||
if not path:
|
||||
path = self.path
|
||||
for k, v in self.args.items():
|
||||
kw.setdefault(k, v)
|
||||
l = []
|
||||
for k, v in kw.items():
|
||||
if v:
|
||||
if isinstance(v, list) or isinstance(v, set):
|
||||
l.append(werkzeug.url_encode([(k, i) for i in v]))
|
||||
else:
|
||||
l.append(werkzeug.url_encode([(k, v)]))
|
||||
if l:
|
||||
path += '?' + '&'.join(l)
|
||||
return path
|
||||
|
||||
|
||||
class WebsiteSale(http.Controller):
|
||||
|
||||
Reference in New Issue
Block a user