Mercurial > hg > bitsyblog
comparison bitsyblog/blog.py @ 69:bcc3a59713c3
1st steps to have blog post entry handler plugins
author | Jeff Hammel <jhammel@mozilla.com> |
---|---|
date | Wed, 07 Jul 2010 13:58:21 -0700 |
parents | e3823be6a423 |
children | f6a6a4b072e7 |
comparison
equal
deleted
inserted
replaced
68:3550159184cf | 69:bcc3a59713c3 |
---|---|
3 import os | 3 import os |
4 import utils | 4 import utils |
5 | 5 |
6 from cStringIO import StringIO | 6 from cStringIO import StringIO |
7 from glob import glob | 7 from glob import glob |
8 from pkg_resources import iter_entry_points | |
8 | 9 |
9 class BlogEntry(object): | 10 class BlogEntry(object): |
10 """interface class for a blog entry""" | 11 """interface class for a blog entry""" |
11 def __init__(self, date, body, privacy, user): | 12 def __init__(self, date, body, privacy, user): |
12 self.date = date | 13 self.date = date |
44 def datestamp(self): | 45 def datestamp(self): |
45 return utils.datestamp(self.date) | 46 return utils.datestamp(self.date) |
46 | 47 |
47 class Blog(object): | 48 class Blog(object): |
48 """abstract class for a users' blog""" | 49 """abstract class for a users' blog""" |
50 def __init__(self): | |
51 self.handlers = [] # handlers for blog post event | |
52 for entry_point in iter_entry_points('bitsyblog.listeners'): | |
53 try: | |
54 handler = entry_point.load() | |
55 self.handlers.append(handler) | |
56 except: | |
57 continue | |
49 | 58 |
50 def __call__(self, user, permissions=('public',), number=None): | 59 def __call__(self, user, permissions=('public',), number=None): |
51 return self.blog(user, permissions, number=number) | 60 return self.blog(user, permissions, number=number) |
52 | 61 |
53 def latest(self, users, number): | 62 def latest(self, users, number): |
76 """return entries by date""" | 85 """return entries by date""" |
77 | 86 |
78 | 87 |
79 def post(self, user, date, text, privacy): | 88 def post(self, user, date, text, privacy): |
80 """post a new blog entry""" | 89 """post a new blog entry""" |
81 | 90 entry = BlogEntry(date, body, privacy, user): |
91 for handler in self.handlers: | |
92 handler(entry) | |
82 | 93 |
83 def delete(self, user, datestamp): | 94 def delete(self, user, datestamp): |
84 """remove a blog entry""" | 95 """remove a blog entry""" |
85 | 96 |
86 class FileBlog(Blog): | 97 class FileBlog(Blog): |
87 """a blog that lives on the filesystem""" | 98 """a blog that lives on the filesystem""" |
88 | 99 |
89 def __init__(self, directory): | 100 def __init__(self, directory): |
101 Blog.__init__(self) | |
90 self.directory = directory | 102 self.directory = directory |
91 | 103 |
92 def location(self, user, permission, *path): | 104 def location(self, user, permission, *path): |
93 """returns which directory files are in based on permission""" | 105 """returns which directory files are in based on permission""" |
94 return os.path.join(self.directory, user, 'entries', permission, *path) | 106 return os.path.join(self.directory, user, 'entries', permission, *path) |