diff options
author | Philip Sargent <philip.sargent@gmail.com> | 2025-01-20 15:30:15 +0000 |
---|---|---|
committer | Philip Sargent <philip.sargent@gmail.com> | 2025-01-20 15:30:15 +0000 |
commit | 1fcb2c520385209e0e90ac7e4a89a9057a25b1c2 (patch) | |
tree | e2d0d45bde0e1e6eaa51706a39930a0ff1ed0df5 /parsers/users.py | |
parent | 960958c9227b6b58399cf15cc5ecbfe6611649a3 (diff) | |
download | troggle-1fcb2c520385209e0e90ac7e4a89a9057a25b1c2.tar.gz troggle-1fcb2c520385209e0e90ac7e4a89a9057a25b1c2.tar.bz2 troggle-1fcb2c520385209e0e90ac7e4a89a9057a25b1c2.zip |
generated to-do lists updated
Diffstat (limited to 'parsers/users.py')
-rw-r--r-- | parsers/users.py | 37 |
1 files changed, 21 insertions, 16 deletions
diff --git a/parsers/users.py b/parsers/users.py index 2544ed1..6a14f5b 100644 --- a/parsers/users.py +++ b/parsers/users.py @@ -10,12 +10,17 @@ from django.db import models from troggle.core.models.troggle import DataIssue, Expedition, Person, PersonExpedition -"""These functions do not match how the stand-alone folk script works. So the script produces an HTML file which has -href links to pages in troggle which troggle does not think are right. -The standalone script needs to be renedred defucnt, and all the parsing needs to be in troggle. Either that, -or they should use the same code by importing a module. +"""This imports the registered troggle users, who are nearly-all, but not quite, Persons. +exceptions are "expo" and "expoadmin" which are created by the databaseReset.py import program. + +This imports unencrypted email addresses but never exports them. + +Passwords are only ever stored as hashes using the standard Django functions. """ +todo = """ +- [copy these from paper notes] +""" USERS_FILE = "users_e.json" ENCRYPTED_DIR = "encrypted" @@ -28,8 +33,6 @@ def load_users(): key = settings.LONGTERM_SECRET_KEY # Django generated k = base64.urlsafe_b64encode(key.encode("utf8")[:32]) # make Fernet compatible f = Fernet(k) - print(f) - jsonfile = settings.EXPOWEB / ENCRYPTED_DIR / USERS_FILE jsonurl = "/" + str(Path(ENCRYPTED_DIR) / USERS_FILE) @@ -57,27 +60,29 @@ def load_users(): print(f" - {len(users_list)} users read from JSON") for userdata in users_list: if userdata["username"]: - if userdata["username"] == "expo": - continue - if userdata["username"] == "expoadmin": + if userdata["username"] in [ "expo", "expoadmin" ]: continue + if "encrypted" not in userdata: + userdata["encrypted"] = True try: u = userdata["username"] - e_email = userdata["email"] - email = f.decrypt(e_email).decode() + email = userdata["email"] + if userdata["encrypted"]: + email = f.decrypt(email).decode() print(f" - user: '{u} <{email}>' ") if existing_user := User.objects.filter(username=userdata["username"]): # WALRUS # print(f" - deleting existing user '{existing_user[0]}' before importing") existing_user[0].delete() user = User.objects.create_user(userdata["username"], email, "secret") - user.set_password = "secret" # stores hash not password + user.set_password = "secret" # special attribute stores hash not password user.is_staff = False user.is_superuser = False user.save() except Exception as e: - print(f"Exception <{e}>\nusers in db: {len(User.objects.all())}\n{User.objects.all()}") + print(f"Exception <{e}>\n{len(User.objects.all())} users now in db:\n{User.objects.all()}") formatted_json = json.dumps(userdata, indent=4) print(formatted_json) + raise return None else: print(f" - user: BAD username for {userdata} ") @@ -94,8 +99,8 @@ def load_users(): if u.username == "expoadmin": continue e_email = f.encrypt(u.email.encode("utf8")).decode() - ru.append({"username":u.username, "email": e_email, "password": u.password}) - print(u.username, e_email) + ru.append({"username":u.username, "email": e_email, "password": u.password, "encrypted": True}) + # print(u.username, e_email) original = f.decrypt(e_email).decode() print(u.username, original) @@ -103,5 +108,5 @@ def load_users(): encryptedfile = settings.EXPOWEB / ENCRYPTED_DIR / "encrypt.json" # with open(encryptedfile, 'w', encoding='utf-8') as json_f: # json.dump(jsondict, json_f, indent=1) - # return True + return True |