本文整理汇总了Python中trac.web.chrome.Chrome.render_template方法的典型用法代码示例。如果您正苦于以下问题:Python Chrome.render_template方法的具体用法?Python Chrome.render_template怎么用?Python Chrome.render_template使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类trac.web.chrome.Chrome
的用法示例。
在下文中一共展示了Chrome.render_template方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: filter_stream
# 需要导入模块: from trac.web.chrome import Chrome [as 别名]
# 或者: from trac.web.chrome.Chrome import render_template [as 别名]
def filter_stream(self, req, method, filename, stream, data):
if req.get_header("X-Moz") == "prefetch":
return stream
if filename == "ticket.html":
if not self.check_permissions(req):
return stream
chrome = Chrome(self.env)
filter = Transformer('//fieldset[@id="properties"]')
# add a hidden div to hold the ticket_fields input
snippet = tag.div(style="display:none;")
snippet = tag.input(type="hidden", id="field-ticket_fields", name="field_ticket_fields", value=','.join(data['ticket_fields']))
stream = stream | filter.after(snippet)
if req.path_info != '/newticket':
# insert the ticket field groups after the standard trac 'Change Properties' field group
stream = stream | filter.after(chrome.render_template(req, 'ticket_fields_datatable.html', data, fragment=True))
elif filename == "admin_enums.html":
if not self.check_permissions(req) or not req.args.get('path_info'):
return stream
for k,v in {'cat_id':'ticket', 'panel_id':'type'}.iteritems():
if k not in req.args or req.args.get(k) != v:
return stream
if 'ticket_fields' in data:
chrome = Chrome(self.env)
filter = Transformer('//div[@class="buttons"]')
# add a hidden div to hold the ticket_fields input
snippet = tag.div(style="display:none;")
snippet = tag.input(type="hidden", id="field-ticket_fields", name="field_ticket_fields", value=','.join(data['ticket_fields']))
stream = stream | filter.before(snippet)
stream = stream | filter.before(chrome.render_template(req, 'ticket_fields_datatable.html', data, fragment=True))
return stream
示例2: filter_stream
# 需要导入模块: from trac.web.chrome import Chrome [as 别名]
# 或者: from trac.web.chrome.Chrome import render_template [as 别名]
def filter_stream(self, req, method, filename, stream, data):
chrome = Chrome(self.env)
if req.path_info.startswith('/milestone') \
and req.args.get('action') in ['edit', 'new'] \
and 'max_level' not in data:
milestone = data.get('milestone')
levels = IttecoMilestoneAdminPanel(self.env).milestone_levels
mydata ={'structured_milestones':StructuredMilestone.select(self.env),
'max_level': levels and len(levels)-1 or 0,
'milestone_name' : milestone and milestone.parent or None,
'field_name' : 'parent'}
stream |=Transformer('//*[@id="edit"]/fieldset').append(
chrome.render_template(req, 'itteco_milestones_dd.html', mydata, fragment=True))
if 'ticket' in data:
tkt = data['ticket']
mydata ={
'structured_milestones':StructuredMilestone.select(self.env),
'milestone_name': data['ticket']['milestone'],
'field_name' : 'field_milestone',
'hide_completed' : not ( tkt.exists and 'TICKET_ADMIN' in req.perm(tkt.resource))
}
req.chrome.setdefault('ctxtnav',[]).insert(
-1,
tag.a(
_('Go To Whiteboard'),
href=req.href.whiteboard('team_tasks', data['ticket']['milestone'] or 'none')
)
)
stream |=Transformer('//*[@id="field-milestone"]').replace(
chrome.render_template(req, 'itteco_milestones_dd.html', mydata, fragment=True))
return stream
示例3: filter_stream
# 需要导入模块: from trac.web.chrome import Chrome [as 别名]
# 或者: from trac.web.chrome.Chrome import render_template [as 别名]
def filter_stream(self, req, method, filename, stream, data):
if filename == "ticket.html" and req.get_header("X-Moz") != "prefetch":
chrome = Chrome(self.env)
# append the ticket fields to the end of the standard trac ticket box
filter = Transformer('//div[@id="ticket"]')
stream = stream | filter.append(chrome.render_template(req, 'fieldgroups_ticket_box.html', data, fragment=True))
# insert the ticket field groups after the standard trac 'Change Properties' field group
filter = Transformer('//fieldset[@id="properties"]')
stream = stream | filter.after(chrome.render_template(req, 'fieldgroups_properties.html', data, fragment=True))
#filter = Transformer('//fieldset[@id="action"]')
#stream = stream | filter.before(chrome.render_template(req, 'fieldgroups_properties.html', data, fragment=True))
return stream
示例4: process_request
# 需要导入模块: from trac.web.chrome import Chrome [as 别名]
# 或者: from trac.web.chrome.Chrome import render_template [as 别名]
def process_request(self, req):
if req.is_xhr and req.method == 'POST' and 'save_prefs' in req.args:
self._do_save_xhr(req)
panels, providers = self._get_panels(req)
if not panels:
raise HTTPNotFound(_("No preference panels available"))
panels = []
child_panels = {}
providers = {}
for provider in self.panel_providers:
for panel in provider.get_preference_panels(req) or []:
if len(panel) == 3:
name, label, parent = panel
child_panels.setdefault(parent, []).append((name, label))
else:
name = panel[0]
panels.append(panel)
providers[name] = provider
panels = sorted(panels)
panel_id = req.args.get('panel_id')
if panel_id is None:
panel_id = panels[1][0] \
if len(panels) > 1 and panels[0][0] == 'advanced' \
else panels[0][0]
chosen_provider = providers.get(panel_id)
if not chosen_provider:
raise HTTPNotFound(_("Unknown preference panel '%(panel)s'",
panel=panel_id))
session_data = {
'session': req.session,
'settings': {'session': req.session, # Compat: remove in 1.3.1
'session_id': req.session.sid},
}
# Render child preference panels.
chrome = Chrome(self.env)
children = []
if child_panels.get(panel_id):
for name, label in child_panels[panel_id]:
ctemplate, cdata = provider.render_preference_panel(req, name)
cdata.update(session_data)
rendered = chrome.render_template(req, ctemplate, cdata,
fragment=True)
children.append((name, label, rendered))
template, data = \
chosen_provider.render_preference_panel(req, panel_id)
data.update(session_data)
data.update({
'active_panel': panel_id,
'panels': panels,
'children': children,
})
add_stylesheet(req, 'common/css/prefs.css')
return template, data, None
示例5: expand_macro
# 需要导入模块: from trac.web.chrome import Chrome [as 别名]
# 或者: from trac.web.chrome.Chrome import render_template [as 别名]
def expand_macro(self, formatter, name, content):
req = formatter.req
# Parse arguments
args, kwargs = parse_args(content, strict=False)
assert not args and not ('status' in kwargs or 'format' in kwargs), \
"Invalid input!"
# hack the `format` kwarg in order to display all-tickets stats
# when no kwargs are supplied
kwargs['format'] = 'count'
# special case for values equal to 'self': replace with current
# ticket number, if available
for key in kwargs.keys():
if kwargs[key] == 'self':
current_ticket = self._this_ticket(req)
if current_ticket: kwargs[key] = current_ticket
# Create & execute the query string
qstr = '&'.join(['%s=%s' % item
for item in kwargs.iteritems()])
query = Query.from_string(self.env, qstr, max=0)
# Calculate stats
qres = query.execute(req)
tickets = apply_ticket_permissions(self.env, req, qres)
stats = get_ticket_stats(self.stats_provider, tickets)
stats_data = query_stats_data(req, stats, query.constraints)
# ... and finally display them
add_stylesheet(req, 'common/css/roadmap.css')
chrome = Chrome(self.env)
return chrome.render_template(req, 'progressmeter.html', stats_data,
fragment=True)
示例6: expand_macro
# 需要导入模块: from trac.web.chrome import Chrome [as 别名]
# 或者: from trac.web.chrome.Chrome import render_template [as 别名]
def expand_macro(self, formatter, name, content):
req = formatter.req
stats_provider, kwargs = self._parse_macro_content(content, req)
# Create & execute the query string
qstr = '&'.join(['%s=%s' % item
for item in kwargs.iteritems()])
query = Query.from_string(self.env, qstr, max=0)
try:
constraints = query.constraints[0]
except IndexError:
constraints = query.constraints
# Calculate stats
qres = query.execute(req)
tickets = apply_ticket_permissions(self.env, req, qres)
stats = get_ticket_stats(stats_provider, tickets)
stats_data = query_stats_data(req, stats, constraints)
# ... and finally display them
add_stylesheet(req, 'common/css/roadmap.css')
chrome = Chrome(self.env)
return chrome.render_template(req, 'progressmeter.html', stats_data,
fragment=True)
示例7: expand_macro
# 需要导入模块: from trac.web.chrome import Chrome [as 别名]
# 或者: from trac.web.chrome.Chrome import render_template [as 别名]
def expand_macro(self, formatter, name, content, args=None):
"""
Returns the outcome from macro.
"""
req = formatter.req
userstore = get_userstore()
user = userstore.getUser(req.authname)
msgsrv = self.env[MessageService]
# Parse optional arguments
if args is None:
args = parse_args(content)
if len(args) > 1:
args = args[1]
data = {
'groups': msgsrv.get_messages_grouped_by(user.id)
}
# FIXME: Temporary fix for IE8 + jQuery 1.4.4 + Transparency combination
agent = req.get_header('user-agent')
if agent and 'MSIE 8.0' not in agent:
add_script(req, 'multiproject/js/transparency.js')
add_script(req, 'multiproject/js/multiproject.js')
add_script(req, 'multiproject/js/messages_group_macro.js')
chrome = Chrome(self.env)
return chrome.render_template(req, 'multiproject_messages_group_macro.html', data, fragment=True)
示例8: expand_macro
# 需要导入模块: from trac.web.chrome import Chrome [as 别名]
# 或者: from trac.web.chrome.Chrome import render_template [as 别名]
def expand_macro(self, formatter, name, content):
req = formatter.req
stats_provider, kwargs, preview = self._parse_macro_content(content, req)
# Create & execute the query string
qstr = '&'.join(['%s=%s' % item
for item in kwargs.iteritems()])
query = Query.from_string(self.env, qstr)
try:
# XXX: simplification, may cause problems with more complex queries
constraints = query.constraints[0]
except IndexError:
constraints = {}
# Calculate stats
qres = query.execute(req)
tickets = apply_ticket_permissions(self.env, req, qres)
stats = get_ticket_stats(stats_provider, tickets)
stats_data = query_stats_data(req, stats, constraints)
# ... and finally display them
add_stylesheet(req, 'common/css/roadmap.css')
chrome = Chrome(self.env)
stats_data.update({'preview': preview}) # displaying a preview?
return chrome.render_template(req, 'progressmeter.html', stats_data,
fragment=True)
示例9: expand_macro
# 需要导入模块: from trac.web.chrome import Chrome [as 别名]
# 或者: from trac.web.chrome.Chrome import render_template [as 别名]
def expand_macro(self, formatter, name, content, args=None):
"""
Returns the outcome from macro.
"""
req = formatter.context.req
# Check permissions
if 'TIMELINE_VIEW' not in req.perm:
# Return default content / instructions
return tag.div(
tag.h2(_('Project team'), **{'class': 'title'}),
tag.p(_('Project team cannot be found or no permission to follow it')),
**{'class': 'watch'}
)
# Load project info from optional project argument. Defaults to current env
project = Project.get(self.env)
team, members = self._get_team_info(project)
# Return rendered HTML with JS attached to it
data = {
'project_id': project.id,
'env_name': self.env.project_identifier,
'project_name': self.env.project_identifier, # TODO: redundant
'team': team,
'members': members
}
# NOTE: Use fragment to not to recreate chrome (add_script does not work) and run post processing manually
chrome = Chrome(self.env)
stream = chrome.render_template(req, 'multiproject_team.html', data, fragment=True)
if req.form_token:
stream |= chrome._add_form_token(req.form_token)
return stream
示例10: expand_macro
# 需要导入模块: from trac.web.chrome import Chrome [as 别名]
# 或者: from trac.web.chrome.Chrome import render_template [as 别名]
def expand_macro(self, formatter, name, content):
req = formatter.req
stats_provider, kwargs, is_preview_with_self = self._parse_macro_content(content, req)
if is_preview_with_self:
# previewing newticket, without a number but with a reference
# to current ticket number; show a helpful message
return tag.div('Progress meter will be inserted here in final ticket')
# Create & execute the query string
qstr = '&'.join(['%s=%s' % item
for item in kwargs.iteritems()])
query = Query.from_string(self.env, qstr, max=0)
try:
constraints = query.constraints[0]
except IndexError:
constraints = query.constraints
# Calculate stats
qres = query.execute(req)
tickets = apply_ticket_permissions(self.env, req, qres)
stats = get_ticket_stats(stats_provider, tickets)
stats_data = query_stats_data(req, stats, constraints)
# ... and finally display them
add_stylesheet(req, 'common/css/roadmap.css')
chrome = Chrome(self.env)
return chrome.render_template(req, 'progressmeter.html', stats_data,
fragment=True)
示例11: expand_macro
# 需要导入模块: from trac.web.chrome import Chrome [as 别名]
# 或者: from trac.web.chrome.Chrome import render_template [as 别名]
def expand_macro(self, formatter, name, args):
req = formatter.req
chrome = Chrome(self.env)
report = ReportModule(self.env)
comma_splitter = re.compile(r'(?<!\\),')
kwargs = {}
for arg in comma_splitter.split(args):
arg = arg.replace(r'\,', ',')
m = re.match(r'\s*[^=]+=', arg)
if m:
kw = arg[:m.end() - 1].strip()
value = arg[m.end():]
if re.match(r'^\$[A-Z]*$', value):
value = req.args.get(value[1:])
kwargs[kw] = value if value!= None else ''
else:
if re.match(r'^\$[A-Z]*$', arg):
arg = req.args.get(arg[1:])
id = int(arg)
req.args = kwargs
req.args['page'] = '1'
template, data, content_type = report._render_view(req, id)
add_stylesheet(req, 'common/css/report.css')
fullpath = ''
if pkg_resources.resource_exists('wikireport', 'WikiReport.html'):
fullpath = pkg_resources.resource_filename('wikireport', 'WikiReport.html')
else:
filepath = os.path.dirname(os.path.abspath( __file__ ))
fullpath = os.path.join(filepath, 'WikiReport.html')
return chrome.render_template(req, fullpath, data, None, fragment=True)
示例12: expand_macro
# 需要导入模块: from trac.web.chrome import Chrome [as 别名]
# 或者: from trac.web.chrome.Chrome import render_template [as 别名]
def expand_macro(self, formatter, name, content, args=None):
"""
Returns the outcome from macro.
Supported arguments:
- project: Name of the project to show status / provide follow buttons. Defaults to current project
"""
req = formatter.req
# Parse optional arguments
if args is None:
args = parse_args(content)
if len(args) > 1:
args = args[1]
# Read optional project name - fallback to current
project_name = self.env.project_identifier
if args and 'project' in args:
project_name = args.get('project', '').strip()
# Load project id from db
project_id = Project.get(env_name=project_name).id
watchers, is_watching = self._get_status(req, project_id)
# If user is already watching, do not show the block
if is_watching:
return tag.div('')
# Show macro only when user has permission to view timeline
if name not in self.macros or 'TIMELINE_VIEW' not in req.perm or not project_id:
# Return default content / instructions
return tag.div(
tag.h2(_('Follow project'), **{'class': 'title'}),
tag.p(_('Project cannot be found or no permission to follow it')),
**{'class': 'watch'}
)
# For anonymous users, advice login/registering
if req.authname == 'anonymous':
return tag.div(
tag.h2(_('Follow project'), **{'class': 'title'}),
tag.p(_('Only registered users can follow the project activity. ')),
tag.p(tag.a('Please login or register to service first', href=req.href('../home/user'))),
**{'class': 'watch'}
)
# Return rendered HTML with JS attached to it
data = {
'project_id': project_id,
'env_name': self.env.project_identifier,
'project_name': project_name
}
chrome = Chrome(self.env)
stream = chrome.render_template(req, 'multiproject_watch.html', data, fragment=True)
if req.form_token:
stream |= chrome._add_form_token(req.form_token)
return stream
示例13: render_preference_panel
# 需要导入模块: from trac.web.chrome import Chrome [as 别名]
# 或者: from trac.web.chrome.Chrome import render_template [as 别名]
def render_preference_panel(self, req, panel, path_info=None):
streams = []
chrome = Chrome(self.env)
for name, label, template, data in self._get_boxes(req):
streams.append(
(label, chrome.render_template(req, template, data, content_type="text/html", fragment=True))
)
add_stylesheet(req, "announcer/css/announcer_prefs.css")
return "prefs_announcer.html", {"boxes": streams}
示例14: render_preference_panel
# 需要导入模块: from trac.web.chrome import Chrome [as 别名]
# 或者: from trac.web.chrome.Chrome import render_template [as 别名]
def render_preference_panel(self, req, panel, path_info=None):
streams = []
chrome = Chrome(self.env)
for name, label, template, data in self._get_boxes(req):
streams.append((label, chrome.render_template(
req, template, data, content_type='text/html', fragment=True
)))
if req.method == 'POST':
req.redirect(req.href.prefs('announcer'))
add_stylesheet(req, 'announcer/css/announcer_prefs.css')
return 'prefs_announcer.html', {"boxes": streams}
示例15: _construct_progress
# 需要导入模块: from trac.web.chrome import Chrome [as 别名]
# 或者: from trac.web.chrome.Chrome import render_template [as 别名]
def _construct_progress(self, req, ticket):
chrome = Chrome(self.env)
query = Query.from_string(self.env, "parent=%d" % ticket.id, max=0)
try:
constraints = query.constraints[0]
except IndexError:
constraints = query.constraints
qres = query.execute(req)
tickets = apply_ticket_permissions(self.env, req, qres)
stats = get_ticket_stats(self._stats_provider, tickets)
stats_data = query_stats_data(req, stats, constraints)
progress = chrome.render_template(req, 'progressmeter.html', stats_data, fragment=True)
return progress