From ae6ff0764b709880c458c54a850594db8eed795a Mon Sep 17 00:00:00 2001 From: Antony Lesuisse Date: Wed, 10 Oct 2012 22:37:53 +0200 Subject: [PATCH] web remove common, fix imports bzr revid: al@openerp.com-20121010203753-azrcz3k2kd44ni24 --- addons/web/__init__.py | 4 +- addons/web/common/__init__.py | 5 --- addons/web/common/xml2json.py | 26 ------------ addons/web/controllers/main.py | 59 ++++++++++++++++++-------- addons/web/{common => }/http.py | 12 ++---- addons/web/{common => }/nonliterals.py | 0 addons/web/{common => }/session.py | 0 addons/web_diagram/controllers/main.py | 15 ++----- addons/web_graph/controllers/graph.py | 13 ++---- 9 files changed, 55 insertions(+), 79 deletions(-) delete mode 100644 addons/web/common/__init__.py delete mode 100644 addons/web/common/xml2json.py rename addons/web/{common => }/http.py (98%) rename addons/web/{common => }/nonliterals.py (100%) rename addons/web/{common => }/session.py (100%) diff --git a/addons/web/__init__.py b/addons/web/__init__.py index c4337b37d2c..3b447ce748d 100644 --- a/addons/web/__init__.py +++ b/addons/web/__init__.py @@ -1,4 +1,4 @@ -import common +import http import controllers -wsgi_postload = common.http.wsgi_postload +wsgi_postload = http.wsgi_postload diff --git a/addons/web/common/__init__.py b/addons/web/common/__init__.py deleted file mode 100644 index d8fb717bb83..00000000000 --- a/addons/web/common/__init__.py +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/python -from . import http -from . import nonliterals -from . import session -from . import xml2json diff --git a/addons/web/common/xml2json.py b/addons/web/common/xml2json.py deleted file mode 100644 index df3aad67fa5..00000000000 --- a/addons/web/common/xml2json.py +++ /dev/null @@ -1,26 +0,0 @@ -# xml2json-direct -# Simple and straightforward XML-to-JSON converter in Python -# New BSD Licensed -# -# URL: http://code.google.com/p/xml2json-direct/ - -def from_elementtree(el, preserve_whitespaces=False): - res = {} - if el.tag[0] == "{": - ns, name = el.tag.rsplit("}", 1) - res["tag"] = name - res["namespace"] = ns[1:] - else: - res["tag"] = el.tag - res["attrs"] = {} - for k, v in el.items(): - res["attrs"][k] = v - kids = [] - if el.text and (preserve_whitespaces or el.text.strip() != ''): - kids.append(el.text) - for kid in el: - kids.append(from_elementtree(kid, preserve_whitespaces)) - if kid.tail and (preserve_whitespaces or kid.tail.strip() != ''): - kids.append(kid.tail) - res["children"] = kids - return res diff --git a/addons/web/controllers/main.py b/addons/web/controllers/main.py index 94e84168139..72ffd9567f6 100644 --- a/addons/web/controllers/main.py +++ b/addons/web/controllers/main.py @@ -29,8 +29,9 @@ except ImportError: import openerp -from .. import common -openerpweb = common.http +from .. import http +from .. import nonliterals +openerpweb = http #---------------------------------------------------------- # OpenERP Web helpers @@ -505,7 +506,7 @@ def fix_view_modes(action): def parse_domain(domain, session): """ Parses an arbitrary string containing a domain, transforms it - to either a literal domain or a :class:`common.nonliterals.Domain` + to either a literal domain or a :class:`nonliterals.Domain` :param domain: the domain to parse, if the domain is not a string it is assumed to be a literal domain and is returned as-is @@ -518,11 +519,11 @@ def parse_domain(domain, session): return ast.literal_eval(domain) except ValueError: # not a literal - return common.nonliterals.Domain(session, domain) + return nonliterals.Domain(session, domain) def parse_context(context, session): """ Parses an arbitrary string containing a context, transforms it - to either a literal context or a :class:`common.nonliterals.Context` + to either a literal context or a :class:`nonliterals.Context` :param context: the context to parse, if the context is not a string it is assumed to be a literal domain and is returned as-is @@ -534,8 +535,7 @@ def parse_context(context, session): try: return ast.literal_eval(context) except ValueError: - return common.nonliterals.Context(session, context) - + return nonliterals.Context(session, context) def _local_web_translations(trans_file): messages = [] @@ -549,6 +549,31 @@ def _local_web_translations(trans_file): messages.append({'id': x.id, 'string': x.string}) return messages +def from_elementtree(el, preserve_whitespaces=False): + """ xml2json-direct + Simple and straightforward XML-to-JSON converter in Python + New BSD Licensed + http://code.google.com/p/xml2json-direct/ + """ + res = {} + if el.tag[0] == "{": + ns, name = el.tag.rsplit("}", 1) + res["tag"] = name + res["namespace"] = ns[1:] + else: + res["tag"] = el.tag + res["attrs"] = {} + for k, v in el.items(): + res["attrs"][k] = v + kids = [] + if el.text and (preserve_whitespaces or el.text.strip() != ''): + kids.append(el.text) + for kid in el: + kids.append(from_elementtree(kid, preserve_whitespaces)) + if kid.tail and (preserve_whitespaces or kid.tail.strip() != ''): + kids.append(kid.tail) + res["children"] = kids + return res #---------------------------------------------------------- # OpenERP Web web Controllers @@ -942,8 +967,8 @@ class Session(openerpweb.Controller): no group by should be performed) """ context, domain = eval_context_and_domain(req.session, - common.nonliterals.CompoundContext(*(contexts or [])), - common.nonliterals.CompoundDomain(*(domains or []))) + nonliterals.CompoundContext(*(contexts or [])), + nonliterals.CompoundDomain(*(domains or []))) group_by_sequence = [] for candidate in (group_by_seq or []): @@ -1165,14 +1190,14 @@ class DataSet(openerpweb.Controller): def _call_kw(self, req, model, method, args, kwargs): for i in xrange(len(args)): - if isinstance(args[i], common.nonliterals.BaseContext): + if isinstance(args[i], nonliterals.BaseContext): args[i] = req.session.eval_context(args[i]) - elif isinstance(args[i], common.nonliterals.BaseDomain): + elif isinstance(args[i], nonliterals.BaseDomain): args[i] = req.session.eval_domain(args[i]) for k in kwargs.keys(): - if isinstance(kwargs[k], common.nonliterals.BaseContext): + if isinstance(kwargs[k], nonliterals.BaseContext): kwargs[k] = req.session.eval_context(kwargs[k]) - elif isinstance(kwargs[k], common.nonliterals.BaseDomain): + elif isinstance(kwargs[k], nonliterals.BaseDomain): kwargs[k] = req.session.eval_domain(kwargs[k]) # Temporary implements future display_name special field for model#read() @@ -1303,7 +1328,7 @@ class View(openerpweb.Controller): xml = self.transform_view(arch, session, evaluation_context) else: xml = ElementTree.fromstring(arch) - fvg['arch'] = common.xml2json.from_elementtree(xml, preserve_whitespaces) + fvg['arch'] = from_elementtree(xml, preserve_whitespaces) if 'id' in fvg['fields']: # Special case for id's @@ -1436,12 +1461,12 @@ class SearchView(View): try: parsed_context = parse_context(filter["context"], req.session) filter["context"] = (parsed_context - if not isinstance(parsed_context, common.nonliterals.BaseContext) + if not isinstance(parsed_context, 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) + if not isinstance(parsed_domain, nonliterals.BaseDomain) else req.session.eval_domain(parsed_domain)) except Exception: logger.exception("Failed to parse custom filter %s in %s", @@ -1932,7 +1957,7 @@ class Reports(View): report_srv = req.session.proxy("report") context = req.session.eval_context( - common.nonliterals.CompoundContext( + nonliterals.CompoundContext( req.context or {}, action[ "context"])) report_data = {} diff --git a/addons/web/common/http.py b/addons/web/http.py similarity index 98% rename from addons/web/common/http.py rename to addons/web/http.py index d9524f31c54..65630768737 100644 --- a/addons/web/common/http.py +++ b/addons/web/http.py @@ -34,13 +34,10 @@ import openerp import nonliterals import session -__all__ = ['Root', 'jsonrequest', 'httprequest', 'Controller', - 'WebRequest', 'JsonRequest', 'HttpRequest'] - _logger = logging.getLogger(__name__) #---------------------------------------------------------- -# OpenERP Web RequestHandler +# RequestHandler #---------------------------------------------------------- class WebRequest(object): """ Parent class for all OpenERP Web request types, mostly deals with @@ -327,7 +324,7 @@ def httprequest(f): return http_handler #---------------------------------------------------------- -# OpenERP Web Controller registration with a metaclass +# Controller registration with a metaclass #---------------------------------------------------------- addons_module = {} addons_manifest = {} @@ -344,7 +341,7 @@ class Controller(object): __metaclass__ = ControllerType #---------------------------------------------------------- -# OpenERP Web Session context manager +# Session context manager #---------------------------------------------------------- STORES = {} @@ -415,7 +412,7 @@ def session_context(request, storage_path, session_cookie='httpsessionid'): session_store.save(request.session) #---------------------------------------------------------- -# OpenERP Web WSGI Application +# WSGI Application #---------------------------------------------------------- # Add potentially missing (older ubuntu) font mime types mimetypes.add_type('application/font-woff', '.woff') @@ -557,5 +554,4 @@ class Root(object): def wsgi_postload(): openerp.wsgi.register_wsgi_handler(Root()) - # vim:et:ts=4:sw=4: diff --git a/addons/web/common/nonliterals.py b/addons/web/nonliterals.py similarity index 100% rename from addons/web/common/nonliterals.py rename to addons/web/nonliterals.py diff --git a/addons/web/common/session.py b/addons/web/session.py similarity index 100% rename from addons/web/common/session.py rename to addons/web/session.py diff --git a/addons/web_diagram/controllers/main.py b/addons/web_diagram/controllers/main.py index e3d626ad48b..6af1f91adc0 100644 --- a/addons/web_diagram/controllers/main.py +++ b/addons/web_diagram/controllers/main.py @@ -1,21 +1,14 @@ -try: - # embedded - import openerp.addons.web.common.http as openerpweb - from openerp.addons.web.controllers.main import View -except ImportError: - # standalone - import web.common.http as openerpweb - from web.controllers.main import View +import openerp -class DiagramView(View): +class DiagramView(openerp.addons.web.controllers.main.View): _cp_path = "/web_diagram/diagram" - @openerpweb.jsonrequest + @openerp.addons.web.http.jsonrequest def load(self, req, model, view_id): fields_view = self.fields_view_get(req, model, view_id, 'diagram') return {'fields_view': fields_view} - @openerpweb.jsonrequest + @openerp.addons.web.http.jsonrequest def get_diagram_info(self, req, id, model, node, connector, src_node, des_node, label, **kw): diff --git a/addons/web_graph/controllers/graph.py b/addons/web_graph/controllers/graph.py index e5c15898155..21ec7d6e973 100644 --- a/addons/web_graph/controllers/graph.py +++ b/addons/web_graph/controllers/graph.py @@ -1,19 +1,12 @@ # -*- coding: utf-8 -*- -try: - # embedded - import openerp.addons.web.common.http as openerpweb - from openerp.addons.web.controllers.main import View -except ImportError: - # standalone - import web.common.http as openerpweb - from web.controllers.main import View +import openerp from lxml import etree -class GraphView(View): +class GraphView(openerp.addons.web.controllers.main.View): _cp_path = '/web_graph/graph' - @openerpweb.jsonrequest + @openerp.addons.web.http.jsonrequest def data_get(self, req, model=None, domain=[], context={}, group_by=[], view_id=False, orientation=False, stacked=False, mode="bar", **kwargs): obj = req.session.model(model)