Exemple #1
0
def atom_feed(request):
    """
    generates the atom feed with the tag images
    """
    tag_slug = request.matchdict.get(u'tag')
    feed_title = "MediaGoblin Feed"
    if tag_slug:
        cursor = media_entries_for_tag_slug(request.db, tag_slug)
        link = request.urlgen('mediagoblin.listings.tags_listing',
                              qualified=True, tag=tag_slug )
        feed_title += "for tag '%s'" % tag_slug
    else: # all recent item feed
        cursor = MediaEntry.query.filter_by(state=u'processed')
        link = request.urlgen('index', qualified=True)
        feed_title += "for all recent items"

    atomlinks = [
        {'href': link,
         'rel': 'alternate',
         'type': 'text/html'}]

    if mg_globals.app_config["push_urls"]:
        for push_url in mg_globals.app_config["push_urls"]:
            atomlinks.append({
                'rel': 'hub',
                'href': push_url})

    cursor = cursor.order_by(MediaEntry.created.desc())
    cursor = cursor.limit(ATOM_DEFAULT_NR_OF_UPDATED_ITEMS)

    feed = AtomFeed(
        feed_title,
        feed_url=request.url,
        id=link,
        links=atomlinks)

    for entry in cursor:
        feed.add(entry.get('title'),
            entry.description_html,
            id=entry.url_for_self(request.urlgen,qualified=True),
            content_type='html',
            author={'name': entry.get_actor.username,
                'uri': request.urlgen(
                    'mediagoblin.user_pages.user_home',
                    qualified=True, user=entry.get_actor.username)},
            updated=entry.get('created'),
            links=[{
                'href':entry.url_for_self(
                   request.urlgen,
                   qualified=True),
                'rel': 'alternate',
                'type': 'text/html'}])

    return feed.get_response()
Exemple #2
0
def atom_feed(request):
    """
    generates the atom feed with the tag images
    """
    tag_slug = request.matchdict.get(u'tag')
    feed_title = "MediaGoblin Feed"
    if tag_slug:
        cursor = media_entries_for_tag_slug(request.db, tag_slug)
        link = request.urlgen('mediagoblin.listings.tags_listing',
                              qualified=True,
                              tag=tag_slug)
        feed_title += "for tag '%s'" % tag_slug
    else:  # all recent item feed
        cursor = MediaEntry.query.filter_by(state=u'processed')
        link = request.urlgen('index', qualified=True)
        feed_title += "for all recent items"

    atomlinks = [{'href': link, 'rel': 'alternate', 'type': 'text/html'}]

    if mg_globals.app_config["push_urls"]:
        for push_url in mg_globals.app_config["push_urls"]:
            atomlinks.append({'rel': 'hub', 'href': push_url})

    cursor = cursor.order_by(MediaEntry.created.desc())
    cursor = cursor.limit(ATOM_DEFAULT_NR_OF_UPDATED_ITEMS)

    feed = AtomFeed(feed_title, feed_url=request.url, id=link, links=atomlinks)

    for entry in cursor:
        feed.add(entry.get('title'),
                 entry.description_html,
                 id=entry.url_for_self(request.urlgen, qualified=True),
                 content_type='html',
                 author={
                     'name':
                     entry.get_uploader.username,
                     'uri':
                     request.urlgen('mediagoblin.user_pages.user_home',
                                    qualified=True,
                                    user=entry.get_uploader.username)
                 },
                 updated=entry.get('created'),
                 links=[{
                     'href':
                     entry.url_for_self(request.urlgen, qualified=True),
                     'rel':
                     'alternate',
                     'type':
                     'text/html'
                 }])

    return feed.get_response()
Exemple #3
0
def tag_listing(request, page):
    """'Gallery'/listing for this tag slug"""
    tag_slug = request.matchdict[u'tag']

    cursor = media_entries_for_tag_slug(request.db, tag_slug)
    cursor = cursor.order_by(MediaEntry.created.desc())

    pagination = Pagination(page, cursor)
    media_entries = pagination()

    tag_name = _get_tag_name_from_entries(media_entries, tag_slug)

    return render_to_response(
        request,
        'mediagoblin/listings/tag.html',
        {'tag_slug': tag_slug,
         'tag_name': tag_name,
         'media_entries': media_entries,
         'pagination': pagination})
Exemple #4
0
def tag_listing(request, page):
    """'Gallery'/listing for this tag slug"""
    tag_slug = request.matchdict[u'tag']

    cursor = media_entries_for_tag_slug(request.db, tag_slug)
    cursor = cursor.order_by(MediaEntry.created.desc())

    pagination = Pagination(page, cursor)
    media_entries = pagination()

    tag_name = _get_tag_name_from_entries(media_entries, tag_slug)

    return render_to_response(
        request,
        'mediagoblin/listings/tag.html',
        {'tag_slug': tag_slug,
         'tag_name': tag_name,
         'media_entries': media_entries,
         'pagination': pagination})
Exemple #5
0
def tag_atom_feed(request):
    """
    generates the atom feed with the tag images
    """
    tag_slug = request.matchdict[u'tag']

    cursor = media_entries_for_tag_slug(request.db, tag_slug)
    cursor = cursor.sort('created', DESCENDING)
    cursor = cursor.limit(ATOM_DEFAULT_NR_OF_UPDATED_ITEMS)

    """
    ATOM feed id is a tag URI (see http://en.wikipedia.org/wiki/Tag_URI)
    """
    feed = AtomFeed(
        "MediaGoblin: Feed for tag '%s'" % tag_slug,
        feed_url=request.url,
        id='tag:'+request.host+',2011:gallery.tag-%s' % tag_slug,
        links=[{'href': request.urlgen(
                 'mediagoblin.listings.tags_listing',
                 qualified=True, tag=tag_slug ),
            'rel': 'alternate',
            'type': 'text/html'}])
    for entry in cursor:
        feed.add(entry.get('title'),
            entry.description_html,
            id=entry.url_for_self(request.urlgen,qualified=True),
            content_type='html',
            author={'name': entry.get_uploader.username,
                'uri': request.urlgen(
                    'mediagoblin.user_pages.user_home',
                    qualified=True, user=entry.get_uploader.username)},
            updated=entry.get('created'),
            links=[{
                'href':entry.url_for_self(
                   request.urlgen,
                   qualified=True),
                'rel': 'alternate',
                'type': 'text/html'}])

    return feed.get_response()
Exemple #6
0
def atom_feed(request):
    """
    generates the atom feed with the tag images
    """
    tag_slug = request.matchdict.get(u'tag')
    feed_title = "MediaGoblin Feed"
    if tag_slug:
        feed_title += " for tag '%s'" % tag_slug
        link = request.urlgen('mediagoblin.listings.tags_listing',
                              qualified=True, tag=tag_slug )
        cursor = media_entries_for_tag_slug(request.db, tag_slug)
    else: # all recent item feed
        feed_title += " for all recent items"
        link = request.urlgen('index', qualified=True)
        cursor = MediaEntry.query.filter_by(state=u'processed')
    cursor = cursor.order_by(MediaEntry.created.desc())
    cursor = cursor.limit(ATOM_DEFAULT_NR_OF_UPDATED_ITEMS)


    """
    ATOM feed id is a tag URI (see http://en.wikipedia.org/wiki/Tag_URI)
    """
    atomlinks = [{
        'href': link,
        'rel': 'alternate',
        'type': 'text/html'}]

    if mg_globals.app_config["push_urls"]:
        for push_url in mg_globals.app_config["push_urls"]:
            atomlinks.append({
                'rel': 'hub',
                'href': push_url})

    feed = AtomFeed(
        feed_title,
        feed_url=request.url,
        id=link,
        links=atomlinks)

    for entry in cursor:
        # Include a thumbnail image in content.
        file_urls = get_media_file_paths(entry.media_files, request.urlgen)
        if 'thumb' in file_urls:
            content = u'<img src="{thumb}" alt='' /> {desc}'.format(
                thumb=file_urls['thumb'], desc=entry.description_html)
        else:
            content = entry.description_html

        feed.add(
            entry.get('title'),
            content,
            id=entry.url_for_self(request.urlgen, qualified=True),
            content_type='html',
            author={
                'name': entry.get_actor.username,
                'uri': request.urlgen(
                    'mediagoblin.user_pages.user_home',
                    qualified=True,
                    user=entry.get_actor.username)},
            updated=entry.get('created'),
            links=[{
                'href': entry.url_for_self(
                    request.urlgen,
                    qualified=True),
                'rel': 'alternate',
                'type': 'text/html'}])

    return feed.get_response()
Exemple #7
0
def atom_feed(request):
    """
    generates the atom feed with the tag images
    """
    tag_slug = request.matchdict.get('tag')
    feed_title = "MediaGoblin Feed"
    if tag_slug:
        feed_title += " for tag '%s'" % tag_slug
        link = request.urlgen('mediagoblin.listings.tags_listing',
                              qualified=True, tag=tag_slug)
        cursor = media_entries_for_tag_slug(request.db, tag_slug)
    else:  # all recent item feed
        feed_title += " for all recent items"
        link = request.urlgen('index', qualified=True)
        cursor = MediaEntry.query.filter_by(state='processed')
    cursor = cursor.order_by(MediaEntry.created.desc())
    cursor = cursor.limit(ATOM_DEFAULT_NR_OF_UPDATED_ITEMS)

    """
    ATOM feed id is a tag URI (see http://en.wikipedia.org/wiki/Tag_URI)
    """
    atomlinks = []
    if mg_globals.app_config["push_urls"]:
        for push_url in mg_globals.app_config["push_urls"]:
            atomlinks.append({
                'rel': 'hub',
                'href': push_url})

    feed = AtomFeedWithLinks(
        title=feed_title,
        link=link,
        description='',
        feed_url=request.url,
        links=atomlinks,
    )

    for entry in cursor:
        # Include a thumbnail image in content.
        file_urls = get_media_file_paths(entry.media_files, request.urlgen)
        if 'thumb' in file_urls:
            content = '<img src="{thumb}" alt='' /> {desc}'.format(
                thumb=file_urls['thumb'], desc=entry.description_html)
        else:
            content = entry.description_html

        feed.add_item(
            # AtomFeed requires a non-blank title. This situation can occur if
            # you edit a media item and blank out the existing title.
            title=entry.get('title') or _('Untitled'),
            link=entry.url_for_self(
                request.urlgen,
                qualified=True),
            description=content,
            unique_id=entry.url_for_self(request.urlgen, qualified=True),
            author_name=entry.get_actor.username,
            author_link=request.urlgen(
                    'mediagoblin.user_pages.user_home',
                    qualified=True,
                    user=entry.get_actor.username),
            updateddate=entry.get('created'),
        )

    response = Response(
        feed.writeString(encoding='utf-8'),
        mimetype='application/atom+xml'
    )
    return response