From 09809160626271d0353dc648217aac3e86b19ff6 Mon Sep 17 00:00:00 2001 From: jide Date: Tue, 2 Jul 2024 19:57:16 -0500 Subject: [PATCH] Log idp on login. Start on handling rename of package involved in collaboration. --- webapp/auth/user_data.py | 5 ++++- webapp/auth/views.py | 13 +++---------- webapp/home/views.py | 4 ++++ webapp/views/collaborations/collaborations.py | 10 ++++++++++ 4 files changed, 21 insertions(+), 11 deletions(-) diff --git a/webapp/auth/user_data.py b/webapp/auth/user_data.py index c9ff498e..97285ebc 100644 --- a/webapp/auth/user_data.py +++ b/webapp/auth/user_data.py @@ -5,6 +5,7 @@ Helper functions for accessing data regarding the current user. """ +from datetime import datetime import json import os import os.path @@ -111,7 +112,7 @@ def get_user_document_list(current_user_directory_only=True): return packageids -def initialize_user_data(cname, uid, auth_token): +def initialize_user_data(cname, idp, uid, auth_token): user_folder_name = get_user_folder_name(current_user_directory_only=True) user_uploads_folder_name = get_user_uploads_folder_name() if not os.path.exists(Config.USER_DATA_DIR): @@ -125,7 +126,9 @@ def initialize_user_data(cname, uid, auth_token): os.mkdir(user_uploads_folder_name) user_properties = get_user_properties() user_properties['cname'] = cname + user_properties['idp'] = idp user_properties['uid'] = uid + user_properties['datetime'] = datetime.now().strftime('%Y-%m-%d %H:%M:%S') user_properties['auth_token'] = auth_token save_user_properties(user_properties) diff --git a/webapp/auth/views.py b/webapp/auth/views.py index 4772d4e9..24c812eb 100644 --- a/webapp/auth/views.py +++ b/webapp/auth/views.py @@ -87,7 +87,7 @@ def login(): session_id = cname + "*" + pasta_token.uid user = User(session_id) login_user(user) - initialize_user_data(cname, pasta_token.uid, auth_token) + initialize_user_data(cname, 'LDAP', pasta_token.uid, auth_token) log_usage(actions['LOGIN'], cname, 'LDAP', current_user.get_user_login()) next_page = request.args.get('next') if not next_page or urlparse(next_page).netloc != '': @@ -112,20 +112,13 @@ def login(): # log_info(f"cname: {cname}") if auth_token is not None and cname is not None: pasta_token = PastaToken(auth_token) - username = '' - # decoded_bytes = base64.b64decode(auth_token) - # decoded_str = decoded_bytes.decode("utf-8") - # try: - # username = decoded_str.split("-")[0].split('*')[0] - # except: - # username = '' uid = pasta_token.uid log_info(f"uid: {uid}") session_id = cname + "*" + uid user = User(session_id) login_user(user) - initialize_user_data(cname, pasta_token.uid, auth_token) - log_usage(actions['LOGIN'], cname, idp, username, current_user.get_user_login()) + initialize_user_data(cname, idp, uid, auth_token) + log_usage(actions['LOGIN'], cname, idp, uid, current_user.get_user_login()) next_page = request.args.get('next') if not next_page or urlparse(next_page).netloc != '': current_document = get_active_document() diff --git a/webapp/home/views.py b/webapp/home/views.py index 34cd482e..fda2587e 100644 --- a/webapp/home/views.py +++ b/webapp/home/views.py @@ -977,6 +977,10 @@ def move_files(from_package, to_package): eml_node = load_eml(filename=new_document) fixup_distribution_urls(eml_node) save_both_formats(filename=new_document, eml_node=eml_node) + # Rename the package in the collaborations database. It is assumed that if we got here, we've already + # established that the current user is the owner of the document. + user_login = current_user.get_user_org() + # collaborations.rename_package(user_login, current_document, new_document) # Delete the old package user_data.delete_package(current_document) diff --git a/webapp/views/collaborations/collaborations.py b/webapp/views/collaborations/collaborations.py index 01f48a0c..665cb6d1 100644 --- a/webapp/views/collaborations/collaborations.py +++ b/webapp/views/collaborations/collaborations.py @@ -381,6 +381,16 @@ def _add_lock(package_id, locked_by, session=None): return lock +def rename_package(owner_login, old_package_name, new_package_name, session=None): + """ + Rename a package by updating the package name in the package record. + """ + with db_session(session) as session: + package = get_package(owner_login, old_package_name, session) + if package: + package.package_name = new_package_name + + def remove_package(owner_login, package_name, session=None): """ To be called when a package is deleted. Removes all records associated with the package.