mirror of
https://expo.survex.com/repositories/troggle/.git
synced 2025-12-17 17:17:08 +00:00
generated to-do lists updated
This commit is contained in:
@@ -59,6 +59,8 @@ def todos(request, module):
|
||||
from troggle.parsers.drawings import todo as parsersdrawings
|
||||
from troggle.parsers.locations import todo as parserslocations
|
||||
from troggle.parsers.logbooks import todo as parserslogbooks
|
||||
from troggle.parsers.people import todo as parserspeople
|
||||
from troggle.parsers.users import todo as parsersusers
|
||||
from troggle.parsers.survex import todo as parserssurvex
|
||||
from troggle.urls import todo as todourls
|
||||
|
||||
@@ -81,6 +83,8 @@ def todos(request, module):
|
||||
"parsers/drawings": parsersdrawings,
|
||||
"parsers/locations": parserslocations,
|
||||
"parsers/logbooks": parserslogbooks,
|
||||
"parsers/people": parserspeople,
|
||||
"parsers/users": parsersusers,
|
||||
"parsers/survex": parserssurvex,
|
||||
"urls": todourls,
|
||||
}
|
||||
|
||||
@@ -17,6 +17,10 @@ The standalone script needs to be renedred defucnt, and all the parsing needs to
|
||||
or they should use the same code by importing a module.
|
||||
"""
|
||||
|
||||
todo = """
|
||||
- [copy these from paper notes]
|
||||
"""
|
||||
|
||||
def parse_blurb(personline, header, person):
|
||||
"""create mugshot Photo instance
|
||||
Would be better if all this was done before the Person object was created in the db, then it would not
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user