Beispiel #1
0
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)
Beispiel #2
0
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)
Beispiel #3
0
 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)
Beispiel #4
0
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)
Beispiel #5
0
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)
Beispiel #6
0
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)
Beispiel #7
0
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)
Beispiel #8
0
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)
Beispiel #9
0
 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')
Beispiel #10
0
 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')
Beispiel #11
0
 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)
Beispiel #12
0
 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)
Beispiel #13
0
 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)