本文整理汇总了Python中trac.web.chrome.web_context函数的典型用法代码示例。如果您正苦于以下问题:Python web_context函数的具体用法?Python web_context怎么用?Python web_context使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了web_context函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: __init__
def __init__(self, title, input, correct, file, line, setup=None,
teardown=None, context=None):
unittest.TestCase.__init__(self, 'test')
self.title = title
self.input = input
self.correct = correct
self.file = file
self.line = line
self._setup = setup
self._teardown = teardown
req = Mock(href=Href('/'), abs_href=Href('http://www.example.com/'),
chrome={}, session={},
authname='anonymous', perm=MockPerm(), tz=utc, args={},
locale=locale_en, lc_time=locale_en)
if context:
if isinstance(context, tuple):
context = web_context(req, *context)
else:
context = web_context(req, 'wiki', 'WikiStart')
self.context = context
all_test_components = [
HelloWorldMacro, DivHelloWorldMacro, TableHelloWorldMacro,
DivCodeMacro, DivCodeElementMacro, DivCodeStreamMacro,
NoneMacro, WikiProcessorSampleMacro, SampleResolver]
self.env = EnvironmentStub(enable=['trac.*'] + all_test_components)
# -- macros support
self.env.path = ''
# -- intertrac support
self.env.config.set('intertrac', 'trac.title', "Trac's Trac")
self.env.config.set('intertrac', 'trac.url',
"http://trac.edgewall.org")
self.env.config.set('intertrac', 't', 'trac')
self.env.config.set('intertrac', 'th.title', "Trac Hacks")
self.env.config.set('intertrac', 'th.url',
"http://trac-hacks.org")
self.env.config.set('intertrac', 'th.compat', 'false')
# -- safe schemes
self.env.config.set('wiki', 'safe_schemes',
'file,ftp,http,https,svn,svn+ssh,'
'rfc-2396.compatible,rfc-2396+under_score')
# TODO: remove the following lines in order to discover
# all the places were we should use the req.href
# instead of env.href
self.env.href = req.href
self.env.abs_href = req.abs_href
示例2: main
def main():
names = sorted(name for name in resource_listdir('trac.wiki',
'default-pages')
if not name.startswith('.'))
env = EnvironmentStub()
load_components(env)
with env.db_transaction:
for name in names:
wiki = WikiPage(env, name)
wiki.text = resource_string('trac.wiki', 'default-pages/' +
name).decode('utf-8')
if wiki.text:
wiki.save('trac', '')
else:
printout('%s: Skipped empty page' % name)
req = Mock(href=Href('/'), abs_href=Href('http://trac.edgewall.org/'),
perm=MockPerm(), chrome={})
for name in sys.argv[1:]:
name = os.path.basename(name)
wiki = WikiPage(env, name)
if not wiki.exists:
continue
context = web_context(req, wiki.resource, absurls=True)
rst = wiki2rest(env, context, wiki)
sys.stdout.write(rst)
示例3: process_request
def process_request(self, req):
presel = req.args.get('preselected')
if presel and (presel + '/').startswith(req.href.browser() + '/'):
req.redirect(presel)
path = req.args.get('path', '/')
rev = req.args.get('rev', '')
if rev.lower() in ('', 'head'):
rev = None
format = req.args.get('format')
order = req.args.get('order', 'name').lower()
desc = 'desc' in req.args
xhr = req.get_header('X-Requested-With') == 'XMLHttpRequest'
rm = RepositoryManager(self.env)
all_repositories = rm.get_all_repositories()
reponame, repos, path = rm.get_repository_by_path(path)
# Repository index
show_index = not reponame and path == '/'
if show_index:
if repos and (as_bool(all_repositories[''].get('hidden'))
or not repos.is_viewable(req.perm)):
repos = None
if not repos and reponame:
raise ResourceNotFound(_("Repository '%(repo)s' not found",
repo=reponame))
if reponame and reponame != repos.reponame: # Redirect alias
qs = req.query_string
req.redirect(req.href.browser(repos.reponame or None, path)
+ ('?' + qs if qs else ''))
reponame = repos.reponame if repos else None
# Find node for the requested path/rev
context = web_context(req)
node = None
changeset = None
display_rev = lambda rev: rev
if repos:
try:
if rev:
rev = repos.normalize_rev(rev)
# If `rev` is `None`, we'll try to reuse `None` consistently,
# as a special shortcut to the latest revision.
rev_or_latest = rev or repos.youngest_rev
node = get_existing_node(req, repos, path, rev_or_latest)
except NoSuchChangeset, e:
raise ResourceNotFound(e, _('Invalid changeset number'))
if node:
try:
# use changeset instance to retrieve branches and tags
changeset = repos.get_changeset(node.rev)
except NoSuchChangeset:
pass
context = context.child(repos.resource.child('source', path,
version=rev_or_latest))
display_rev = repos.display_rev
示例4: main
def main():
options, args = parse_args()
names = sorted(name for name in resource_listdir('trac.wiki',
'default-pages')
if not name.startswith('.'))
if args:
args = sorted(set(names) & set(map(os.path.basename, args)))
else:
args = names
if options.download:
download_default_pages(args, options.prefix)
env = EnvironmentStub()
load_components(env)
with env.db_transaction:
for name in names:
wiki = WikiPage(env, name)
wiki.text = resource_string('trac.wiki', 'default-pages/' +
name).decode('utf-8')
if wiki.text:
wiki.save('trac', '')
else:
printout('%s: Skipped empty page' % name)
req = Mock(href=Href('/'), abs_href=Href('http://localhost/'),
perm=MockPerm())
for name in args:
wiki = WikiPage(env, name)
if not wiki.exists:
continue
context = web_context(req, wiki.resource)
out = DummyIO()
DefaultWikiChecker(env, context, name).format(wiki.text, out)
示例5: _check_quickjump
def _check_quickjump(self, req, kwd):
"""Look for search shortcuts"""
# pylint: disable=maybe-no-member
noquickjump = int(req.args.get('noquickjump', '0'))
# Source quickjump FIXME: delegate to ISearchSource.search_quickjump
quickjump_href = None
if kwd[0] == '/':
quickjump_href = req.href.browser(kwd)
name = kwd
description = _('Browse repository path %(path)s', path=kwd)
else:
context = web_context(req, 'search')
link = find_element(extract_link(self.env, context, kwd), 'href')
if link is not None:
quickjump_href = link.attrib.get('href')
name = link.children
description = link.attrib.get('title', '')
if quickjump_href:
# Only automatically redirect to local quickjump links
base_path = req.base_path.replace('@', '%40')
redirect_href = quickjump_href.replace('@', '%40')
if not redirect_href.startswith(base_path or '/'):
noquickjump = True
if noquickjump:
return {'href': quickjump_href, 'name': tag.EM(name),
'description': description}
else:
req.redirect(quickjump_href)
示例6: _send_cards_and_stacks
def _send_cards_and_stacks(self, req, cards, stacks, stack_names):
context = web_context(req, 'cards')
data = {
'cards_by_id': serialized_cards_by_id(cards, self.env, context),
'stacks_by_name': serialized_stacks_by_name(stacks, stack_names),
}
self._send_json(req, data)
示例7: from_request
def from_request(*args, **kwargs):
""":deprecated: since 1.0, use `web_context` instead. Will be removed
in release 1.3.1.
"""
from trac.web.chrome import web_context
return web_context(*args, **kwargs)
示例8: _render_list
def _render_list(self, req):
"""products list"""
products = [p for p in Product.select(self.env)
if 'PRODUCT_VIEW' in req.perm(Neighborhood('product',
p.prefix))]
data = {'products': products,
'context': web_context(req, Resource('product', None))}
return 'product_list.html', data, None
示例9: setUp
def setUp(self):
self.env = EnvironmentStub(enable=[Chrome, PygmentsRenderer])
self.pygments = Mimeview(self.env).renderers[0]
self.req = Mock(base_path='', chrome={}, args={},
abs_href=Href('/'), href=Href('/'),
session={}, perm=None, authname=None, tz=None)
self.context = web_context(self.req)
pygments_html = open(os.path.join(os.path.split(__file__)[0],
'pygments.html'))
self.pygments_html = Stream(list(HTMLParser(pygments_html, encoding='utf-8')))
示例10: _render_list
def _render_list(self, req):
"""products list"""
products = [p for p in Product.select(self.env)
if 'PRODUCT_VIEW' in req.perm(Neighborhood('product',
p.prefix))]
map(lambda p: setattr(p, 'href', resolve_product_href(
lookup_product_env(self.env, p.prefix), self.env)), products)
data = {'products': products,
'context': web_context(req, Resource('product', None))}
return 'product_list.html', data, None
示例11: setUp
def setUp(self):
env = EnvironmentStub(enable=[Chrome, PatchRenderer])
req = Mock(base_path='', chrome={'static_hash': None}, args={},
session={}, abs_href=Href('/'), href=Href('/'), locale='',
perm=MockPerm(), authname=None, tz=None)
self.context = web_context(req)
self.patch = Mimeview(env).renderers[0]
patch_html = open(os.path.join(os.path.split(__file__)[0],
'patch.html'))
self.patch_html = Stream(list(HTMLParser(patch_html, encoding='utf-8')))
示例12: post_process_request
def post_process_request(self, req, template, data, content_type):
if not req or not template or not isinstance(data, dict):
return template, data, content_type
model = None
resource = None
attachments = None
if template in ('wiki_view.html', 'wiki_edit.html'):
model = data.get('page')
elif template == 'ticket.html':
model = data.get('ticket')
elif template in ('milestone_view.html', 'milestone_edit.html'):
model = data.get('milestone')
elif template == 'attachment.html':
attachments = data.get('attachments')
if attachments:
resource = attachments['parent']
if not resource and model and model.exists:
resource = model.resource
if not resource:
return template, data, content_type
if not attachments:
attachments = data.get('attachments')
if not attachments and model and resource:
context = web_context(req, resource)
attachments = AttachmentModule(self.env).attachment_data(context)
data['attachments'] = attachments
if template in ('wiki_edit.html', 'milestone_edit.html'):
self._add_overlayview(req)
add_stylesheet(req, 'tracdragdrop/tracdragdrop.css')
if hasattr(req, 'locale'):
locale = str(req.locale)
if locale in self.messages_files:
add_script(req, 'tracdragdrop/messages/%s.js' % locale)
add_script(req, 'common/js/folding.js')
add_script(req, 'tracdragdrop/tracdragdrop.js')
script_data = {
'_tracdragdrop': {
'base_url': req.href().rstrip('/') + '/',
'new_url': req.href('tracdragdrop', 'new', resource.realm,
resource.id),
'can_create': attachments.get('can_create') or False,
'max_size': AttachmentModule(self.env).max_size,
},
'form_token': req.form_token,
}
if add_script_data:
add_script_data(req, script_data)
else:
setattr(req, '_tracdragdrop_data', script_data)
return template, data, content_type
示例13: test_template_data
def test_template_data(self):
req = Mock(href=self.env.href, perm=MockPerm(), authname="anonymous", tz=None, locale=None)
context = web_context(req, "query")
query = Query.from_string(self.env, "owner=$USER&order=id")
tickets = query.execute(req)
data = query.template_data(context, tickets, req=req)
self.assertEqual(["anonymous"], data["clauses"][0]["owner"]["values"])
query = Query.from_string(self.env, "owner=$USER&order=id")
tickets = query.execute(req)
data = query.template_data(context, tickets)
self.assertEqual(["$USER"], data["clauses"][0]["owner"]["values"])
示例14: _render_editor
def _render_editor(self, req, product):
"""common processing for creating rendering the edit page"""
if product._exists:
req.perm(product.resource).require('PRODUCT_MODIFY')
else:
req.perm(product.resource).require('PRODUCT_CREATE')
chrome = Chrome(self.env)
chrome.add_jquery_ui(req)
chrome.add_wiki_toolbars(req)
data = {'product': product,
'context': web_context(req, product.resource)}
return 'product_edit.html', data, None
示例15: test_template_data
def test_template_data(self):
req = Mock(href=self.env.href, perm=MockPerm(), authname='anonymous',
tz=None, locale=None)
context = web_context(req, 'query')
query = Query.from_string(self.env, 'owner=$USER&order=id')
tickets = query.execute(req)
data = query.template_data(context, tickets, req=req)
self.assertEqual(['anonymous'], data['clauses'][0]['owner']['values'])
query = Query.from_string(self.env, 'owner=$USER&order=id')
tickets = query.execute(req)
data = query.template_data(context, tickets)
self.assertEqual(['$USER'], data['clauses'][0]['owner']['values'])