Changeset 695
- Timestamp:
- 06/18/08 15:53:23 (5 months ago)
- Files:
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
oss/headstock/headstock/example/microblog/microblog/jabber/pubsub.py
r693 r695 298 298 return 1 299 299 300 def make_entry(self, msg ):300 def make_entry(self, msg, node): 301 301 uuid = generate_uuid_uri() 302 302 entry = E.load('./entry.atom').xml_root … … 307 307 entry.get_child('updated', ns=entry.xml_ns).xml_text = dt 308 308 entry.get_child('content', ns=entry.xml_ns).xml_text = unicode(msg) 309 310 if node != self.pubsub_top_level_node: 311 tag = extract_url_trail(node) 312 E(u'category', namespace=entry.xml_ns, prefix=entry.xml_prefix, 313 attributes={u'term': unicode(tag)}, parent=entry) 314 315 print entry.xml() 309 316 return uuid, entry 310 317 … … 330 337 if m: 331 338 node, message = m.groups() 332 uuid, entry = self.make_entry(message )339 uuid, entry = self.make_entry(message, node) 333 340 i = Item(id=uuid, payload=entry) 334 341 p = Node(unicode(self.from_jid), u'pubsub.%s' % self.xmpphost, oss/headstock/headstock/example/microblog/microblog/web/application.py
r687 r695 6 6 from microblog.profile.user import EmptyUserProfile, UserProfile 7 7 from microblog.web.speakup import SpeakUpWebApplication 8 from microblog.web.atompub import CollectionHandler, CollectionPagingHandler 8 from microblog.web.atompub import CollectionHandler, CollectionPagingHandler,\ 9 CollectionTagingHandler 9 10 10 11 __all__ = ['WebApplication'] … … 87 88 def attach_serving_collection_application(self, c, profile, d): 88 89 profile_name = profile.username 90 route = '/%s' % profile_name.encode('utf-8') 91 92 controller = CollectionPagingHandler(c) 93 d.add('%s/paging' % route, GET=controller.GET) 94 95 controller = CollectionTagingHandler(c) 96 d.add('%s/tag/{tag}' % route, GET=controller.index) 97 89 98 controller = CollectionHandler(c) 90 route = '/%s' % profile_name.encode('utf-8')91 99 speakup = SpeakUpWebApplication(self.base_dir, self.atompub, 92 100 self.tpl_lookup, profile, controller) 93 94 101 d.add('%s[/]' % route, GET=speakup.index, 95 102 POST=controller.create) … … 98 105 PUT=controller.replace, 99 106 DELETE=controller.remove) 100 101 controller = CollectionPagingHandler(c)102 d.add('%s/paging' % route, GET=controller.GET)oss/headstock/headstock/example/microblog/microblog/web/atompub.py
r687 r695 22 22 23 23 __all__ = ['AtomPubWebApplication', 'CollectionHandler', 24 'CollectionPagingHandler' ]24 'CollectionPagingHandler', 'CollectionTagingHandler'] 25 25 26 26 class AtomPubWebApplication(object): … … 238 238 cherrypy.response.headers['content-type'] = 'application/atom+xml;type=feed' 239 239 return feed.xml(indent=True) 240 241 class CollectionTagingHandler(object): 242 def __init__(self, collection): 243 self.collection = collection 244 self.cat_index = self.collection.indexers[0].retrieve('ci') 245 246 def index(self, tag): 247 res = self.cat_index.lookup(term=tag) 248 if res: 249 member_ids = [member_id for collection, member_id in res] 250 members = self.collection.reload_members_from_list(member_ids) 251 feed = self.collection.to_feed(members=members) 252 cherrypy.response.headers['etag'] = compute_etag_from_feed(feed) 253 cherrypy.response.headers['content-type'] = 'application/atom+xml;type=feed' 254 return feed.xml(indent=True) 255 256 return "No results"
