Changes.
This commit is contained in:
@@ -3,25 +3,37 @@ import json
|
|||||||
import gzip
|
import gzip
|
||||||
import base64
|
import base64
|
||||||
from io import BytesIO
|
from io import BytesIO
|
||||||
|
from uuid import UUID
|
||||||
|
|
||||||
def get_user_db(username: str, db: ZODB.DB) -> dict:
|
def get_user_db(username: str, db: ZODB.DB) -> dict:
|
||||||
udb = {
|
udb = {
|
||||||
"objects": {},
|
"objects": [],
|
||||||
"messages": [],
|
"messages": [],
|
||||||
"user": {},
|
"user": {},
|
||||||
"bulletins": [],
|
"bulletins": [],
|
||||||
"jobs": []
|
"jobs": []
|
||||||
}
|
}
|
||||||
username = username.strip().upper()
|
username = username.strip().upper()
|
||||||
with db.transaction() as db_conn:
|
with (db.transaction() as db_conn):
|
||||||
user = db_conn.root.users[username]
|
user = db_conn.root.users[username]
|
||||||
udb['user'] = user.to_safe_dict()
|
udb['user'] = user.to_safe_dict()
|
||||||
for o in user.object_uuids:
|
for o in user.object_uuids:
|
||||||
if type(o.data) is bytes:
|
obj = {}
|
||||||
o.data = base64.b64encode(o.data).decode()
|
tmp = db_conn.root.objects[o].to_dict()
|
||||||
|
|
||||||
|
obj['name'] = tmp['name']
|
||||||
|
obj['private'] = tmp['private']
|
||||||
|
obj['uuid'] = str(UUID(bytes=tmp['uuid_bytes']))
|
||||||
|
obj['created_at'] = tmp['created_at']
|
||||||
|
obj['modified_at'] = tmp['modified_at']
|
||||||
|
|
||||||
|
if type(tmp['data']) is bytes:
|
||||||
|
obj['data'] = base64.b64encode(tmp['data']).decode()
|
||||||
else:
|
else:
|
||||||
o.data = base64.b64encode(o.data.encode()).decode()
|
obj['data'] = str(tmp['data'])
|
||||||
udb['objects'][o] = db_conn.root.objects[o].to_dict()
|
|
||||||
|
udb['objects'].append(obj)
|
||||||
|
|
||||||
if user in db_conn.root.messages:
|
if user in db_conn.root.messages:
|
||||||
for m in db_conn.root.messages[username]:
|
for m in db_conn.root.messages[username]:
|
||||||
for a in m.attachments:
|
for a in m.attachments:
|
||||||
|
|||||||
@@ -298,7 +298,12 @@ def handle_new_job_post(req: Request, conn: PacketServerConnection, db: ZODB.DB)
|
|||||||
files = []
|
files = []
|
||||||
if 'db' in req.payload:
|
if 'db' in req.payload:
|
||||||
logging.debug(f"Fetching a user db as requested.")
|
logging.debug(f"Fetching a user db as requested.")
|
||||||
dbf = RunnerFile('user-db.json.gz', data=get_user_db_json(username.lower(), db))
|
try:
|
||||||
|
dbf = RunnerFile('user-db.json.gz', data=get_user_db_json(username.lower(), db))
|
||||||
|
except:
|
||||||
|
logging.error(format_exc())
|
||||||
|
send_blank_response(conn, req, 500)
|
||||||
|
return
|
||||||
files.append(dbf)
|
files.append(dbf)
|
||||||
if 'files' in req.payload:
|
if 'files' in req.payload:
|
||||||
if type(files) is dict:
|
if type(files) is dict:
|
||||||
|
|||||||
Reference in New Issue
Block a user