Mercurial > hg > bitsyblog
comparison bitsyblog/blog.py @ 106:c7495fb71045
more output
author | Jeff Hammel <k0scist@gmail.com> |
---|---|
date | Thu, 21 Apr 2016 15:17:39 -0700 |
parents | e5a23f5ea14e |
children | 6e7544e256b6 |
comparison
equal
deleted
inserted
replaced
105:67e01fc5e360 | 106:c7495fb71045 |
---|---|
1 """blog interfaces to data for bitsy""" | 1 """ |
2 blog models | |
3 """ | |
2 | 4 |
5 # imports | |
3 import datetime | 6 import datetime |
4 import os | 7 import os |
8 import sys | |
5 import utils | 9 import utils |
6 | |
7 from cStringIO import StringIO | 10 from cStringIO import StringIO |
8 from glob import glob | 11 from glob import glob |
9 from pkg_resources import iter_entry_points | 12 from pkg_resources import iter_entry_points |
10 | 13 |
14 | |
11 class BlogEntry(object): | 15 class BlogEntry(object): |
12 """interface class for a blog entry""" | 16 """interface class for a blog entry""" |
17 | |
13 def __init__(self, date, body, privacy, user, modified=None): | 18 def __init__(self, date, body, privacy, user, modified=None): |
14 self.date = date | 19 self.date = date |
15 self.body = body | 20 self.body = body |
16 self.privacy = privacy | 21 self.privacy = privacy |
17 self._modified = modified | 22 self._modified = modified |
68 for user in users: | 73 for user in users: |
69 blog.extend(self.blog(user, ('public',), number)) | 74 blog.extend(self.blog(user, ('public',), number)) |
70 blog.sort(key=lambda entry: entry.date, reverse=True) | 75 blog.sort(key=lambda entry: entry.date, reverse=True) |
71 return blog[:number] | 76 return blog[:number] |
72 | 77 |
73 # interfaces for subclasses | 78 ### interfaces for subclasses |
74 | 79 |
75 def blog(self, user, permissions, number=None): | 80 def blog(self, user, permissions, number=None): |
76 """ | 81 """ |
77 return the user's blog sorted in reverse date order | 82 return the user's blog sorted in reverse date order |
78 if number is None, the entire blog is returned | 83 if number is None, the entire blog is returned |
93 return BlogEntry(date, text, privacy, user) | 98 return BlogEntry(date, text, privacy, user) |
94 | 99 |
95 def delete(self, user, datestamp): | 100 def delete(self, user, datestamp): |
96 """remove a blog entry""" | 101 """remove a blog entry""" |
97 | 102 |
103 | |
98 class FileBlog(Blog): | 104 class FileBlog(Blog): |
99 """a blog that lives on the filesystem""" | 105 """a blog that lives on the filesystem""" |
100 | 106 |
101 def __init__(self, directory): | 107 def __init__(self, directory): |
102 self.directory = directory | 108 self.directory = directory |
108 def body(self, user, datestamp, permission): | 114 def body(self, user, datestamp, permission): |
109 return file(self.location(user, permission, datestamp)).read() | 115 return file(self.location(user, permission, datestamp)).read() |
110 | 116 |
111 def get_entry(self, user, datestamp, permission): | 117 def get_entry(self, user, datestamp, permission): |
112 modified = datetime.datetime.fromtimestamp(os.path.getmtime(self.location(user, permission, datestamp))) | 118 modified = datetime.datetime.fromtimestamp(os.path.getmtime(self.location(user, permission, datestamp))) |
113 return BlogEntry(utils.date(datestamp), | 119 try: |
114 self.body(user, datestamp, permission), | 120 return BlogEntry(utils.date(datestamp), |
115 permission, user, modified=modified) | 121 self.body(user, datestamp, permission), |
122 permission, | |
123 user, | |
124 modified=modified) | |
125 except Exception: | |
126 sys.stderr.write("Error getting blog entry for datestamp: '{0}'\n".format(datestamp)) | |
127 raise | |
116 | 128 |
117 ### interfaces from Blog | 129 ### interfaces from Blog |
118 | 130 |
119 def blog(self, user, permissions, number=None): | 131 def blog(self, user, permissions, number=None): |
120 entries = [] | 132 entries = [] |