Пример #1
0
def generate_nav_catalog(subsections, is_root=False):
    links = []

    if is_root:
        links.append({
            'type': 'application/atom+xml',
            'rel': 'self',
            'href': reverse('pathagar.books.views.root')
        })

    links.append({
        'title': 'Home',
        'type': 'application/atom+xml',
        'rel': 'start',
        'href': reverse('pathagar.books.views.root')
    })

    feed = AtomFeed(title = 'Pathagar Bookserver OPDS feed', \
        atom_id = 'pathagar:full-catalog', subtitle = \
        'OPDS catalog for the Pathagar book server', \
        extra_attrs = ATTRS, hide_generator=True, links=links)

    for subsec in subsections:
        feed.add_item(subsec['id'],
                      subsec['title'],
                      subsec['updated'],
                      links=subsec['links'])

    s = StringIO()
    feed.write(s, 'UTF-8')
    return s.getvalue()
Пример #2
0
 def getFeedFromState(self, feedState, gui):
     feedVersion = feedState.feedVersion
     if (feedVersion == "rss"):
         feed = RssFeed()
     if (feedVersion == "atom"):
         feed = AtomFeed()
     feed.loadFromState(feedState, gui)
     feed.feedVersion = feedVersion
     return feed
Пример #3
0
 def getFeedFromNode(self, feedNode, gui):
     feedVersion = feedNode.getAttribute("type")
     if (feedVersion == "rss"):
         feed = RssFeed()
     if (feedVersion == "atom"):
         feed = AtomFeed()
     feed.loadFromNode(feedNode, gui)
     feed.feedVersion = feedVersion
     return feed
Пример #4
0
def generate_catalog(request, page_obj):
    links = []
    links.append({'title': 'Home', 'type': 'application/atom+xml',
                  'rel': 'start',
                  'href': reverse('root_feed')})

    if page_obj.has_previous():
        previous_page = page_obj.previous_page_number()
        links.append(
            {'title': 'Previous results', 'type': 'application/atom+xml',
             'rel': 'previous',
             'href': page_qstring(request, previous_page)})

    if page_obj.has_next():
        next_page = page_obj.next_page_number()
        links.append({'title': 'Next results', 'type': 'application/atom+xml',
                      'rel': 'next',
                      'href': page_qstring(request, next_page)})

    feed = AtomFeed(title='Pathagar Bookserver OPDS feed',
                    atom_id='pathagar:full-catalog',
                    subtitle='OPDS catalog for the Pathagar book server',
                    extra_attrs=ATTRS, hide_generator=True, links=links)

    for book in page_obj.object_list:
        if book.cover_img:
            linklist = [{'rel': 'http://opds-spec.org/acquisition',
                         'href': reverse('book_download',
                                         kwargs=dict(book_id=book.pk)),
                         'type': __get_mimetype(book)},
                        {'rel': 'http://opds-spec.org/cover', 'href':
                            book.cover_img.url}]
        else:
            linklist = [{'rel': 'http://opds-spec.org/acquisition',
                         'href': reverse('book_download',
                                         kwargs=dict(book_id=book.pk)),
                         'type': __get_mimetype(book)}]

        add_kwargs = {
            'content': book.summary,
            'links': linklist,
            'authors': [{'name': a.name} for a in book.authors.all()],
            'dc_publisher': [p.name for p in book.publishers.all()],
            'dc_issued': book.dc_issued,
            'dc_identifier': book.dc_identifier,
        }

        if book.dc_language is not None:
            add_kwargs['dc_language'] = book.dc_language.code

        feed.add_item(book.a_id, book.title, book.a_updated, **add_kwargs)

    s = StringIO()
    feed.write(s, 'UTF-8')
    return s.getvalue()
Пример #5
0
def atom():
    feed = AtomFeed(author='postmarketOS bloggers',
                    feed_url=request.url,
                    icon=url_for('logo_svg', _external=True),
                    title='postmarketOS Blog',
                    url=url_for('blog', _external=True))

    for year, posts in get_posts(external_links=True).items():
        for post in posts:
            feed.add(
                content=post['html'],
                content_type='html',
                title=post['title'],
                url=post['url'],
                # midnight
                updated=datetime.combine(post['date'], datetime.min.time()))
    return feed.get_response()
Пример #6
0
def edge_atom():
    feed = AtomFeed(author='postmarketOS',
                    feed_url=request.url,
                    icon=url_for('logo_svg', _external=True),
                    title='Breaking updates in pmOS edge',
                    url=url_for('edge', _external=True))

    for year, posts in get_posts(external_links=True,
                                 dir=EDGE_CONTENT_DIR).items():
        for post in posts:
            feed.add(
                content=post['html'],
                content_type='html',
                title=post['title'],
                url=post['url'],
                # midnight
                updated=datetime.combine(post['date'], datetime.min.time()))
    return feed.get_response()
Пример #7
0
def generate_catalog(request, page_obj):
    attrs = {}
    attrs[u'xmlns:dcterms'] = u'http://purl.org/dc/terms/'
    attrs[u'xmlns:opds'] = u'http://opds-spec.org/'
    attrs[u'xmlns:dc'] = u'http://purl.org/dc/elements/1.1/'
    attrs[u'xmlns:opensearch'] = 'http://a9.com/-/spec/opensearch/1.1/'

    links = []

    if page_obj.has_previous():
        previous_page = page_obj.previous_page_number()
        links.append({
            'title': 'Previous results',
            'type': 'application/atom+xml',
            'rel': 'previous',
            'href': page_qstring(request, previous_page)
        })

    if page_obj.has_next():
        next_page = page_obj.next_page_number()
        links.append({
            'title': 'Next results',
            'type': 'application/atom+xml',
            'rel': 'next',
            'href': page_qstring(request, next_page)
        })

    feed = AtomFeed(title = 'Pathagar Bookserver OPDS feed', \
        atom_id = 'pathagar:full-catalog', subtitle = \
        'OPDS catalog for the Pathagar book server', \
        extra_attrs = attrs, hide_generator=True, links=links)

    for book in page_obj.object_list:
        if book.cover_img:
            linklist = [{'rel': \
                    'http://opds-spec.org/acquisition', 'href': \
                    reverse('pathagar.books.views.download_book',
                            kwargs=dict(book_id=book.pk)),
                    'type': __get_mimetype(book)}, {'rel': \
                    'http://opds-spec.org/cover', 'href': \
                    book.cover_img.url }]
        else:
            linklist = [{'rel': \
                     'http://opds-spec.org/acquisition', 'href': \
                     reverse('pathagar.books.views.download_book',
                             kwargs=dict(book_id=book.pk)),
                     'type': __get_mimetype(book)}]

        add_kwargs = {
            'content': book.a_summary,
            'links': linklist,
            'authors': [{
                'name': book.a_author
            }],
            'dc_publisher': book.dc_publisher,
            'dc_issued': book.dc_issued,
            'dc_identifier': book.dc_identifier,
        }

        if book.dc_language is not None:
            add_kwargs['dc_language'] = book.dc_language.code

        feed.add_item(book.a_id, book.a_title, book.a_updated, **add_kwargs)

    s = StringIO()
    feed.write(s, 'UTF-8')
    return s.getvalue()