Mercurial > hg > bitsyblog
comparison bitsyblog/blog.py @ 70:f6a6a4b072e7
complete overhaul to allow event handlers
author | Jeff Hammel <jhammel@mozilla.com> |
---|---|
date | Wed, 07 Jul 2010 16:18:19 -0700 |
parents | bcc3a59713c3 |
children | 0c98d1c2c6df |
comparison
equal
deleted
inserted
replaced
69:bcc3a59713c3 | 70:f6a6a4b072e7 |
---|---|
45 def datestamp(self): | 45 def datestamp(self): |
46 return utils.datestamp(self.date) | 46 return utils.datestamp(self.date) |
47 | 47 |
48 class Blog(object): | 48 class Blog(object): |
49 """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 | |
58 | 50 |
59 def __call__(self, user, permissions=('public',), number=None): | 51 def __call__(self, user, permissions=('public',), number=None): |
60 return self.blog(user, permissions, number=number) | 52 return self.blog(user, permissions, number=number) |
61 | 53 |
62 def latest(self, users, number): | 54 def latest(self, users, number): |
85 """return entries by date""" | 77 """return entries by date""" |
86 | 78 |
87 | 79 |
88 def post(self, user, date, text, privacy): | 80 def post(self, user, date, text, privacy): |
89 """post a new blog entry""" | 81 """post a new blog entry""" |
90 entry = BlogEntry(date, body, privacy, user): | 82 return BlogEntry(date, text, privacy, user): |
91 for handler in self.handlers: | |
92 handler(entry) | |
93 | 83 |
94 def delete(self, user, datestamp): | 84 def delete(self, user, datestamp): |
95 """remove a blog entry""" | 85 """remove a blog entry""" |
96 | 86 |
97 class FileBlog(Blog): | 87 class FileBlog(Blog): |
98 """a blog that lives on the filesystem""" | 88 """a blog that lives on the filesystem""" |
99 | 89 |
100 def __init__(self, directory): | 90 def __init__(self, directory): |
101 Blog.__init__(self) | |
102 self.directory = directory | 91 self.directory = directory |
103 | 92 |
104 def location(self, user, permission, *path): | 93 def location(self, user, permission, *path): |
105 """returns which directory files are in based on permission""" | 94 """returns which directory files are in based on permission""" |
106 return os.path.join(self.directory, user, 'entries', permission, *path) | 95 return os.path.join(self.directory, user, 'entries', permission, *path) |
157 return [ self.get_entry(user, x[0], x[1]) for x in entries ] | 146 return [ self.get_entry(user, x[0], x[1]) for x in entries ] |
158 | 147 |
159 def post(self, user, datestamp, body, privacy): | 148 def post(self, user, datestamp, body, privacy): |
160 blog = file(self.location(user, privacy, datestamp), 'w') | 149 blog = file(self.location(user, privacy, datestamp), 'w') |
161 print >> blog, body | 150 print >> blog, body |
151 return Blog.post(user, datestamp, body, privacy) | |
162 | 152 |
163 def delete(self, user, datestamp): | 153 def delete(self, user, datestamp): |
164 for permission in 'public', 'secret', 'private': | 154 for permission in 'public', 'secret', 'private': |
165 path = self.location(user, permission, datestamp) | 155 path = self.location(user, permission, datestamp) |
166 if os.path.exists(path): | 156 if os.path.exists(path): |