Skip to content

Commit bd75f7d

Browse files
committed
Fix and optimization in on_categorized_annex_updated to avoid process if annex not really on a session
1 parent ad74f5d commit bd75f7d

File tree

2 files changed

+22
-8
lines changed

2 files changed

+22
-8
lines changed

src/imio/esign/events.py

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,24 +17,34 @@ def on_categorized_annex_updated(annex, event):
1717
if not sessions:
1818
return
1919

20+
# make sure annex_uid is in a session
2021
annex_uid = annex.UID()
21-
new_values = event.new_values
22+
file_infos = []
23+
for session_id in sessions:
24+
file_info = get_file_info(session_id, annex_uid)
25+
if file_info:
26+
file_infos.append(file_info)
27+
if not file_infos:
28+
return
29+
30+
# here we are sure that annex is in a session, we need to update data
2231
# if something usefull changed, we will update the session
32+
new_values = event.new_values
2333
update = False
2434
checked_keys = ['title', 'filesize', 'relative_url']
2535
for checked_key in checked_keys:
2636
if new_values[checked_key] != old_values[checked_key]:
2737
update = True
2838
break
2939
# 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
40+
if update is False:
41+
for file_info in file_infos:
42+
if file_info and (annex.scan_id != file_info['scan_id'] or \
43+
annex.file.filename != file_info['filename']):
44+
update = True
45+
break
3646

37-
if update:
47+
if update is True:
3848
for session_id, session in sessions.items():
3949
# size
4050
size_diff = new_values['filesize'] - old_values['filesize']

src/imio/esign/tests/test_utils.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -518,6 +518,10 @@ def test_add_files_already_exist_is_updated(self):
518518
notify(ObjectModifiedEvent(annex1))
519519
self.assertEqual(session["files"][1]["filename"], "new_annex0-1.pdf")
520520
self.assertEqual(session["files"][1]["scan_id"], "012345600000002")
521+
# edit annex out of any session
522+
annex2_uid = self.uids[2]
523+
annex2 = api.content.get(UID=annex2_uid)
524+
notify(ObjectModifiedEvent(annex2))
521525
# just to check, remove annex0
522526
remove_files_from_session((annex0_uid,))
523527
self.assertEqual(session["size"], 6968)

0 commit comments

Comments
 (0)