3030
3131
3232def add_files_to_session (
33- signers , files_uids , seal = None , acroform = True , session_id = None , title = None , discriminators = (), watchers = ()
33+ signers , files_uids , seal = None , acroform = True , session_id = None , title = None , discriminators = (), watchers = (), create_session_custom_data = {}
3434):
3535 """Add files to a session with the given signers.
3636
@@ -42,6 +42,7 @@ def add_files_to_session(
4242 :param title: optional string for session title. If it contains {sign_id} or {session_id} it will be replaced
4343 :param discriminators: optional list of string discriminators to use for session discrimination
4444 :param watchers: optional list of external esign session watchers emails (used only when creating a new session)
45+ :param create_session_custom_data: optional custom dict of custom session data
4546 :return: session_id, session
4647 """
4748 annot = get_session_annotation ()
@@ -56,7 +57,8 @@ def add_files_to_session(
5657 if not session :
5758 session_id , session = create_session (
5859 signers , seal , acroform = acroform , title = title or "" , annot = annot , discriminators = discriminators ,
59- watchers = watchers
60+ watchers = watchers ,
61+ create_session_custom_data = create_session_custom_data ,
6062 )
6163 existing_files = [path .splitext (f ["filename" ])[0 ] for f in session ["files" ]]
6264 for uid in files_uids :
@@ -170,7 +172,7 @@ def create_external_session(session_id, b64_cred=None, esign_root_url=None):
170172 return ret
171173
172174
173- def create_session (signers , seal = False , acroform = True , title = None , annot = None , discriminators = (), watchers = ()):
175+ def create_session (signers , seal = False , acroform = True , title = None , annot = None , discriminators = (), watchers = (), create_session_custom_data = {} ):
174176 """Create a session with the given signers and seal.
175177
176178 :param signers: a list of signers, each is a quartet with userid, email, fullname and position text
@@ -180,6 +182,7 @@ def create_session(signers, seal=False, acroform=True, title=None, annot=None, d
180182 :param annot: esign annotation, if not provided it will be fetched
181183 :param discriminators: optional list of string discriminators
182184 :param watchers: optional list of external esign session watchers emails
185+ :param create_session_custom_data: optional custom dict of custom session data
183186 :return: session id and session information
184187 """
185188 if not annot :
@@ -208,6 +211,8 @@ def create_session(signers, seal=False, acroform=True, title=None, annot=None, d
208211 "title" : title ,
209212 "returns" : PersistentList (),
210213 })
214+ for k , v in create_session_custom_data .items ():
215+ sessions [session_id ][k ] = v
211216 return session_id , sessions [session_id ]
212217
213218
@@ -300,6 +305,17 @@ def get_session_annotation(portal=None):
300305 return annotations ["imio.esign" ]
301306
302307
308+ def get_session_info (session_id , portal = None ):
309+ """Return a session info for a given numbering.
310+
311+ :param session_id: the session id to return
312+ :param portal: portal if necessary to get the session annotation
313+ """
314+ annot = get_session_annotation (portal = portal )
315+ if session_id in annot ['sessions' ]:
316+ return annot ['sessions' ][session_id ]
317+
318+
303319def remove_context_from_session (context_uids ):
304320 """Remove all files from a session that are linked to the given context UIDs.
305321
0 commit comments