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()
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
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
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()
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()
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()
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()