예제 #1
0
    def expand_macro(self, formatter, name, content):
        """
        Execute the macro. When it is used as a Macro, and not as a wiki processor,
        the arguments to the macro are passed in content. If there is an error
        getting the RSS content, a brief error text is printed.

        :returns: RSS headers, in html formatting.
        """
        if name != 'ListRssFeed':
            return None
        if not content:
            return ''

        args = content.split(',')
        if not args:
            raise Exception("No argument.")

        req = formatter.req
        data = {}
        (data['rss'], data['caption'], data['limit'],
         data['separator'], data['icon'], data['full_link']) = self.get_settings(args)
        try:
            data['items'] = self.get_feed(data['rss'], data['limit'])
        except Exception, e:
            self.log.exception("Settings Exception")
            return html.pre("<Cannot view RSS content: %s>" % str(e))
예제 #2
0
 def render(self, context, mimetype, content, filename=None, url=None):
     self.log.debug("Using Markdown Mimeviewer")
     req = context.req
     add_stylesheet(req, 'readme/readme.css')
     content = content_to_unicode(self.env, content, mimetype)
     # for some insane reason genshi will only preserve whitespace of
     # <pre> elements, trac calls Stream.render() inappropriately.
     return tag.pre(content.encode('utf-8'))
예제 #3
0
 def check_syntax(self, kind, content):
     try:
         diag.get_builder(kind)().parse_string(content)
         return True
     except:
         msg = kind + 'diag: an error occurred while parsing source text.'
         msg = html.strong(msg)
         pre = html.pre(content)
         return html.div(msg, pre)
예제 #4
0
 def expand_macro(self, formatter, name, content, args=None):
     if content:
         arg = content.strip().split()
         doc = getattr(TracAdmin, "_help_" + arg[0], None)
         if doc is None:
             cmd_mgr = AdminCommandManager(self.env)
             doc = cmd_mgr.get_command_help(arg)
         if not doc:
             raise MacroError(_('Unknown trac-admin command '
                                '"%(command)s"', command=content))
     else:
         doc = TracAdmin.all_docs(self.env)
     buf = io.StringIO()
     TracAdmin.print_doc(doc, buf, long=True)
     return html.pre(buf.getvalue(), class_='wiki')
예제 #5
0
    def expand_macro(self, formatter, name, content, args={}):
        reponame = args.get('repository') or ''
        rev_str = args.get('revision')
        repos = RepositoryManager(self.env).get_repository(reponame)
        rev = None
        try:
            changeset = repos.get_changeset(repos.normalize_rev(rev_str))
            message = changeset.message
            rev = repos.db_rev(changeset.rev)
            resource = repos.resource

            # add review status to commit message (
            review = CodeReview(self.env, reponame, rev)
            status = review.encode(review.status)
            message += '\n\n{{{#!html \n'
            message += '<div class="codereviewstatus">'
            message += '  <div class="system-message %s">' % status.lower()
            message += '    <p>Code review status: '
            message += '      <span>%s</span>' % review.status
            message += '    </p>'
            message += '  </div>'
            message += '</div>'
            message += '\n}}}'

        except Exception:
            message = content
            resource = Resource('repository', reponame)
        if formatter.context.resource.realm == 'ticket':
            ticket_re = CommitTicketUpdater.ticket_re
            if not any(
                    int(tkt_id) == int(formatter.context.resource.id)
                    for tkt_id in ticket_re.findall(message)):
                return tag.p(
                    "(The changeset message doesn't reference this "
                    "ticket)",
                    class_='hint')
        if ChangesetModule(self.env).wiki_format_messages:
            ctxt = formatter.context
            return tag.div(format_to_html(self.env,
                                          ctxt('changeset',
                                               rev,
                                               parent=resource),
                                          message,
                                          escape_newlines=True),
                           class_='message')
        else:
            return tag.pre(message, class_='message')