diff options
Diffstat (limited to 'parsers/users.py')
-rw-r--r-- | parsers/users.py | 36 |
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) |