Пример #1
0
 def end_mapping(self, name=None):
     """ Create an end-mapping tag (a literal).  If ``name`` is ``None``,
     the name of this node will be used to generate the name in the tag.
     See the :term:`Peppercorn` documentation for more information.
     """
     if name is None:
         name = self.name
     tag = '<input type="hidden" name="__end__" value="%s:mapping"/>'
     return Markup(tag % (name, ))
Пример #2
0
 def start_sequence(self, name=None):
     """ Create a start-sequence tag (a literal).  If ``name`` is ``None``,
     the name of this node will be used to generate the name in the tag.
     See the :term:`Peppercorn` documentation for more information.
     """
     if name is None:
         name = self.name
     tag = '<input type="hidden" name="__start__" value="%s:sequence"/>'
     return Markup(tag % (name, ))
Пример #3
0
def save_coverage(tree, templates, output_dir, app_name, granularity):
    groups = Utils2.get_groupped_classes(tree)
    init_row = templates['init_row.pt']
    init_table = templates['init_table.pt']
    index_template = templates['index.pt']

    rows = []
    total_coverage_data = CoverageData()
    for g in groups:
        (package, path,
         coverage_data) = save_package_indexhtml(g, templates, output_dir,
                                                 app_name, granularity)
        coverage = coverage_data.get_formatted_coverage(granularity)
        row = init_row(
            elementlink=path,
            type='package',
            elementname=package,
            coverage=coverage,
            respath='',
            coverage_data=coverage_data,
            is_instruction_level=Granularity.is_instruction(granularity),
            progress_covered=coverage_data.covered(granularity),
            progress_missed=coverage_data.missed(granularity))
        rows.append(Markup(row))
        total_coverage_data.add_data(coverage_data)
    total_coverage = total_coverage_data.get_formatted_coverage(granularity)
    table = init_table(
        rows=Markup("\n".join(rows)),
        total_coverage=total_coverage,
        total_coverage_data=total_coverage_data,
        is_instruction_level=Granularity.is_instruction(granularity),
        progress_covered=total_coverage_data.covered(granularity),
        progress_all=total_coverage_data.coverable(granularity))
    root_path = ''
    html = index_template(table=Markup(table),
                          appname=app_name,
                          title=app_name,
                          package=None,
                          respath=root_path,
                          file_name=None,
                          granularity=Granularity.get(granularity))
    path = os.path.join(output_dir, 'index.html')
    with open(path, 'w') as f:
        f.write(html)
Пример #4
0
    def __call__(self, econtext):
        name = super(TileExpression, self).__call__(econtext)
        context = econtext.vars["context"]
        request = econtext.vars["request"]

        tile = getTile(context, request, name)
        if tile is None:  # XXX Use custom exception?
            log.warning("Request for unknown tile %s", name)
            return ""
        return Markup(tile())
Пример #5
0
    def populate_tos(self):
        url = self.request.app.org.meta.get('tos_url', None)

        if not url or self.request.current_user.data.get('tos_accepted', None):
            self.delete_field('accept_tos')
            return

        layout = DefaultLayout(self.model, self.request)

        self.accept_tos.description = Markup(
            render_macro(layout.macros['accept_tos'], self.request,
                         {'url': url}))
Пример #6
0
 def __init__(self,
              schema,
              action="",
              method="POST",
              buttons=(),
              formid="deform",
              use_ajax=False,
              ajax_options="{}",
              autocomplete=None,
              focus="on",
              **kw):
     if autocomplete:
         autocomplete = "on"
     elif autocomplete is not None:
         autocomplete = "off"
     self.autocomplete = autocomplete
     if str(focus).lower() == "off":
         self.focus = "off"
     else:
         self.focus = "on"
     # Use kwargs to pass flags to descendant fields; saves cluttering
     # the constructor
     kw["focus"] = self.focus
     field.Field.__init__(self, schema, **kw)
     _buttons = []
     for button in buttons:
         if isinstance(button, compat.string_types):
             button = Button(button)
         _buttons.append(button)
     self.action = action
     self.method = method
     self.buttons = _buttons
     self.formid = formid
     self.use_ajax = use_ajax
     self.ajax_options = Markup(ajax_options.strip())
     form_widget = getattr(schema, "widget", None)
     if form_widget is None:
         form_widget = widget.FormWidget()
     self.widget = form_widget
Пример #7
0
 def __init__(self, schema, action='', method='POST', buttons=(),
              formid='deform', use_ajax=False, ajax_options='{}',
              autocomplete=None, **kw):
     if autocomplete:
         autocomplete = 'on'
     elif autocomplete is not None:
         autocomplete = 'off'
     self.autocomplete = autocomplete
     field.Field.__init__(self, schema, **kw)
     _buttons = []
     for button in buttons:
         if isinstance(button, compat.string_types):
             button = Button(button)
         _buttons.append(button)
     self.action = action
     self.method = method
     self.buttons = _buttons
     self.formid = formid
     self.use_ajax = use_ajax
     self.ajax_options = Markup(ajax_options.strip())
     form_widget = getattr(schema, 'widget', None)
     if form_widget is None:
         form_widget = widget.FormWidget()
     self.widget = form_widget
Пример #8
0
def save_class(cl, class_template, output_dir, app_name, granularity):
    dir = os.path.join(output_dir, cl.folder)
    if not os.path.exists(dir):
        os.makedirs(dir)
    class_path = os.path.join(dir, cl.file_name + '.html')
    buf = [LI_TAG(d) for d in cl.get_class_description()]
    buf.append(LI_TAG(''))
    buf.extend([LI_TAG(a) for a in cl.get_annotations()])
    buf.append(LI_TAG(''))
    buf.extend([LI_TAG(f) for f in cl.get_fields()])
    buf.append(LI_TAG(''))
    for m in cl.methods:
        ins_buf = []
        for ins in m.insns:
            if ins.covered:
                ins_buf.append(span_tab_tag(ins.buf, COV_CLASS))
            else:
                ins_buf.append(span_tab_tag(ins.buf))
        # insert labels and tries
        # sort the labels by index
        count = 0
        labels = m.labels.values()
        labels = sorted(labels, key=attrgetter('index'))
        for l in labels:
            if l.covered:
                ins_buf.insert(l.index + count, span_tab_tag(l.buf, COV_CLASS))
            else:
                ins_buf.insert(l.index + count, span_tab_tag(l.buf))
            count += 1
            for t in l.tries:
                ins_buf.insert(l.index + count, span_tab_tag(t.buf))
                count += 1
            if l.switch:
                for sl in l.switch.buf:
                    ins_buf.insert(l.index + count, span_tab_tag(sl))
                    count += 1
            if l.array_data:
                for sl in l.array_data.buf:
                    ins_buf.insert(l.index + count, span_tab_tag(sl))
                    count += 1
        ins_buf.insert(0, LI_TAG(''))
        for a in m.annotations:
            a.reload()
            ins_buf[0:0] = [span_tab_tag(d) for d in a.buf]
        for p in reversed(m.parameters):
            p.reload()
            ins_buf[0:0] = [span_tab_tag(d) for d in p.buf]
        ins_buf.insert(0, span_tab_tag(m.get_registers_line()))
        html_method_line = span_tag(
            cgi.escape(m.get_method_line()),
            COV_CLASS) if m.called else m.get_method_line()
        ins_buf.insert(0, html_method_line)
        ins_buf.append(LI_TAG(".end method"))
        buf.append(LI_TAG(''))
        buf.extend(ins_buf)
    slash_num = cl.name.count('/')
    respath = ''
    for i in range(slash_num):
        respath += '../'
    html = class_template(code=Markup("\n".join(buf)),
                          appname=app_name,
                          title=cl.file_name,
                          package=Utils2.get_standart_package_name(cl.name),
                          respath=respath,
                          granularity=Granularity.get(granularity))
    with open(class_path, 'w') as f:
        f.write(html)
Пример #9
0
 def rendered_infos(self):
     return Markup(''.join(
         div_template(value=x) for x in self.iter_infos()))
Пример #10
0
 def iter_items(self):
     # make a copy for modification
     data = dict(self.data)
     if 'server_name' in data:
         yield Info('Server Name', data.pop('server_name'))
     platform = data.pop('platform', None)
     if platform:
         yield Info('Platform', platform)
     if 'level' in data:
         yield Info('Level', data.pop('level'))
     data.pop('timestamp', None)
     if 'transaction' in data:
         yield Info('Transaction', data.pop('transaction'))
     request = dict(data.pop('request', {}))
     if 'method' in request:
         yield Info('Request Method', request.get('method'))
     if 'url' in request:
         yield Info(
             'Request URL',
             Markup(url_template(url=request['url'], title=request['url'])))
     if request.get('query_string'):
         qs = request.get('query_string')
         try:
             qs = urlparse.parse_qs(qs)
             yield Info(
                 'Request Query String',
                 Markup(tabled_dict_template(value=qs, pformat=pformat)))
         except Exception:
             yield Info('Request Query String', qs)
     if platform == 'python' and 'values' in data.get('exception', {}):
         exception = dict(data.pop('exception'))
         values = exception.pop('values', [])
         num_values = len(values)
         if num_values > 1:
             title_fmt = 'Exception {}/%s' % num_values
         else:
             title_fmt = 'Exception'
         for index, value in enumerate(values, start=1):
             if 'stacktrace' in value and 'frames' in value['stacktrace']:
                 frames = value['stacktrace'].pop('frames')
                 if not value['stacktrace']:
                     del value['stacktrace']
                 yield Info(title_fmt.format(index) + ' Frames',
                            Markup(''.join(render_frame(x)
                                           for x in frames)),
                            toggle=True,
                            toggled=index > 1)
             yield Info(
                 value.pop('type', None),
                 Markup(pre_wrap_template(value=value.pop('value', None))))
             yield Info(
                 title_fmt.format(index) + ' Info',
                 Markup(tabled_dict_template(value=value, pformat=pformat)))
         # in case there are more items
         if exception:
             yield Info(
                 'Exception Meta',
                 Markup(
                     tabled_dict_template(value=exception,
                                          pformat=pformat)))
     if 'logentry' in data:
         yield Info(
             'Log Entry',
             Markup(
                 tabled_dict_template(value=data.pop('logentry'),
                                      pformat=pformat)))
     if 'logger' in data:
         yield Info('Logger', data.pop('logger'))
     if request:
         yield Info(
             'Request',
             Markup(tabled_dict_template(value=request, pformat=pformat)))
     for key, value in sorted(data.items()):
         yield Info(key, Markup(pre_template(value=pformat(value))))