# HG changeset patch # User Aurelien Campeas <aurelien.campeas@logilab.fr> # Date 1272036767 -7200 # Node ID e0ab7433e6401c378ad0ae6ea6eb093c10cd41de # Parent 105011657405e63ae33c7cc9a0565a5a4458e0f3# Parent 899d93e4dbe023500ef08d915d9940b5f1ef326c merge diff -r 105011657405 -r e0ab7433e640 cwconfig.py --- a/cwconfig.py Fri Apr 23 17:31:46 2010 +0200 +++ b/cwconfig.py Fri Apr 23 17:32:47 2010 +0200 @@ -226,7 +226,7 @@ }), ('short-line-size', {'type' : 'int', - 'default': 40, + 'default': 80, 'help': _('maximum number of characters in short description'), 'group': 'navigation', }), diff -r 105011657405 -r e0ab7433e640 devtools/test/unittest_testlib.py diff -r 105011657405 -r e0ab7433e640 devtools/testlib.py --- a/devtools/testlib.py Fri Apr 23 17:31:46 2010 +0200 +++ b/devtools/testlib.py Fri Apr 23 17:32:47 2010 +0200 @@ -14,11 +14,6 @@ from math import log from contextlib import contextmanager -try: - import json -except ImportError: - import simplejson as json - import yams.schema from logilab.common.testlib import TestCase, InnerTest @@ -35,7 +30,7 @@ from cubicweb.web import Redirect, application from cubicweb.devtools import SYSTEM_ENTITIES, SYSTEM_RELATIONS, VIEW_VALIDATORS from cubicweb.devtools import fake, htmlparser - +from cubicweb.utils import json # low-level utilities ########################################################## diff -r 105011657405 -r e0ab7433e640 test/unittest_utils.py --- a/test/unittest_utils.py Fri Apr 23 17:31:46 2010 +0200 +++ b/test/unittest_utils.py Fri Apr 23 17:32:47 2010 +0200 @@ -14,11 +14,7 @@ from cubicweb.utils import make_uid, UStringIO, SizeConstrainedList, RepeatList try: - try: - import json - except ImportError: - import simplejson as json - from cubicweb.utils import CubicWebJsonEncoder + from cubicweb.utils import CubicWebJsonEncoder, json except ImportError: json = None diff -r 105011657405 -r e0ab7433e640 utils.py --- a/utils.py Fri Apr 23 17:31:46 2010 +0200 +++ b/utils.py Fri Apr 23 17:32:47 2010 +0200 @@ -240,7 +240,7 @@ if self.jsvars: w(u'<script type="text/javascript"><!--//--><![CDATA[//><!--\n') for var, value, override in self.jsvars: - vardecl = u'%s = %s;' % (var, dumps(value)) + vardecl = u'%s = %s;' % (var, json.dumps(value)) if not override: vardecl = (u'if (typeof %s == "undefined") {%s}' % (var, vardecl)) @@ -339,16 +339,16 @@ return __answer_cache[0] try: - try: - # may not be there if cubicweb-web not installed - from json import dumps, JSONEncoder - except ImportError: - from simplejson import dumps, JSONEncoder + # may not be there if cubicweb-web not installed + if sys.version_info < (2,6): + import simplejson as json + else: + import json except ImportError: pass else: - class CubicWebJsonEncoder(JSONEncoder): + class CubicWebJsonEncoder(json.JSONEncoder): """define a json encoder to be able to encode yams std types""" # _iterencode is the only entry point I've found to use a custom encode @@ -356,14 +356,14 @@ # .iterencode() is called once on the main structure to encode and then # never gets called again. # For the record, our main use case is in FormValidateController with: - # dumps((status, args, entity), cls=CubicWebJsonEncoder) + # json.dumps((status, args, entity), cls=CubicWebJsonEncoder) # where we want all the entity attributes, including eid, to be part # of the json object dumped. # This would have once more been easier if Entity didn't extend dict. def _iterencode(self, obj, markers=None): if hasattr(obj, '__json_encode__'): obj = obj.__json_encode__() - return JSONEncoder._iterencode(self, obj, markers) + return json.JSONEncoder._iterencode(self, obj, markers) def default(self, obj): if isinstance(obj, datetime.datetime): @@ -377,7 +377,7 @@ elif isinstance(obj, decimal.Decimal): return float(obj) try: - return JSONEncoder.default(self, obj) + return json.JSONEncoder.default(self, obj) except TypeError: # we never ever want to fail because of an unknown type, # just return None in those cases. diff -r 105011657405 -r e0ab7433e640 view.py --- a/view.py Fri Apr 23 17:31:46 2010 +0200 +++ b/view.py Fri Apr 23 17:32:47 2010 +0200 @@ -12,11 +12,7 @@ from cStringIO import StringIO from warnings import warn -try: - from json import dumps -except ImportError: - from simplejson import dumps - +from cubicweb.utils import json from logilab.common.deprecation import deprecated from logilab.mtconverter import xml_escape @@ -487,11 +483,11 @@ def build_update_js_call(self, cbname, msg): rql = self.cw_rset.printable_rql() return "javascript:userCallbackThenUpdateUI('%s', '%s', %s, %s, '%s', '%s')" % ( - cbname, self.id, dumps(rql), dumps(msg), + cbname, self.id, json.dumps(rql), json.dumps(msg), self.__registry__, self.div_id()) def build_reload_js_call(self, cbname, msg): - return "javascript:userCallbackThenReloadPage('%s', %s)" % (cbname, dumps(msg)) + return "javascript:userCallbackThenReloadPage('%s', %s)" % (cbname, json.dumps(msg)) build_js = build_update_js_call # expect updatable component by default diff -r 105011657405 -r e0ab7433e640 web/__init__.py --- a/web/__init__.py Fri Apr 23 17:31:46 2010 +0200 +++ b/web/__init__.py Fri Apr 23 17:32:47 2010 +0200 @@ -10,10 +10,14 @@ __docformat__ = "restructuredtext en" _ = unicode -try: - from json import dumps -except ImportError: - from simplejson import dumps +import sys +if sys.version_info < (2,6): + import simplejson as json +else: + import json + +dumps = json.dumps + from urllib import quote as urlquote from logilab.common.deprecation import deprecated diff -r 105011657405 -r e0ab7433e640 web/_exceptions.py --- a/web/_exceptions.py Fri Apr 23 17:31:46 2010 +0200 +++ b/web/_exceptions.py Fri Apr 23 17:32:47 2010 +0200 @@ -57,8 +57,5 @@ self.reason = reason def dumps(self): - try: - from json import dumps - except ImportError: - from simplejson import dumps - return dumps({'reason': self.reason}) + from cubicweb.web import json + return json.dumps({'reason': self.reason}) diff -r 105011657405 -r e0ab7433e640 web/component.py --- a/web/component.py Fri Apr 23 17:31:46 2010 +0200 +++ b/web/component.py Fri Apr 23 17:32:47 2010 +0200 @@ -8,15 +8,11 @@ __docformat__ = "restructuredtext en" _ = unicode -try: - from json import dumps -except ImportError: - from simplejson import dumps - from logilab.common.deprecation import class_renamed from logilab.mtconverter import xml_escape from cubicweb import role +from cubicweb.web import json from cubicweb.view import Component from cubicweb.selectors import ( paginated_rset, one_line_rset, primary_view, match_context_prop, @@ -125,8 +121,8 @@ rql = params.pop('rql', self.cw_rset.printable_rql()) # latest 'true' used for 'swap' mode url = 'javascript: replacePageChunk(%s, %s, %s, %s, true)' % ( - dumps(params.get('divid', 'paginated-content')), - dumps(rql), dumps(params.pop('vid', None)), dumps(params)) + json.dumps(params.get('divid', 'paginated-content')), + json.dumps(rql), json.dumps(params.pop('vid', None)), json.dumps(params)) else: url = self._cw.build_url(path, **params) return url diff -r 105011657405 -r e0ab7433e640 web/request.py --- a/web/request.py Fri Apr 23 17:31:46 2010 +0200 +++ b/web/request.py Fri Apr 23 17:32:47 2010 +0200 @@ -16,11 +16,6 @@ from urlparse import urlsplit from itertools import count -try: - from json import dumps -except ImportError: - from simplejson import dumps - from rql.utils import rqlvar_maker from logilab.common.decorators import cached @@ -33,7 +28,8 @@ from cubicweb.utils import SizeConstrainedList, HTMLHead, make_uid from cubicweb.view import STRICT_DOCTYPE, TRANSITIONAL_DOCTYPE_NOEXT from cubicweb.web import (INTERNAL_FIELD_VALUE, LOGGER, NothingToEdit, - RequestError, StatusResponse) + RequestError, StatusResponse, json) +dumps = json.dumps _MARKER = object() diff -r 105011657405 -r e0ab7433e640 web/test/unittest_views_basecontrollers.py --- a/web/test/unittest_views_basecontrollers.py Fri Apr 23 17:31:46 2010 +0200 +++ b/web/test/unittest_views_basecontrollers.py Fri Apr 23 17:32:47 2010 +0200 @@ -5,10 +5,6 @@ :contact: http://www.logilab.fr/ -- mailto:contact@logilab.fr :license: GNU Lesser General Public License, v2.1 - http://www.gnu.org/licenses """ -try: - import json -except ImportError: - import simplejson as json from logilab.common.testlib import unittest_main, mock_object @@ -16,7 +12,7 @@ from cubicweb.view import STRICT_DOCTYPE from cubicweb.devtools.testlib import CubicWebTC from cubicweb.uilib import rql_for_eid -from cubicweb.web import INTERNAL_FIELD_VALUE, Redirect, RequestError +from cubicweb.web import INTERNAL_FIELD_VALUE, Redirect, RequestError, json from cubicweb.entities.authobjs import CWUser from cubicweb.web.views.autoform import get_pending_inserts, get_pending_deletes u = unicode diff -r 105011657405 -r e0ab7433e640 web/test/unittest_views_baseviews.py --- a/web/test/unittest_views_baseviews.py Fri Apr 23 17:31:46 2010 +0200 +++ b/web/test/unittest_views_baseviews.py Fri Apr 23 17:32:47 2010 +0200 @@ -5,11 +5,6 @@ :contact: http://www.logilab.fr/ -- mailto:contact@logilab.fr :license: GNU Lesser General Public License, v2.1 - http://www.gnu.org/licenses """ -try: - from json import loads -except ImportError: - from simplejson import loads - from logilab.common.testlib import unittest_main from logilab.mtconverter import html_unescape @@ -17,6 +12,8 @@ from cubicweb.web.htmlwidgets import TableWidget from cubicweb.web.views import vid_from_rset +from cubicweb.web import json +loads = json.loads def loadjson(value): return loads(html_unescape(value)) diff -r 105011657405 -r e0ab7433e640 web/views/autoform.py --- a/web/views/autoform.py Fri Apr 23 17:31:46 2010 +0200 +++ b/web/views/autoform.py Fri Apr 23 17:32:47 2010 +0200 @@ -109,11 +109,6 @@ from warnings import warn -try: - from json import dumps -except ImportError: - from simplejson import dumps - from logilab.mtconverter import xml_escape from logilab.common.decorators import iclassmethod, cached @@ -123,7 +118,7 @@ from cubicweb.selectors import ( match_kwargs, match_form_params, non_final_entity, specified_etype_implements) -from cubicweb.web import stdmsgs, uicfg, eid_param, \ +from cubicweb.web import stdmsgs, uicfg, eid_param, dumps, \ form as f, formwidgets as fw, formfields as ff from cubicweb.web.views import forms diff -r 105011657405 -r e0ab7433e640 web/views/basecontrollers.py --- a/web/views/basecontrollers.py Fri Apr 23 17:31:46 2010 +0200 +++ b/web/views/basecontrollers.py Fri Apr 23 17:32:47 2010 +0200 @@ -12,11 +12,6 @@ from smtplib import SMTP -try: - import json -except ImportError: - import simplejson as json - from logilab.common.decorators import cached from logilab.common.date import strptime @@ -25,7 +20,7 @@ from cubicweb.utils import CubicWebJsonEncoder from cubicweb.selectors import authenticated_user, match_form_params from cubicweb.mail import format_mail -from cubicweb.web import ExplicitLogin, Redirect, RemoteCallFailed, json_dumps +from cubicweb.web import ExplicitLogin, Redirect, RemoteCallFailed, json_dumps, json from cubicweb.web.controller import Controller from cubicweb.web.views import vid_from_rset from cubicweb.web.views.formrenderers import FormRenderer diff -r 105011657405 -r e0ab7433e640 web/views/baseviews.py --- a/web/views/baseviews.py Fri Apr 23 17:31:46 2010 +0200 +++ b/web/views/baseviews.py Fri Apr 23 17:32:47 2010 +0200 @@ -311,7 +311,8 @@ def call(self, **kwargs): """display a list of entities by calling their <item_vid> view""" - if not 'vtitle' in self._cw.form: + showtitle = kwargs.pop('showtitle', not 'vtitle' in self._cw.form) + if showtitle: self.w(u'<h1>%s</h1>' % self.title) super(SameETypeListView, self).call(**kwargs) diff -r 105011657405 -r e0ab7433e640 web/views/editforms.py --- a/web/views/editforms.py Fri Apr 23 17:31:46 2010 +0200 +++ b/web/views/editforms.py Fri Apr 23 17:32:47 2010 +0200 @@ -11,11 +11,6 @@ from copy import copy -try: - from json import dumps -except ImportError: - from simplejson import dumps - from logilab.mtconverter import xml_escape from logilab.common.decorators import cached @@ -23,7 +18,7 @@ specified_etype_implements, implements, yes) from cubicweb.view import EntityView from cubicweb import tags -from cubicweb.web import uicfg, stdmsgs, eid_param, \ +from cubicweb.web import uicfg, stdmsgs, eid_param, dumps, \ formfields as ff, formwidgets as fw from cubicweb.web.form import FormViewMixIn, FieldNotFound from cubicweb.web.views import forms diff -r 105011657405 -r e0ab7433e640 web/views/facets.py --- a/web/views/facets.py Fri Apr 23 17:31:46 2010 +0200 +++ b/web/views/facets.py Fri Apr 23 17:32:47 2010 +0200 @@ -7,16 +7,12 @@ """ __docformat__ = "restructuredtext en" -try: - from json import dumps -except ImportError: - from simplejson import dumps - from logilab.mtconverter import xml_escape from cubicweb.appobject import objectify_selector from cubicweb.selectors import (non_final_entity, multi_lines_rset, match_context_prop, yes, relation_possible) +from cubicweb.web import dumps from cubicweb.web.box import BoxTemplate from cubicweb.web.facet import (AbstractFacet, FacetStringWidget, RelationFacet, prepare_facets_rqlst, filter_hiddens, _cleanup_rqlst, diff -r 105011657405 -r e0ab7433e640 web/views/formrenderers.py --- a/web/views/formrenderers.py Fri Apr 23 17:31:46 2010 +0200 +++ b/web/views/formrenderers.py Fri Apr 23 17:32:47 2010 +0200 @@ -25,15 +25,10 @@ from logilab.common import dictattr from logilab.mtconverter import xml_escape -try: - from json import dumps -except ImportError: - from simplejson import dumps - from cubicweb import tags from cubicweb.appobject import AppObject from cubicweb.selectors import implements, yes -from cubicweb.web import eid_param, formwidgets as fwdgs +from cubicweb.web import dumps, eid_param, formwidgets as fwdgs def checkbox(name, value, attrs='', checked=None): diff -r 105011657405 -r e0ab7433e640 web/views/igeocodable.py --- a/web/views/igeocodable.py Fri Apr 23 17:31:46 2010 +0200 +++ b/web/views/igeocodable.py Fri Apr 23 17:32:47 2010 +0200 @@ -7,14 +7,10 @@ """ __docformat__ = "restructuredtext en" -try: - import json -except ImportError: - import simplejson as json - from cubicweb.interfaces import IGeocodable from cubicweb.view import EntityView from cubicweb.selectors import implements +from cubicweb.web import json class GeocodingJsonView(EntityView): __regid__ = 'geocoding-json' diff -r 105011657405 -r e0ab7433e640 web/views/plots.py --- a/web/views/plots.py Fri Apr 23 17:31:46 2010 +0200 +++ b/web/views/plots.py Fri Apr 23 17:32:47 2010 +0200 @@ -7,17 +7,13 @@ """ __docformat__ = "restructuredtext en" -try: - from json import dumps -except ImportError: - from simplejson import dumps - from logilab.common.date import datetime2ticks from logilab.mtconverter import xml_escape from cubicweb.utils import UStringIO from cubicweb.appobject import objectify_selector from cubicweb.selectors import multi_columns_rset +from cubicweb.web import dumps from cubicweb.web.views import baseviews @objectify_selector diff -r 105011657405 -r e0ab7433e640 web/views/timeline.py --- a/web/views/timeline.py Fri Apr 23 17:31:46 2010 +0200 +++ b/web/views/timeline.py Fri Apr 23 17:32:47 2010 +0200 @@ -9,16 +9,12 @@ """ __docformat__ = "restructuredtext en" -try: - import json -except ImportError: - import simplejson as json - from logilab.mtconverter import xml_escape from cubicweb.interfaces import ICalendarable from cubicweb.selectors import implements from cubicweb.view import EntityView, StartupView +from cubicweb.web import json _ = unicode diff -r 105011657405 -r e0ab7433e640 web/views/treeview.py --- a/web/views/treeview.py Fri Apr 23 17:31:46 2010 +0200 +++ b/web/views/treeview.py Fri Apr 23 17:32:47 2010 +0200 @@ -7,16 +7,12 @@ """ __docformat__ = "restructuredtext en" -try: - import json -except ImportError: - import simplejson as json - from logilab.mtconverter import xml_escape from cubicweb.utils import make_uid from cubicweb.interfaces import ITree from cubicweb.selectors import implements from cubicweb.view import EntityView +from cubicweb.web import json def treecookiename(treeid): return str('%s-treestate' % treeid)