web remove common, fix imports
bzr revid: al@openerp.com-20121010203753-azrcz3k2kd44ni24
This commit is contained in:
parent
818fd9f67f
commit
ae6ff0764b
|
@ -1,4 +1,4 @@
|
||||||
import common
|
import http
|
||||||
import controllers
|
import controllers
|
||||||
|
|
||||||
wsgi_postload = common.http.wsgi_postload
|
wsgi_postload = http.wsgi_postload
|
||||||
|
|
|
@ -1,5 +0,0 @@
|
||||||
#!/usr/bin/python
|
|
||||||
from . import http
|
|
||||||
from . import nonliterals
|
|
||||||
from . import session
|
|
||||||
from . import xml2json
|
|
|
@ -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
|
|
|
@ -29,8 +29,9 @@ except ImportError:
|
||||||
|
|
||||||
import openerp
|
import openerp
|
||||||
|
|
||||||
from .. import common
|
from .. import http
|
||||||
openerpweb = common.http
|
from .. import nonliterals
|
||||||
|
openerpweb = http
|
||||||
|
|
||||||
#----------------------------------------------------------
|
#----------------------------------------------------------
|
||||||
# OpenERP Web helpers
|
# OpenERP Web helpers
|
||||||
|
@ -505,7 +506,7 @@ def fix_view_modes(action):
|
||||||
|
|
||||||
def parse_domain(domain, session):
|
def parse_domain(domain, session):
|
||||||
""" Parses an arbitrary string containing a domain, transforms it
|
""" 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
|
: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
|
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)
|
return ast.literal_eval(domain)
|
||||||
except ValueError:
|
except ValueError:
|
||||||
# not a literal
|
# not a literal
|
||||||
return common.nonliterals.Domain(session, domain)
|
return nonliterals.Domain(session, domain)
|
||||||
|
|
||||||
def parse_context(context, session):
|
def parse_context(context, session):
|
||||||
""" Parses an arbitrary string containing a context, transforms it
|
""" 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
|
: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
|
is assumed to be a literal domain and is returned as-is
|
||||||
|
@ -534,8 +535,7 @@ def parse_context(context, session):
|
||||||
try:
|
try:
|
||||||
return ast.literal_eval(context)
|
return ast.literal_eval(context)
|
||||||
except ValueError:
|
except ValueError:
|
||||||
return common.nonliterals.Context(session, context)
|
return nonliterals.Context(session, context)
|
||||||
|
|
||||||
|
|
||||||
def _local_web_translations(trans_file):
|
def _local_web_translations(trans_file):
|
||||||
messages = []
|
messages = []
|
||||||
|
@ -549,6 +549,31 @@ def _local_web_translations(trans_file):
|
||||||
messages.append({'id': x.id, 'string': x.string})
|
messages.append({'id': x.id, 'string': x.string})
|
||||||
return messages
|
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
|
# OpenERP Web web Controllers
|
||||||
|
@ -942,8 +967,8 @@ class Session(openerpweb.Controller):
|
||||||
no group by should be performed)
|
no group by should be performed)
|
||||||
"""
|
"""
|
||||||
context, domain = eval_context_and_domain(req.session,
|
context, domain = eval_context_and_domain(req.session,
|
||||||
common.nonliterals.CompoundContext(*(contexts or [])),
|
nonliterals.CompoundContext(*(contexts or [])),
|
||||||
common.nonliterals.CompoundDomain(*(domains or [])))
|
nonliterals.CompoundDomain(*(domains or [])))
|
||||||
|
|
||||||
group_by_sequence = []
|
group_by_sequence = []
|
||||||
for candidate in (group_by_seq or []):
|
for candidate in (group_by_seq or []):
|
||||||
|
@ -1165,14 +1190,14 @@ class DataSet(openerpweb.Controller):
|
||||||
|
|
||||||
def _call_kw(self, req, model, method, args, kwargs):
|
def _call_kw(self, req, model, method, args, kwargs):
|
||||||
for i in xrange(len(args)):
|
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])
|
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])
|
args[i] = req.session.eval_domain(args[i])
|
||||||
for k in kwargs.keys():
|
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])
|
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])
|
kwargs[k] = req.session.eval_domain(kwargs[k])
|
||||||
|
|
||||||
# Temporary implements future display_name special field for model#read()
|
# 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)
|
xml = self.transform_view(arch, session, evaluation_context)
|
||||||
else:
|
else:
|
||||||
xml = ElementTree.fromstring(arch)
|
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']:
|
if 'id' in fvg['fields']:
|
||||||
# Special case for id's
|
# Special case for id's
|
||||||
|
@ -1436,12 +1461,12 @@ class SearchView(View):
|
||||||
try:
|
try:
|
||||||
parsed_context = parse_context(filter["context"], req.session)
|
parsed_context = parse_context(filter["context"], req.session)
|
||||||
filter["context"] = (parsed_context
|
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))
|
else req.session.eval_context(parsed_context))
|
||||||
|
|
||||||
parsed_domain = parse_domain(filter["domain"], req.session)
|
parsed_domain = parse_domain(filter["domain"], req.session)
|
||||||
filter["domain"] = (parsed_domain
|
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))
|
else req.session.eval_domain(parsed_domain))
|
||||||
except Exception:
|
except Exception:
|
||||||
logger.exception("Failed to parse custom filter %s in %s",
|
logger.exception("Failed to parse custom filter %s in %s",
|
||||||
|
@ -1932,7 +1957,7 @@ class Reports(View):
|
||||||
|
|
||||||
report_srv = req.session.proxy("report")
|
report_srv = req.session.proxy("report")
|
||||||
context = req.session.eval_context(
|
context = req.session.eval_context(
|
||||||
common.nonliterals.CompoundContext(
|
nonliterals.CompoundContext(
|
||||||
req.context or {}, action[ "context"]))
|
req.context or {}, action[ "context"]))
|
||||||
|
|
||||||
report_data = {}
|
report_data = {}
|
||||||
|
|
|
@ -34,13 +34,10 @@ import openerp
|
||||||
import nonliterals
|
import nonliterals
|
||||||
import session
|
import session
|
||||||
|
|
||||||
__all__ = ['Root', 'jsonrequest', 'httprequest', 'Controller',
|
|
||||||
'WebRequest', 'JsonRequest', 'HttpRequest']
|
|
||||||
|
|
||||||
_logger = logging.getLogger(__name__)
|
_logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
#----------------------------------------------------------
|
#----------------------------------------------------------
|
||||||
# OpenERP Web RequestHandler
|
# RequestHandler
|
||||||
#----------------------------------------------------------
|
#----------------------------------------------------------
|
||||||
class WebRequest(object):
|
class WebRequest(object):
|
||||||
""" Parent class for all OpenERP Web request types, mostly deals with
|
""" Parent class for all OpenERP Web request types, mostly deals with
|
||||||
|
@ -327,7 +324,7 @@ def httprequest(f):
|
||||||
return http_handler
|
return http_handler
|
||||||
|
|
||||||
#----------------------------------------------------------
|
#----------------------------------------------------------
|
||||||
# OpenERP Web Controller registration with a metaclass
|
# Controller registration with a metaclass
|
||||||
#----------------------------------------------------------
|
#----------------------------------------------------------
|
||||||
addons_module = {}
|
addons_module = {}
|
||||||
addons_manifest = {}
|
addons_manifest = {}
|
||||||
|
@ -344,7 +341,7 @@ class Controller(object):
|
||||||
__metaclass__ = ControllerType
|
__metaclass__ = ControllerType
|
||||||
|
|
||||||
#----------------------------------------------------------
|
#----------------------------------------------------------
|
||||||
# OpenERP Web Session context manager
|
# Session context manager
|
||||||
#----------------------------------------------------------
|
#----------------------------------------------------------
|
||||||
STORES = {}
|
STORES = {}
|
||||||
|
|
||||||
|
@ -415,7 +412,7 @@ def session_context(request, storage_path, session_cookie='httpsessionid'):
|
||||||
session_store.save(request.session)
|
session_store.save(request.session)
|
||||||
|
|
||||||
#----------------------------------------------------------
|
#----------------------------------------------------------
|
||||||
# OpenERP Web WSGI Application
|
# WSGI Application
|
||||||
#----------------------------------------------------------
|
#----------------------------------------------------------
|
||||||
# Add potentially missing (older ubuntu) font mime types
|
# Add potentially missing (older ubuntu) font mime types
|
||||||
mimetypes.add_type('application/font-woff', '.woff')
|
mimetypes.add_type('application/font-woff', '.woff')
|
||||||
|
@ -557,5 +554,4 @@ class Root(object):
|
||||||
def wsgi_postload():
|
def wsgi_postload():
|
||||||
openerp.wsgi.register_wsgi_handler(Root())
|
openerp.wsgi.register_wsgi_handler(Root())
|
||||||
|
|
||||||
|
|
||||||
# vim:et:ts=4:sw=4:
|
# vim:et:ts=4:sw=4:
|
|
@ -1,21 +1,14 @@
|
||||||
try:
|
import openerp
|
||||||
# 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
|
|
||||||
|
|
||||||
class DiagramView(View):
|
class DiagramView(openerp.addons.web.controllers.main.View):
|
||||||
_cp_path = "/web_diagram/diagram"
|
_cp_path = "/web_diagram/diagram"
|
||||||
|
|
||||||
@openerpweb.jsonrequest
|
@openerp.addons.web.http.jsonrequest
|
||||||
def load(self, req, model, view_id):
|
def load(self, req, model, view_id):
|
||||||
fields_view = self.fields_view_get(req, model, view_id, 'diagram')
|
fields_view = self.fields_view_get(req, model, view_id, 'diagram')
|
||||||
return {'fields_view': fields_view}
|
return {'fields_view': fields_view}
|
||||||
|
|
||||||
@openerpweb.jsonrequest
|
@openerp.addons.web.http.jsonrequest
|
||||||
def get_diagram_info(self, req, id, model, node, connector,
|
def get_diagram_info(self, req, id, model, node, connector,
|
||||||
src_node, des_node, label, **kw):
|
src_node, des_node, label, **kw):
|
||||||
|
|
||||||
|
|
|
@ -1,19 +1,12 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
try:
|
import openerp
|
||||||
# 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
|
|
||||||
|
|
||||||
from lxml import etree
|
from lxml import etree
|
||||||
|
|
||||||
class GraphView(View):
|
class GraphView(openerp.addons.web.controllers.main.View):
|
||||||
_cp_path = '/web_graph/graph'
|
_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):
|
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)
|
obj = req.session.model(model)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue