File tree Expand file tree Collapse file tree 4 files changed +55
-0
lines changed
Expand file tree Collapse file tree 4 files changed +55
-0
lines changed Original file line number Diff line number Diff line change 88
99 <i18n : registerTranslations directory =" locales" />
1010
11+ <include file =" events.zcml" />
1112 <include file =" permissions.zcml" />
1213
1314 <include package =" .browser" />
Original file line number Diff line number Diff line change 1+ # -*- coding: utf-8 -*-
2+
3+ from imio .esign .utils import get_sessions_for
4+
5+
6+ def on_categorized_annex_updated (annex , event ):
7+ '''When an annex is modified, update check if need to update esign session.'''
8+ old_values = event .old_values
9+ # we are creating a new annex, not in a session
10+ if not old_values :
11+ return
12+
13+ sessions = get_sessions_for (event .parent .UID ())
14+ if not sessions :
15+ return
16+
17+ new_values = event .new_values
18+ # if something usefull changed, we will update the session
19+ update = False
20+ checked_keys = ['title' , 'filesize' , 'relative_url' ]
21+ for checked_key in checked_keys :
22+ if new_values [checked_key ] != old_values [checked_key ]:
23+ update = True
24+ break
25+ if update :
26+ annex_uid = annex .UID ()
27+ for session in sessions :
28+ # size
29+ size_diff = new_values ['filesize' ] - old_values ['filesize' ]
30+ session ['size' ] += size_diff
31+ # title and filename
32+ for file_data in session ['files' ]:
33+ if file_data ['uid' ] == annex_uid :
34+ file_data ['title' ] = new_values ['title' ]
35+ file_data ['filename' ] = annex .file .filename
Original file line number Diff line number Diff line change 1+ <configure
2+ xmlns =" http://namespaces.zope.org/zope" >
3+
4+ <subscriber for =" imio.annex.content.annex.IAnnex
5+ collective.iconifiedcategory.interfaces.ICategorizedElementUpdatedEvent"
6+ handler =" .events.on_categorized_annex_updated" />
7+
8+ </configure >
Original file line number Diff line number Diff line change @@ -352,6 +352,17 @@ def get_session_info(session_id, portal=None):
352352 return annot ['sessions' ][session_id ]
353353
354354
355+ def get_sessions_for (context_uid ):
356+ """ """
357+ sessions = []
358+ annot = get_session_annotation ()
359+ for f_uid in annot ["c_uids" ].get (context_uid , []):
360+ session_id = annot ["uids" ].get (f_uid )
361+ if session_id is not None :
362+ sessions .append (annot ["sessions" ].get (session_id ))
363+ return sessions
364+
365+
355366def remove_context_from_session (context_uids ):
356367 """Remove all files from a session that are linked to the given context UIDs.
357368
You can’t perform that action at this time.
0 commit comments