def rss_basic_info(context, request): settings = get_settings() root = get_root() api = TemplateAPI(context, request) rss_title = settings.get('kotti.site_title') or root.title return dict(title=rss_title + ' feed', link=api.url(root), description=root.description)
def rss_items(context, request): api = TemplateAPI(context, request) items = result_items(context, request) return [RSS2.RSSItem(title=item.title, link=api.url(item), description=item.description, guid=RSS2.Guid(api.url(item)), pubDate=item.modification_date, ) for item in items]
def rss_items(context, request): api = TemplateAPI(context, request) items = result_items(context, request) return [ RSS2.RSSItem( title=item.title, link=api.url(item), description=item.description, guid=RSS2.Guid(api.url(item)), pubDate=item.modification_date, ) for item in items ]
def test_sanitize(app, dummy_request): from kotti.sanitizers import sanitize from kotti.resources import Document from kotti.views.util import TemplateAPI _verify_no_html(sanitize(unsanitized, 'no_html')) _verify_minimal_html(sanitize(unsanitized, 'minimal_html')) _verify_xss_protection(sanitize(unsanitized, 'xss_protection')) api = TemplateAPI(Document(), dummy_request) _verify_no_html(api.sanitize(unsanitized, 'no_html')) _verify_minimal_html(api.sanitize(unsanitized, 'minimal_html')) _verify_xss_protection(api.sanitize(unsanitized, 'xss_protection'))
def test_404_api_root(db_session, dummy_request): from kotti.resources import get_root from kotti.views.util import TemplateAPI from pyramid.httpexceptions import HTTPNotFound api = TemplateAPI(HTTPNotFound(), dummy_request) assert api.root == get_root()
def serialize_user(context, request, api=None): if api is None: api = TemplateAPI(context, request) udata = None user = request.user if user is not None: udata = dict() for key in ['id', 'email', 'groups', 'name', 'title']: udata[key] = getattr(user, key) for dt in ['creation_date', 'last_login_date']: value = getattr(user, dt) if value is not None: value = value.isoformat() udata[dt] = value udata['avatar_prefix'] = api.avatar_url(user=request.user, size='') udata['prefs_url'] = api.url(api.root, '@@prefs') return udata
def make(self, context=None, request=None, id=1, **kwargs): from kotti.resources import get_root from kotti.views.util import TemplateAPI if context is None: context = get_root() if request is None: request = DummyRequest() return TemplateAPI(context, request, **kwargs)
def make(self, context=None, request=None, id=1, **kwargs): from kotti import DBSession from kotti.resources import Node from kotti.views.util import TemplateAPI if context is None: context = DBSession.query(Node).get(id) if request is None: request = DummyRequest() return TemplateAPI(context, request, **kwargs)
def rss_icon(context, request): api = TemplateAPI(context, request) return dict( rss_url=api.url(context) + 'rss_view', icon_url=request.static_url('kotti_feed:static/feed-icon-14x14.png'))
def relational_metadata(obj, request): # some of this is just to mimick templates relmeta = dict() api = TemplateAPI(obj, request) navitems = list() for item in api.list_children(api.navigation_root): if item.in_navigation: idata = dict(inside=api.inside(obj, item), url=api.url(item), description=item.description, title=item.title) navitems.append(idata) relmeta['navitems'] = navitems # type info type_info = dict() for attr in ['selectable_default_views', 'title', 'addable_to', 'add_permission']: type_info[attr] = getattr(obj.type_info, attr) relmeta['type_info'] = type_info # permissions has_permission = dict() for key in ['add', 'edit', 'state_change']: has_permission[key] = bool(api.has_permission(key).boolval) has_permission['admin'] = bool(api.has_permission('admin', api.root).boolval) relmeta['has_permission'] = has_permission # for top navbar relmeta['application_url'] = request.application_url relmeta['site_title'] = api.site_title relmeta['root_url'] = api.url(api.root) # for edit bar wf = get_workflow(obj, request) if wf['current_state'] is not None: if 'callback' in wf['current_state'].get('data', dict()): del wf['current_state']['data']['callback'] for state in wf['states']: sdata = wf['states'][state].get('data', dict()) if 'callback' in sdata: del sdata['callback'] relmeta['workflow'] = wf relmeta['request_url'] = request.url relmeta['api_url'] = api.url() edit_links = list() link_parent = None for link in api.edit_links: if type(link) is not LinkParent: edit_links.append(get_link_info(link, obj, request)) else: link_parent = handle_link_parent(link, obj, request) relmeta['edit_links'] = edit_links relmeta['link_parent'] = link_parent dfs = DefaultViewSelection(obj, request) key = 'selectable_default_views' relmeta[key] = dfs.default_view_selector()[key] del dfs del key # add-dropdown factories = get_content_type_factories(obj, request)['factories'] flist = list() for f in factories: flist.append(dict( url=api.url(obj, f.type_info.add_view), title=f.type_info.title, )) relmeta['content_type_factories'] = flist relmeta['upload_url'] = api.url(obj, 'upload') # site_setup_linke site_setup_links = list() for link in api.site_setup_links: site_setup_links.append(get_link_info(link, obj, request)) # FIXME this fixes a problem where a plugin seems to define an # extra settings link site_setup_urls = list() setup_links = list() for link in site_setup_links: if link['url'] not in site_setup_urls: site_setup_urls.append(link['url']) setup_links.append(link) relmeta['site_setup_links'] = setup_links relmeta['navigate_url'] = api.url(obj, '@@navigate') relmeta['logout_url'] = api.url(api.root, '@@logout', query=dict(came_from=request.url)) # page content relmeta['has_location_context'] = api.is_location(obj) relmeta['view_needed'] = api.view_needed breadcrumbs = list() for bc in api.breadcrumbs: breadcrumbs.append(dict(id=bc.id, name=bc.name, description=bc.description, url=api.url(bc), title=bc.title)) relmeta['breadcrumbs'] = breadcrumbs # FIXME figure out what to do about page_slots #relmeta['page_slots'] = api.slots relmeta['paths'] = { 'this_path': request.resource_path(obj), 'child_paths': [request.resource_path(child) for child in obj.children_with_permission(request)], 'childnames': [child.__name__ for child in obj.children_with_permission(request)], } relmeta['current_user'] = serialize_user(obj, request, api=api) #import pdb ; pdb.set_trace() return relmeta