def render_ajax_form(model, request, name): """Render ajax form. """ try: result = render_tile(model, request, name) selector = request.environ.get('cone.app.form.selector', '#content') mode = request.environ.get('cone.app.form.mode', 'inner') continuation = request.environ.get('cone.app.continuation') form_continue = AjaxFormContinue(result, continuation) rendered_form = form_continue.form rendered = ajax_form_template % { 'form': rendered_form, 'selector': selector, 'mode': mode, 'next': form_continue.next } request.response.body = safe_encode(rendered) return request.response except Exception: result = '<div>Form rendering error</div>' selector = request.environ.get('cone.app.form.selector', '#content') mode = request.environ.get('cone.app.form.mode', 'inner') tb = format_traceback() continuation = AjaxMessage(tb, 'error', None) form_continue = AjaxFormContinue(result, [continuation]) rendered = ajax_form_template % { 'form': form_continue.form.replace(u'\n', u' '), # XXX: replace? 'selector': selector, 'mode': mode, 'next': form_continue.next } return Response(rendered)
def _init(self): data = object.__getattribute__(self, '_data') config = self.config() for key, value in data.items(): value = safe_encode( value, encoding=self.encoding) if IS_PY2 else str(value) config.set(self.properties_section, key, value)
def make_query(quote_params=QUOTE_PARAMS, **kw): query = list() for name, param in sorted(kw.items()): if param is None: continue if isinstance(param, compat.STR_TYPE): param = [param] if type(param) in compat.NUMBER_TYPES: param = [str(param)] quote = name in quote_params for p in param: p = safe_encode(p) if compat.IS_PY2 else p query.append('{}={}'.format(name, compat.quote(p) if quote else p)) query = '&'.join(query) if query: return '?{}'.format(query)
def make_query(quote_params=QUOTE_PARAMS, **kw): query = list() for name, param in kw.items(): if param is None: continue if isinstance(param, basestring): param = [param] if type(param) in (types.IntType, types.FloatType): param = [str(param)] quote = name in quote_params for p in param: p = safe_encode(p) query.append('{}={}'.format(name, urllib2.quote(p) if quote else p)) query = '&'.join(query) if query: return '?{}'.format(query)
def make_url(request, path=None, node=None, resource=None, query=None): # if path=[] in signature, path gets aggregated in recursive calls ??? # happens on icon lookup in navtree. # ^^^ that is because the [] (a list, mutable) is generated at compile # time. mutable values should not be in function signatures to avoid this. if path is None: path = [] else: path = copy.copy(path) if node is not None: path = node_path(node) if resource is not None: path.append(resource) path = [urllib2.quote(safe_encode(it)) for it in path] url = '{}/{}'.format(request.application_url, '/'.join(path)) if not query: return url return '{}{}'.format(url, query)
def make_url(request, path=None, node=None, resource=None, query=None): # if path=[] in signature, path gets aggregated in recursive calls ??? # happens on icon lookup in navtree. # ^^^ that is because the [] (a list, mutable) is generated at compile # time. mutable values should not be in function signatures to avoid this. if path is None: path = [] else: path = copy.copy(path) if node is not None: path = node_path(node) if resource is not None: path.append(resource) path = [compat.quote(safe_encode(it)) for it in path] url = '{}/{}'.format(request.application_url, '/'.join(path)) if not query: return url return '{}{}'.format(url, query)
def test_safe_encode(self): self.assertEqual(safe_encode(u'äöü'), b'\xc3\xa4\xc3\xb6\xc3\xbc') self.assertEqual(safe_encode(b'already_string'), b'already_string')
def __setattr__(self, name, value): value = safe_encode(value, encoding=self.encoding) if IS_PY2 else str(value) self.config().set(self.properties_section, name, value)
def _init(self): data = object.__getattribute__(self, '_data') config = self.config() for key, value in data.items(): value = safe_encode(value, encoding=self.encoding) if IS_PY2 else str(value) config.set(self.properties_section, key, value)