web remove common, fix imports

bzr revid: al@openerp.com-20121010203753-azrcz3k2kd44ni24
This commit is contained in:
Antony Lesuisse 2012-10-10 22:37:53 +02:00
parent 818fd9f67f
commit ae6ff0764b
9 changed files with 55 additions and 79 deletions

View File

@ -1,4 +1,4 @@
import common
import http
import controllers
wsgi_postload = common.http.wsgi_postload
wsgi_postload = http.wsgi_postload

View File

@ -1,5 +0,0 @@
#!/usr/bin/python
from . import http
from . import nonliterals
from . import session
from . import xml2json

View File

@ -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

View File

@ -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 = {}

View File

@ -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:

View File

@ -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):

View File

@ -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)