Esempio n. 1
0
    def GET(self, start):
        if not start: start = 0
        start = int(start)
        
        members = self.collection.reload_members(start=start, limit=10)
        feed = self.collection.to_feed(members=members)

        attrs = {u'rel': u'first', u'type': u'application/atom+xml;type=feed',
                 u'href': safe_url_join([self.collection.get_base_edit_uri(), u'paging'])}
        feed.feed.xml_append(feed.xml_create_element(qname(u"link", feed.feed.prefix),
                                                     ns=feed.feed.namespaceURI,
                                                     attributes=attrs))

        if start > 10:
            attrs = {u'rel': u'previous', u'type': u'application/atom+xml;type=feed',
                     u'href': safe_url_join([self.collection.get_base_edit_uri(),
                                             u'paging?start=%s' % unicode(start-10)])}
            feed.feed.xml_append(feed.xml_create_element(qname(u"link", feed.feed.prefix),
                                                         ns=feed.feed.namespaceURI,
                                                         attributes=attrs))
            
        attrs = {u'rel': u'next', u'type': u'application/atom+xml;type=feed',
                 u'href': safe_url_join([self.collection.get_base_edit_uri(),
                                         u'paging?start=%s' % unicode(start+10)])}
        feed.feed.xml_append(feed.xml_create_element(qname(u"link", feed.feed.prefix),
                                                     ns=feed.feed.namespaceURI,
                                                     attributes=attrs))
        
        cherrypy.response.headers['etag'] = compute_etag_from_feed(feed)
        cherrypy.response.headers['content-type'] = 'application/atom+xml;type=feed'
        return feed.xml(indent=True)
Esempio n. 2
0
    def index(self, tag):
        res = self.cat_index.lookup(term=tag)
        if res:
            member_ids = [member_id for collection, member_id in res]
            members = self.collection.reload_members_from_list(member_ids)
            feed = self.collection.to_feed(members=members)
            cherrypy.response.headers['etag'] = compute_etag_from_feed(feed)
            cherrypy.response.headers['content-type'] = 'application/atom+xml;type=feed'
            return feed.xml(indent=True)

        return "No results"
Esempio n. 3
0
    def tag(self, value, feed=None):
        t = self.indexer.indexes["category_index"].lookup(term=value)
        items = self.indexer.to_dict(t)
        as_feed = feed

        feed = self.service.make_feed(
            items,
            entry_processor=transform_member_resource,
            title=u"Tag %s" % value,
            member_comparer=app_updated_comparer,
        )

        params = {u"atom_feed_uri": u"/blog%s/feed" % unicode(cherrypy.request.path_info)}
        if as_feed == None:
            params[u"tag"] = value.decode("utf-8")
            return render_search_result(self.service.service, feed, params=params)
        else:
            feed = feed.xml_root
            A(u"georss", value=u"http://www.georss.org/georss", namespace=XMLNS_NS, prefix=XMLNS_PREFIX, parent=feed)
            A(
                u"geo",
                value=u"http://www.w3.org/2003/01/geo/wgs84_pos#",
                namespace=XMLNS_NS,
                prefix=XMLNS_PREFIX,
                parent=feed,
            )

            # E(u'link', attributes={u'rel': u'self', u'type': u'application/atom+xml;type=feed',
            #                       u'href': params['atom_feed_uri']},
            #  namespace=feed.xml_ns, prefix=feed.xml_prefix)

            entries = feed.get_children("entry", feed.xml_ns)
            if entries:
                entry = entries[0]
                updated = feed.get_child("updated", feed.xml_ns)
                eupdated = entry.get_child("updated", feed.xml_ns)
                updated.xml_text = eupdated.xml_text
            cherrypy.response.headers["content-type"] = "application/atom+xml;type=feed"
            cherrypy.response.headers["ETag"] = compute_etag_from_feed(feed)
            return feed.xml()

        raise cherrypy.NotFound()
Esempio n. 4
0
 def atom(self):
     cherrypy.response.headers["content-type"] = "application/atom+xml;type=feed"
     feed = self.collection.feed_handler.public_feed.xml_root
     cherrypy.response.headers["ETag"] = compute_etag_from_feed(feed)
     return self.collection.feed_handler.public_xml()
Esempio n. 5
0
 def feed(self):
     collection_feed = self.collection.feed_handler.retrieve()
     cherrypy.response.headers['etag'] = compute_etag_from_feed(collection_feed)
     cherrypy.response.headers['content-type'] = 'application/atom+xml;type=feed'
     return self.collection.feed_handler.collection_xml()