@@ -83,6 +83,20 @@ def add_files_to_session(
8383 annex = uuidToObject (uuid = uid , unrestricted = True )
8484 context_uid_provider = getAdapter (annex , IContextUidProvider )
8585 context_uid = context_uid_provider .get_context_uid ()
86+ # update data if adding same file to same session
87+ if annot ['uids' ].get (uid , - 1 ) == session_id :
88+ logger .info ('File with UID %s is already in session_id %s and data were updated!' , uid , session_id )
89+ # remove old data from "files", existing_files and c_uids
90+ #data_index = [file_data['uid'] for file_data in session["files"]].index(uid)
91+ #old_filename = path.splitext([fn for fn in session["files"] if fn['uid'] == uid][0]['filename'])[0]
92+ #existing_files.remove(old_filename)
93+ #annot["c_uids"][context_uid].remove(uid)
94+ #del session["files"][data_index]
95+ old_filename = path .splitext ([fn for fn in session ["files" ]
96+ if fn ['uid' ] == uid ][0 ]['filename' ])[0 ]
97+ existing_files .remove (old_filename )
98+ remove_files_from_session ([uid ], remove_empty_session = False )
99+
86100 filename , ext = path .splitext (annex .file .filename or "no_filename.pdf" )
87101 new_filename = get_correct_id (existing_files , filename )
88102 session ["files" ].append (
@@ -353,7 +367,7 @@ def remove_context_from_session(context_uids):
353367 remove_files_from_session (list (c_uids [context_uid ]))
354368
355369
356- def remove_files_from_session (files_uids ):
370+ def remove_files_from_session (files_uids , remove_empty_session = True ):
357371 """Remove files from their corresponding sessions.
358372
359373 :param files_uids: list of file UIDs to remove
@@ -386,7 +400,7 @@ def remove_files_from_session(files_uids):
386400 continue
387401
388402 del session ["files" ][i ]
389- if not session ["files" ]:
403+ if not session ["files" ] and remove_empty_session :
390404 del sessions [session_id ]
391405 else :
392406 session ["last_update" ] = datetime .now ()
0 commit comments