Mercurial > hg > bitsyblog
comparison bitsyblog/user.py @ 94:fa221a2d24d9
wow; old + crufty
author | Jeff Hammel <jhammel@mozilla.com> |
---|---|
date | Wed, 24 Apr 2013 09:07:15 -0700 |
parents | 0af1f4ae328d |
children | dd4abe56edf7 |
comparison
equal
deleted
inserted
replaced
93:5c04cf601aba | 94:fa221a2d24d9 |
---|---|
5 from roles import roles | 5 from roles import roles |
6 from webob import exc | 6 from webob import exc |
7 | 7 |
8 class BitsyUser(object): | 8 class BitsyUser(object): |
9 """interface class for a bitsyblog user""" | 9 """interface class for a bitsyblog user""" |
10 settings = {} | 10 settings = {} |
11 def __init__(self, name, password=''): | 11 def __init__(self, name, password=''): |
12 self.name = name | 12 self.name = name |
13 self.password = password | 13 self.password = password |
14 | 14 |
15 # user behaves like a dictionary of settings | 15 # user behaves like a dictionary of settings |
37 return user | 37 return user |
38 | 38 |
39 def passwords(self): | 39 def passwords(self): |
40 """returns a dictionary of { user: password }""" | 40 """returns a dictionary of { user: password }""" |
41 passwords = {} | 41 passwords = {} |
42 for user in self.users(): | 42 for user in self.users(): |
43 passwords[user] = self.password(user) | 43 passwords[user] = self.password(user) |
44 return passwords | 44 return passwords |
45 | 45 |
46 ### interface methods to be specified by the child class | 46 ### interface methods to be specified by the child class |
47 def new(self, name, password): | 47 def new(self, name, password): |
122 os.mkdir(home) | 122 os.mkdir(home) |
123 pw_file = file(self.pw_file(name), 'w') | 123 pw_file = file(self.pw_file(name), 'w') |
124 print >> pw_file, password | 124 print >> pw_file, password |
125 | 125 |
126 # setup entries structure for blog | 126 # setup entries structure for blog |
127 entries = os.path.join(home, 'entries') | 127 entries = os.path.join(home, 'entries') |
128 os.mkdir(entries) | 128 os.mkdir(entries) |
129 for setting in roles['author']: | 129 for setting in roles['author']: |
130 os.mkdir(os.path.join(entries, setting)) | 130 os.mkdir(os.path.join(entries, setting)) |
131 | 131 |
132 # setup user CSS | 132 # setup user CSS |
133 css_dir = os.path.join(home, 'css') | 133 css_dir = os.path.join(home, 'css') |
134 os.mkdir(css_dir) | 134 os.mkdir(css_dir) |
135 shutil.copyfile(os.path.join(self.directory, 'site.css'), | 135 shutil.copyfile(os.path.join(self.directory, 'site.css'), |
136 os.path.join(css_dir, 'default.css')) | 136 os.path.join(css_dir, 'default.css')) |
137 | 137 |
138 | 138 |
157 filename = self.home(name, 'preferences.txt') | 157 filename = self.home(name, 'preferences.txt') |
158 prefs = {} | 158 prefs = {} |
159 if os.path.exists(filename): | 159 if os.path.exists(filename): |
160 prefs = file(filename).read().split('\n') | 160 prefs = file(filename).read().split('\n') |
161 prefs = [ i for i in prefs if i.strip() ] | 161 prefs = [ i for i in prefs if i.strip() ] |
162 prefs = [ [ j.strip() for j in i.split(':', 1) ] | 162 prefs = [ [ j.strip() for j in i.split(':', 1) ] |
163 for i in prefs if ':' in i] | 163 for i in prefs if ':' in i] |
164 prefs = dict(prefs) | 164 prefs = dict(prefs) |
165 | 165 |
166 # assemble friends from a list | 166 # assemble friends from a list |
167 friends = prefs.get('Friends') # can see secret blog posts | 167 friends = prefs.get('Friends') # can see secret blog posts |
170 else: | 170 else: |
171 prefs['Friends'] = [] | 171 prefs['Friends'] = [] |
172 | 172 |
173 # CSS files | 173 # CSS files |
174 prefs['CSS'] = self.css(name, prefs.get('Stylesheet')) | 174 prefs['CSS'] = self.css(name, prefs.get('Stylesheet')) |
175 | 175 |
176 return prefs | 176 return prefs |
177 | 177 |
178 def write_settings(self, name, **kw): | 178 def write_settings(self, name, **kw): |
179 """write user settings to disk""" | 179 """write user settings to disk""" |
180 | 180 |
181 # generic stuff; could factor out | 181 # generic stuff; could factor out |
182 | |
183 newsettings = {} | 182 newsettings = {} |
184 errors = {} | 183 errors = {} |
185 | 184 |
186 for setting in settings.form: | 185 for setting in settings.form: |
187 if kw.has_key(setting.name): | 186 if kw.has_key(setting.name): |
200 if new_css: | 199 if new_css: |
201 filename = new_css['filename'] | 200 filename = new_css['filename'] |
202 css_file = file(self.home(name, 'css', filename), 'w') | 201 css_file = file(self.home(name, 'css', filename), 'w') |
203 print >> css_file, new_css['css'] | 202 print >> css_file, new_css['css'] |
204 newsettings['CSS'] = filename.rsplit('.css', 1)[0] | 203 newsettings['CSS'] = filename.rsplit('.css', 1)[0] |
205 | 204 |
206 prefs = self.settings(name) | 205 prefs = self.settings(name) |
207 prefs.update(newsettings) | 206 prefs.update(newsettings) |
208 | 207 |
209 # write the preferences to a file | 208 # write the preferences to a file |
210 preferences = file(self.preferences_file(name), 'w') | 209 preferences = file(self.preferences_file(name), 'w') |