示例#1
0
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)
示例#2
0
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)
示例#3
0
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]
示例#4
0
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
    ]
示例#5
0
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'))
示例#6
0
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()
示例#7
0
文件: rest.py 项目: umeboshi2/ittok
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
示例#8
0
    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)
示例#9
0
    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)
示例#10
0
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'))
示例#11
0
文件: rest.py 项目: umeboshi2/ittok
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
示例#12
0
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'))