Expand reach of cdc in user model

This commit is contained in:
Tim Van Baak 2020-02-23 20:07:06 -08:00
parent 1bd0f1e0c1
commit dc340a1d5e
2 changed files with 9 additions and 8 deletions

View File

@ -116,7 +116,7 @@ class LexiconConfigDirectoryContext(ConfigDirectoryContext):
self.draft = ConfigDirectoryContext(os.path.join(self.path, 'draft'))
self.src = ConfigDirectoryContext(os.path.join(self.path, 'src'))
def config(edit=False):
def config(self, edit=False):
if edit:
return self.edit('config')
else:
@ -127,7 +127,7 @@ class UserConfigDirectoryContext(ConfigDirectoryContext):
"""
A config context for a user's config directory.
"""
def config(edit=False):
def config(self, edit=False):
if edit:
return self.edit('config')
else:

View File

@ -8,7 +8,7 @@ from werkzeug.security import generate_password_hash, check_password_hash
from amanuensis.errors import (
ArgumentError, MissingConfigError, IndexMismatchError)
from amanuensis.config import prepend, json_ro, json_rw
from amanuensis.config import prepend, json_rw, root
from amanuensis.resources import get_stream
@ -27,7 +27,7 @@ class UserModel(UserMixin):
if not uid and not name:
raise ArgumentError("One of uid or name must be not None")
if not uid:
with json_ro('user', 'index.json') as index:
with root.user.index() as index:
uid = index.get(name)
if not uid:
return None
@ -41,7 +41,8 @@ class UserModel(UserMixin):
"""User model initializer, assume all checks were done by by()"""
self.id = str(uid) # Flask-Login checks for this
self.config_path = prepend('user', uid, 'config.json')
with json_ro(self.config_path) as j:
self.ctx = root.user[self.id]
with self.ctx.config() as j:
self.config = j
def __getattr__(self, key):
@ -57,12 +58,12 @@ class UserModel(UserMixin):
def set_password(self, pw):
h = generate_password_hash(pw)
with json_rw(self.config_path) as j:
with self.ctx.config(edit=True) as j:
j['password'] = h
def check_password(self, pw):
with json_ro(self.config_path) as j:
return check_password_hash(j['password'], pw)
with self.ctx.config() as cfg:
return check_password_hash(cfg.password, pw)
def in_lexicon(self, lexicon):
return self.id in lexicon.join.joined