11# -*- coding: utf-8 -*-
22
3+ from imio .esign .utils import get_file_info
34from imio .esign .utils import get_sessions_for
5+ from imio .helpers .transmogrifier import get_correct_id
6+ from os import path
47
58
69def on_categorized_annex_updated (annex , event ):
@@ -14,6 +17,7 @@ def on_categorized_annex_updated(annex, event):
1417 if not sessions :
1518 return
1619
20+ annex_uid = annex .UID ()
1721 new_values = event .new_values
1822 # if something usefull changed, we will update the session
1923 update = False
@@ -22,8 +26,15 @@ def on_categorized_annex_updated(annex, event):
2226 if new_values [checked_key ] != old_values [checked_key ]:
2327 update = True
2428 break
29+ # check scan_id and filename
30+ for session_id in sessions :
31+ file_info = get_file_info (session_id , annex_uid )
32+ if annex .scan_id != file_info ['scan_id' ] or \
33+ annex .file .filename != file_info ['filename' ]:
34+ update = True
35+ break
36+
2537 if update :
26- annex_uid = annex .UID ()
2738 for session_id , session in sessions .items ():
2839 # size
2940 size_diff = new_values ['filesize' ] - old_values ['filesize' ]
@@ -32,4 +43,12 @@ def on_categorized_annex_updated(annex, event):
3243 for file_data in session ['files' ]:
3344 if file_data ['uid' ] == annex_uid :
3445 file_data ['title' ] = new_values ['title' ]
35- file_data ['filename' ] = annex .file .filename
46+ file_data ['scan_id' ] = annex .scan_id
47+ # filename changed, need to make sure new filename is unique
48+ if annex .file .filename != file_data ['filename' ]:
49+ existing_files = [path .splitext (f ["filename" ])[0 ]
50+ for f in session ["files" ]]
51+ filename , ext = path .splitext (annex .file .filename )
52+ new_filename = get_correct_id (existing_files , filename )
53+ file_data ['filename' ] = new_filename + ext
54+ session ._p_changed = True
0 commit comments