summaryrefslogtreecommitdiffstats
path: root/parsers/users.py
diff options
context:
space:
mode:
Diffstat (limited to 'parsers/users.py')
-rw-r--r--parsers/users.py36
1 files changed, 24 insertions, 12 deletions
diff --git a/parsers/users.py b/parsers/users.py
index 75145eb..4bcc4fb 100644
--- a/parsers/users.py
+++ b/parsers/users.py
@@ -22,7 +22,7 @@ todo = """
- [copy these from paper notes]
"""
-USERS_FILE = "users_e.json"
+USERS_FILE = "users.json"
ENCRYPTED_DIR = "encrypted"
def register_user(u, email, password=None, pwhash=None):
@@ -46,16 +46,22 @@ def register_user(u, email, password=None, pwhash=None):
except Exception as e:
print(f"Exception <{e}>\n{len(User.objects.all())} users now in db:\n{User.objects.all()}")
raise
+ return user
+def get_key():
+ key = settings.LONGTERM_SECRET_KEY # Django generated
+ k = base64.urlsafe_b64encode(key.encode("utf8")[:32]) # make Fernet compatible
+ f = Fernet(k)
+ return f
+
+
def load_users():
"""These are the previously registered users of the troggle system.
"""
PARSER_USERS = "_users"
DataIssue.objects.filter(parser=PARSER_USERS).delete()
- key = settings.LONGTERM_SECRET_KEY # Django generated
- k = base64.urlsafe_b64encode(key.encode("utf8")[:32]) # make Fernet compatible
- f = Fernet(k)
+ f = get_key()
jsonfile = settings.EXPOWEB / ENCRYPTED_DIR / USERS_FILE
jsonurl = "/" + str(Path(ENCRYPTED_DIR) / USERS_FILE)
@@ -83,7 +89,12 @@ def load_users():
print(f" - {len(users_list)} users read from JSON")
for userdata in users_list:
- if userdata["username"]:
+ if not userdata["username"]:
+ message = f"! user: BAD username for {userdata} in {jsonfile}"
+ print(message)
+ DataIssue.objects.update_or_create(parser=PARSER_USERS, message=message, url=jsonurl)
+ continue
+ else:
if userdata["username"] in [ "expo", "expoadmin" ]:
continue
if "encrypted" not in userdata:
@@ -102,14 +113,15 @@ def load_users():
return None
if "pwhash" in userdata:
pwhash = userdata["pwhash"]
- register_user(u, email, pwhash=pwhash)
+ new_user = register_user(u, email, pwhash=pwhash)
else:
- register_user(u, email)
- else:
- print(f" - user: BAD username for {userdata} ")
-
+ new_user = register_user(u, email)
+ save_users()
+
+def save_users():
+ f = get_key()
ru = []
- print(f"\n + Exporting users, encrypted emails, and password hashes")
+ print(f"\n + Saving users, encrypted emails, and password hashes")
for u in User.objects.all():
if u.username in ["expo", "expoadmin"]:
continue
@@ -120,7 +132,7 @@ def load_users():
print(f" - {u.username} - {original}")
jsondict = { "registered_users": ru }
- encryptedfile = settings.EXPOWEB / ENCRYPTED_DIR / "encrypt.json"
+ encryptedfile = settings.EXPOWEB / ENCRYPTED_DIR / USERS_FILE
if settings.DEVSERVER:
with open(encryptedfile, 'w', encoding='utf-8') as json_f:
json.dump(jsondict, json_f, indent=1)