本文整理汇总了Python中genshi.filters.Transformer类的典型用法代码示例。如果您正苦于以下问题:Python Transformer类的具体用法?Python Transformer怎么用?Python Transformer使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Transformer类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: generate
def generate(self, *args, **kwargs):
"creates the RelatorioStream."
serializer = OOSerializer(self._zip_source)
kwargs['__relatorio_make_href'] = ImageHref(serializer.outzip,
serializer.manifest,
kwargs)
kwargs['__relatorio_make_dimension'] = ImageDimension(self.namespaces)
kwargs['__relatorio_guess_type'] = guess_type
counter = ColumnCounter()
kwargs['__relatorio_reset_col_count'] = counter.reset
kwargs['__relatorio_inc_col_count'] = counter.inc
kwargs['__relatorio_store_col_count'] = counter.store
cache = ExpressionCache()
kwargs['__relatorio_store_cache'] = cache.store
kwargs['__relatorio_get_cache'] = cache.get
stream = super(Template, self).generate(*args, **kwargs)
if self.has_col_loop:
# Note that we can't simply add a "number-columns-repeated"
# attribute and then fill it with the correct number of columns
# because that wouldn't work if more than one column is repeated.
transformation = DuplicateColumnHeaders(counter)
col_filter = Transformer('//repeat[namespace-uri()="%s"]'
% RELATORIO_URI)
col_filter = col_filter.apply(transformation)
stream = Stream(list(stream), self.serializer) | col_filter
return RelatorioStream(stream, serializer)
示例2: filter_stream
def filter_stream(self, req, method, filename, stream, data):
"""
Reformat the ``branch`` field of a ticket to show the history of the
linked branch.
"""
if filename == 'ticket.html':
ticket = data.get('ticket')
if ticket and ticket.exists:
branch = ticket['branch']
if branch:
error = None
if not self._is_valid_branch_name(branch):
error = "not a valid branch name"
elif not self._is_existing_branch(branch):
error = "branch does not exist"
else:
try:
master = self._dereference_head(MASTER_BRANCH)
branch = self._dereference_head(branch)
common_ancestor = self._common_ancestor(master,branch)
if branch == common_ancestor:
# the trac log page does not work if the revisions are equal
error = "no commits on branch yet"
else:
filter = Transformer('//td[@headers="h_branch"]/text()')
stream |= filter.wrap(tag.a(href=req.href.log(revs="%s-%s"%(common_ancestor,branch))))
except GitError:
error = "failed to determine common ancestor with %s branch"%MASTER_BRANCH
if error:
filter = Transformer('//td[@headers="h_branch"]')
stream |= filter.attr("title",error)
return stream
示例3: filter_stream
def filter_stream(self, req, method, filename, stream, data):
# Add delete buttons to the ticket form
ticket = data.get("ticket")
if filename == "ticket.html" and "TICKET_ADMIN" in req.perm(ticket.resource):
# Add Delete button to ticket description
if data["ticket"].values["description"]:
# Reply button and associated elements are present
filter = Transformer("//div[@class='description']//div[@class='inlinebuttons']")
stream |= filter.append(
tag.input(type="submit", name="delete", title="Delete this ticket", value="Delete")
)
else:
# Reply button and associated elements not present
filter = Transformer("//div[@class='description']/h3")
stream |= filter.after(
tag.form(
tag.div(
tag.input(type="submit", name="delete", title="Delete this ticket", value="Delete"),
class_="inlinebuttons",
),
name="addreply",
method="get",
action="#comment",
)
)
# Add Delete buttons to ticket comments
stream |= Transformer("//div[@id='changelog']//div[@class='inlinebuttons']").append(
tag.input(type="submit", name="delete", title="Delete this comment", value="Delete")
)
return stream
示例4: filter_stream
def filter_stream(self, req, method, filename, stream, data):
if filename == "ticket.html":
ticket = data.get("ticket")
if ticket and ticket.exists and "TICKET_ADMIN" in req.perm(ticket.resource):
filter = Transformer('//h3[@id="comment:description"]')
stream |= filter.after(self._clone_form(req, ticket, data))
return stream
示例5: filter_stream
def filter_stream(self, req, method, filename, stream, data):
if filename == 'ticket.html':
ticket = data.get('ticket')
if ticket and ticket.exists and \
self.ticket_clone_permission in req.perm(ticket.resource):
filter = Transformer('//h3[@id="comment:description"]')
stream |= filter.after(self._clone_form(req, ticket, data))
return stream
示例6: filter_stream
def filter_stream(self, req, method, filename, stream, data):
if re.match(r'^/(changeset|browser|attachment/ticket/\d+/.?).*',
req.path_info):
filter = Transformer('//h1')
button = self._subscription_button(req.path_info,
req.args.get('rev'))
stream |= filter.before(button)
return stream
示例7: filter_stream
def filter_stream(self, req, method, filename, stream, data):
if filename == 'ticket.html':
ticket = data.get('ticket')
if ticket and ticket.exists and \
'TICKET_CREATE' in req.perm(ticket.resource):
# filter = Transformer('//h3[@id="comment:description"]')
filter = Transformer( self.config.get('trac', 'clone_xpath') )
return stream | filter.after(self._clone_form(req, ticket, data))
return stream
示例8: filter_stream
def filter_stream(self, req, method, filename, stream, data):
if filename == 'query.html':
filter_script = Transformer('//script[contains(@src, "jquery.js")]')
filter_query = Transformer('table[@class="listing tickets"]/.')
return stream | filter_script.after(
tag.script(
type="text/javascript",
src=self.env.href('chrome', 'aq', 'js', 'query.js'))) \
| filter_query.prepend('<!-- Hello -->')
return stream
示例9: filter_stream
def filter_stream(self, req, method, filename, stream, data):
"""
Wrap the banner and mainnav in a single banner_wrapper div
"""
buffer = StreamBuffer()
filter = Transformer("//div[@id='banner']")
stream |= filter.wrap(tag.div(id="banner_wrapper")).end(
).select("//div[@id='mainnav']").cut(buffer, accumulate=True).end().buffer(
).select("//div[@id='banner_wrapper']").append(tag.hr()).append(buffer).end()
return stream
示例10: filter_stream
def filter_stream(self, req, method, filename, stream, data):
if filename == 'ticket.html':
ticket = data.get('ticket')
if ticket and ticket.exists:
context = Context.from_request(req, ticket.resource)
self.changesets = TicketChangesetsFormatter(self.env, context,
ticket.id)
exists = self.changesets.exists()
if exists or not self.hide_when_none:
filter = Transformer('//div[@id="attachments"]')
return stream | filter.after(self._render(req, ticket,
exists))
return stream
示例11: filter_stream
def filter_stream(self, req, method, filename, stream, data):
if filename == 'ticket.html':
ticket = data.get('ticket')
if ticket and ticket.exists and \
req.session.get(self.session_field, 'True') == 'True':
filter_ = Transformer(
'//script[contains(@src, "jquery.js")]')
return stream | filter_.after(
tag.script(
type="text/javascript",
src=self.env.href('chrome', 'ac', 'js', 'jquery.form.js'))) \
| filter_.after(
tag.script(
type="text/javascript",
src=self.env.href('chrome', 'ac', 'js', 'comments.js')))
return stream
示例12: filter_stream
def filter_stream(self, req, method, filename, stream, data):
if filename == 'ticket.html' and req.authname != 'anonymous':
ticket = data.get('ticket')
if req.perm.has_permission('TICKET_ADMIN'):
self.log.debug("TicketChangePlugin adding 'Change' links for ticket %s" % ticket.id)
buffer = StreamBuffer()
def insert_change_link():
cnum = list(buffer)[0][1][1][0][1]
return tag(" ", tag.a("Change", href=("../ticketchangecomment/%s?cnum=%s" % (ticket.id, cnum))))
filter = Transformer("//div[@class='change']/div[@class='inlinebuttons']/input[@name='replyto']/@value")
return stream | filter.copy(buffer).end() \
.select("//div[@class='change']/div[@class='inlinebuttons']/input[@value='Reply']") \
.after(insert_change_link)
return stream
示例13: filter_stream
def filter_stream(self, req, method, filename, stream, data):
if 'TICKET_ADMIN' in req.perm:
if req.path_info == '/admin/ticket/components' or req.path_info == '/admin/ticket/components/':
components = data.get('components')
# 'components' will be None if component with specified name already exists.
if not components:
return stream
default_ccs = DefaultCC.select(self.env)
stream = stream | Transformer('//table[@id="complist"]/thead/tr') \
.append(tag.th('Default CC'))
filter = Transformer('//table[@id="complist"]/tbody')
default_comp = self.config.get('ticket', 'default_component')
for comp in components:
if default_comp == comp.name:
default_tag = tag.input(type='radio', name='default', value=comp.name, checked='checked')
else:
default_tag = tag.input(type='radio', name='default', value=comp.name)
if comp.name in default_ccs:
default_cc = default_ccs[comp.name]
else:
default_cc = ''
filter = filter.append(tag.tr(tag.td(tag.input(type='checkbox', name='sel', value=comp.name), class_='sel'),
tag.td(tag.a(comp.name, href=req.href.admin('ticket', 'components') + '/' + comp.name), class_='name'),
tag.td(comp.owner, class_='owner'),
tag.td(default_tag, class_='default'),
tag.td(default_cc, class_='defaultcc')))
return stream | filter
elif req.path_info.startswith('/admin/ticket/components/') and data.get('component'):
cc = DefaultCC(self.env, data.get('component').name)
filter = Transformer('//form[@id="modcomp"]/fieldset/div[@class="buttons"]')
filter = filter.before(tag.div("Default CC:",
tag.br(),
tag.input(type="text", name="defaultcc", value=cc.cc),
class_="field")) \
.before(tag.input(type='hidden', name='old_name', value=cc.name))
return stream | filter
return stream
示例14: filter_stream
def filter_stream(self, req, method, filename, stream, data):
if filename == "roadmap.html":
sortcrit = self._get_settings(req, "sortcrit", self.criterias[0])
sortdirect = self._get_settings(req, "sortdirect", self.directions[0])
sel = ' selected = "selected"'
html_str = "<div>" + _("Sort by: ")
html_str += '<select name="sortcrit">'
for crit in self.criterias:
html_str += '<option value ="%s" %s>%s</option>' % (crit, sel if sortcrit == crit else "", _(crit))
html_str += "</select>"
html_str += '<select name="sortdirect">'
for dir in self.directions:
html_str += '<option value ="%s" %s>%s</option>' % (dir, sel if sortdirect == dir else "", _(dir))
html_str += "</select></div>"
html = HTML(html_str)
filter = Transformer('//form[@id="prefs"]/div[@class="buttons"]')
return stream | filter.before(html)
return stream
示例15: _show_branches_tags
def _show_branches_tags(self, req, info, changes):
filters = []
for idx, item in enumerate(info):
change = changes[item['rev']]
branch_filter = Transformer('//table/tbody/tr[%d]/td[@class="summary"]' % (idx+1))
for name, head in change.get_branches():
#if branch not in ('default', 'master'):
span = tag.span(name, class_="branch" + (" head" if head else ''),
title="Branch head" if head else 'Branch')
filters.append(branch_filter.append(span))
for tagname in change.get_tag_contains():
span = tag.span(tagname, class_="tag", title="Tag")
filters.append(branch_filter.append(span))
return filters