Skip to content

Commit 600392b

Browse files
committed
Added conditions on admin actions for sessions in sessions listing view
1 parent 67910f5 commit 600392b

File tree

2 files changed

+21
-9
lines changed

2 files changed

+21
-9
lines changed

src/imio/esign/browser/table.py

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
from Products.CMFPlone.utils import safe_unicode
88
from z3c.table.column import Column
99
from z3c.table.table import Table
10+
from zope.component import getMultiAdapter
1011
from zope.i18n import translate
1112

1213

@@ -139,15 +140,17 @@ def renderCell(self, item):
139140
sessions_url = self.table.view.get_sessions_url()
140141
#if not sessions_url.endswith("/"):
141142
# sessions_url += "/"
142-
admin_buttons = u"""
143-
<img title="{delete}" onclick="javascript:confirmDeleteObject(base_url='{sessions_url}', object_uid=null, this,
144-
msgName=null, view_name='@@esign-session-delete?esign_session_id={session_id}', redirect=null);" style="cursor:pointer" src="delete_icon.png">
145-
""".format(
146-
delete=translate(_("Delete session"), context=self.request),
147-
sessions_url=sessions_url,
148-
session_id=session_id,
149-
)
150-
if item.get("state") == "draft":
143+
admin_buttons = u""
144+
if getMultiAdapter((self.context, self.request), name="esign-session-delete").may_delete_session():
145+
admin_buttons = u"""
146+
<img title="{delete}" onclick="javascript:confirmDeleteObject(base_url='{sessions_url}', object_uid=null, this,
147+
msgName=null, view_name='@@esign-session-delete?esign_session_id={session_id}', redirect=null);" style="cursor:pointer" src="delete_icon.png">
148+
""".format(
149+
delete=translate(_("Delete session"), context=self.request),
150+
sessions_url=sessions_url,
151+
session_id=session_id,
152+
)
153+
if item.get("state") == "draft" and getMultiAdapter((self.context, self.request), name="external-esign-session-create").may_create_external_sessions():
151154
admin_buttons += u"""
152155
<img title="{send}" onclick="javascript:callViewAndReload('{sessions_url}',
153156
'@@external-esign-session-create', {{'session_id': '{session_id}'}});"

src/imio/esign/browser/views.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
from imio.esign import _
55
from imio.esign import ESIGN_CREDENTIALS
66
from imio.esign import ESIGN_ROOT_URL
7+
from imio.esign import manage_session_perm
78
from imio.esign.browser.table import external_session_link
89
from imio.esign.browser.table import SessionsTable
910
from imio.esign.config import get_registry_enabled
@@ -113,6 +114,10 @@ def __call__(self):
113114

114115
return self.request.RESPONSE.redirect(self.context.absolute_url() + "/@@parapheo")
115116

117+
def may_delete_session(self):
118+
"""Check if the user may delete sessions"""
119+
return api.user.has_permission(manage_session_perm, obj=self.context)
120+
116121

117122
class ExternalSessionCreateView(BrowserView):
118123
"""View to create a session in Luxtrust."""
@@ -151,6 +156,10 @@ def __call__(self, session_id=None):
151156
)
152157
return self.context.absolute_url() + "/@@parapheo"
153158

159+
def may_create_external_sessions(self):
160+
"""Check if the user may create external sessions"""
161+
return api.user.has_permission(manage_session_perm, obj=self.context)
162+
154163

155164
class FacetedSessionInfoViewlet(ViewletBase):
156165
"""Show selected session info inside faceted results."""

0 commit comments

Comments
 (0)