Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
reponame = args.get('repository') or ''
rev = args.get('revision')
repos = RepositoryManager(self.env).get_repository(reponame)
try:
changeset = repos.get_changeset(rev)
message = changeset.message
rev = changeset.rev
resource = repos.resource
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:
return tag.div(format_to_html(self.env,
formatter.context.child('changeset', rev, parent=resource),
message, escape_newlines=True), class_='message')
else:
return tag.pre(message, class_='message')
all_revs = set(repos._get_node_revs(spath))
# TODO: also pass first_rev here, for getting smaller a set
# (this is an optmization fix, result is already correct)
added &= all_revs
removed &= all_revs
added_ni &= all_revs
removed_ni &= all_revs
except NoSuchNode:
pass
if added or removed:
modified_sources.append((
spath, [_get_source_link(spath, new_context), status],
added and tag(added_label, revs_link(added, new_context)),
removed and tag(removed_label,
revs_link(removed, old_context)),
added_ni and tag(added_ni_label,
revs_link(added_ni, new_context)),
removed_ni and tag(removed_ni_label,
revs_link(removed_ni, old_context))
))
# Go through remaining old sources, those were deleted
removed_sources = []
for spath, old_revs in old_sources.iteritems():
removed_sources.append((spath,
_get_source_link(spath, old_context)))
if modified_sources or removed_sources:
modified_sources.sort()
removed_sources.sort()
changes = tag.table(tag.tbody(
[tag.tr(tag.td(c) for c in cols[1:])
for cols in modified_sources],
[tag.tr(tag.td(src), tag.td(_('removed'), colspan=4))
def render_hierarchy(group):
return tag.ul(
tag.li(tag(tag.a(elt[0], href=formatter.href.wiki(elt[1]))
if elt[1] else tag(elt[0]),
render_hierarchy(elt[2]))
if len(elt) == 3 else
tag.a('/'.join(elt[0]),
href=formatter.href.wiki(elt[1])))
for elt in group)
def expand_macro(self, formatter, name, content):
interwikis = []
for k in sorted(self.keys()):
prefix, url, title = self[k]
interwikis.append({
'prefix': prefix, 'url': url, 'title': title,
'rc_url': self._expand_or_append(url, ['RecentChanges']),
'description': url if title == prefix else title})
return tag.table(tag.tr(tag.th(tag.em("Prefix")),
tag.th(tag.em("Site"))),
[tag.tr(tag.td(tag.a(w['prefix'], href=w['rc_url'])),
tag.td(tag.a(w['description'],
href=w['url'])))
for w in interwikis ],
class_="wiki interwiki")
def dispatcher(name, arg_string, body, isblock, (environ, data)):
if name in environ.macros:
macro = Macro(name, arg_string, body, isblock)
args, kwargs = parse_args(arg_string)
try:
return environ.macros[name](macro, environ, data,
*args, **kwargs)
except Exception, e:
error = "ERROR: Error while executing macro %s (%s)" % (name, e)
traceback = format_exc()
return tag.div(
tag.p(error),
highlight(traceback, lang="pytb"),
class_="error"
)
else:
return tag.div(tag.p("Macro %s Not Found!" % name), class_="error")
def handle_match(self, fullmatch):
if self.parent_match is None:
return super(EmbeddedLinkFormatter, self).handle_match(fullmatch)
for itype, match in fullmatch.groupdict().items():
if match and not itype in self.wikiparser.helper_patterns:
# Check for preceding escape character '!'
if match[0] == '!':
# Erroneous expression. Nested link would be escaped
return tag.a(self.parent_match['label'], class_='missing')
if itype in self.wikiparser.external_handlers:
#TODO: Important! Add product prefix in label (when needed?)
external_handler = self.wikiparser.external_handlers[itype]
link = external_handler(self, match, fullmatch)
else:
internal_handler = getattr(self, '_%s_formatter' % itype)
link = internal_handler(match, fullmatch)
return self.enhance_link(link)
def get_navigation_items(self, req):
if req.authname and req.authname != 'anonymous':
if not self.env.is_component_enabled(LoginModule):
yield ('metanav', 'openidlogin', 'logged in as %s' % (req.session.get('name') or req.authname))
yield ('metanav', 'openidlogout',
tag.a('Logout', href=req.href.openidlogout()))
else:
yield ('metanav', 'openidlogin', tag.a(('OpenID Login'), href=req.href.openidlogin()))
def render_ticket_action_control(self, req, ticket, action):
id, grade = self._get_grade(req, action)
review_options = self._get_review_options(action)
actions = ConfigurableTicketWorkflow(self.env).actions
selected_value = grade or review_options[0][0]
label = actions[action]['name']
control = tag(["as: ",
tag.select([tag.option(option, selected=
(option == selected_value or
None))
for option, status in review_options],
name=id, id=id)])
if grade:
new_status = self._get_new_status(req, ticket, action,
review_options)
hint = "Next status will be '%s'" % new_status
else:
hint = "Next status will be one of " + \
', '.join(["'%s'" % status
for option, status in review_options])
return (label, control, hint)
if descr[1] else ''
else:
descr = to_unicode(descr) or ''
if content == '*':
descr = format_to_oneliner(
self.env, formatter.context, descr,
shorten=True)
else:
descr = format_to_html(
self.env, formatter.context, descr)
yield descr, [name for name, descr in pairs]
return tag.div(class_='trac-macrolist')(
(tag.h3(tag.code('[[', names[0], ']]'), id='%s-macro' % names[0]),
len(names) > 1 and tag.p(tag.strong(_("Aliases:")),
[tag.code(' [[', alias, ']]')
for alias in names[1:]]) or None,
description or tag.em(_("Sorry, no documentation found")))
for description, names in sorted(get_macro_descr(),
key=lambda item: item[1][0]))