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')