Skip to content

Commit 764b668

Browse files
committed
Added AnnotationInfo action on paraphéo view
1 parent 8fa7b44 commit 764b668

File tree

4 files changed

+34
-6
lines changed

4 files changed

+34
-6
lines changed

src/imio/esign/browser/actions.py

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
# -*- coding: utf-8 -*-
22
from AccessControl import Unauthorized
33
from html import escape
4-
from imio.esign.utils import persistent_to_native
54
from imio.esign import _
65
from imio.esign.adapters import ISignable
76
from imio.esign.utils import add_files_to_session
87
from imio.esign.utils import get_session_annotation
8+
from imio.esign.utils import persistent_to_native
99
from imio.esign.utils import remove_context_from_session
1010
from imio.esign.utils import remove_files_from_session
1111
from imio.helpers.content import uuidToObject
@@ -186,15 +186,28 @@ def _render_value(self, value, indent=u""):
186186

187187
@property
188188
def esign_sessions(self):
189-
"""Return list of (session_id, session_data) for all sessions."""
189+
"""
190+
Return list of (session_id, session_data) for all sessions.
191+
Filter sessions using request params "session_id" and "context_uid" if provided.
192+
Returns all sessions if no filter params provided.
193+
"""
190194
annot = get_session_annotation()
191-
c_uid = self.context.UID()
195+
request_session_id = self.request.form.get("session_id")
196+
try:
197+
request_session_id = int(request_session_id)
198+
except (ValueError, TypeError):
199+
request_session_id = None
200+
201+
c_uid = self.request.form.get("context_uid")
192202
result = []
193203
for session_id in annot['sessions']:
204+
if request_session_id is not None and request_session_id != session_id:
205+
continue
194206
session = annot.get("sessions", {}).get(session_id)
195207
# If any file in this session is in this context
196-
if any(f['context_uid'] == c_uid for f in session['files']):
197-
result.append((session_id, persistent_to_native(session)))
208+
if c_uid and not any(f['context_uid'] == c_uid for f in session['files']):
209+
continue
210+
result.append((session_id, persistent_to_native(session)))
198211
return sorted(result)
199212

200213
def esign_session_html(self, session_data):

src/imio/esign/browser/table.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
from imio.esign.config import get_registry_seal_code
77
from imio.esign.config import get_registry_seal_email
88
from imio.esign.utils import get_state_description
9+
from imio.helpers.security import check_zope_admin
910
from plone import api
1011
from Products.CMFPlone.utils import safe_unicode
1112
from z3c.table.column import Column
@@ -189,6 +190,15 @@ def renderCell(self, item):
189190
session_id=session_id,
190191
send=translate(_("Create external session"), context=self.request),
191192
)
193+
if check_zope_admin():
194+
admin_buttons += u"""
195+
<a href="{sessions_url}/@@session-annotation-info?session_id={session_id}" target="_blank">
196+
<img title="Annotation info" src="info.png">
197+
</a>
198+
""".format(
199+
sessions_url=sessions_url,
200+
session_id=session_id,
201+
)
192202
dashboard_button = u"""
193203
<a href="{dashboard_link}"><img title="{dashboard_view}" style="cursor:pointer"
194204
src="++resource++imio.esign/view_element.png"></a>

src/imio/esign/browser/templates/session_annotation_info.pt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
metal:use-macro="context/main_template/macros/master"
66
i18n:domain="imio.esign">
77
<body>
8-
<metal:bodytext fill-slot="content-core">
8+
<metal:bodytext fill-slot="content">
99
<tal:esign tal:repeat="session view/esign_sessions">
1010
<h2 tal:content="python:'imio.esign session (id: {})'.format(session[0])"></h2>
1111
<pre style="background: #f5f5f5; color: #333; padding: 1em; overflow: auto;"

src/imio/esign/browser/templates/session_files.pt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,11 @@
44
</tal:none>
55
<ol tal:condition="files">
66
<li tal:repeat="file files">
7+
<a tal:condition="python: context.portal_membership.checkPermission('Manage portal', context)"
8+
tal:attributes="href python:file[0].absolute_url() + '/@@session-annotation-info?context_uid=' + file[0].UID()"
9+
target="_blank">
10+
<img title="Annotation info" src="info.png">
11+
</a>
712
<tal:link tal:replace="structure python:view.get_file_link(file[0], file[1])">link</tal:link>
813
</li>
914
</ol>

0 commit comments

Comments
 (0)