Skip to content

Commit b79e414

Browse files
authored
Merge pull request #5 from IMIO/SE-330/sessions_link
Added sessions action 'parapheo' in portal_tab
2 parents b3a887b + 7399a7b commit b79e414

File tree

7 files changed

+25
-69
lines changed

7 files changed

+25
-69
lines changed

src/imio/esign/browser/configure.zcml

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,18 +23,19 @@
2323
/>
2424

2525
<browser:page
26-
name="esign-sessions-listing"
27-
for="imio.esign.interfaces.IImioSessionsManagementContext"
26+
name="parapheo"
27+
for="Products.CMFPlone.interfaces.IPloneSiteRoot"
2828
class=".views.SessionsListingView"
2929
permission="zope2.View"
3030
template="templates/sessions.pt"
3131
i18n:domain="imio.esign"
32+
allowed_attributes="available"
3233
/>
3334

3435
<!-- @@esign-session-files on sessions folder -->
3536
<browser:page
3637
name="esign-session-files"
37-
for="imio.esign.interfaces.IImioSessionsManagementContext"
38+
for="Products.CMFPlone.interfaces.IPloneSiteRoot"
3839
class=".views.SessionFilesView"
3940
permission="zope2.View"
4041
template="templates/session_files.pt"
@@ -53,15 +54,15 @@
5354

5455
<browser:page
5556
name="esign-session-delete"
56-
for="imio.esign.interfaces.IImioSessionsManagementContext"
57+
for="Products.CMFPlone.interfaces.IPloneSiteRoot"
5758
class=".views.SessionDeleteView"
5859
permission="imio.esign.ManageSessions"
5960
i18n:domain="imio.esign"
6061
/>
6162

6263
<browser:page
6364
name="external-esign-session-create"
64-
for="imio.esign.interfaces.IImioSessionsManagementContext"
65+
for="Products.CMFPlone.interfaces.IPloneSiteRoot"
6566
class=".views.ExternalSessionCreateView"
6667
permission="imio.esign.ManageSessions"
6768
i18n:domain="imio.esign"

src/imio/esign/browser/settings.py

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -88,19 +88,3 @@ class ImioEsignSettings(RegistryEditForm):
8888
ImioEsignSettingsView = layout.wrap_form(
8989
ImioEsignSettings, ControlPanelFormWrapper
9090
)
91-
92-
93-
def detect_settings_changed(event):
94-
"""
95-
Manage our record changes
96-
"""
97-
if (IRecordModifiedEvent.providedBy(event) and event.record.interfaceName
98-
and event.record.interface == IImioEsignSettings):
99-
new_value = event.newValue
100-
if event.record.fieldName == 'enabled':
101-
portal = api.portal.get()
102-
# hide "sessions" link from navigation depending on eSign enable or not
103-
if new_value is True:
104-
portal.get('sessions').setExcludeFromNav(False)
105-
else:
106-
portal.get('sessions').setExcludeFromNav(True)

src/imio/esign/browser/views.py

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
from imio.esign import ESIGN_ROOT_URL
77
from imio.esign.browser.table import external_session_link
88
from imio.esign.browser.table import SessionsTable
9-
from imio.esign.interfaces import IImioSessionsManagementContext
9+
from imio.esign.config import get_registry_enabled
1010
from imio.esign.utils import create_external_session
1111
from imio.esign.utils import get_session_annotation
1212
from imio.esign.utils import remove_session
@@ -23,7 +23,6 @@
2323
from zope.i18n import translate
2424
from zope.interface import implementer
2525
from zope.publisher.interfaces import IPublishTraverse
26-
from zope.security.interfaces import Unauthorized
2726

2827
import csv
2928
import os
@@ -43,13 +42,8 @@ class SessionsListingView(BrowserView):
4342
def __init__(self, context, request):
4443
super(SessionsListingView, self).__init__(context, request)
4544

46-
def __call__(self):
47-
# Verify that the context provides the correct interface
48-
if not IImioSessionsManagementContext.providedBy(self.context):
49-
raise Unauthorized(
50-
"This view can only be called on a context providing IImioSessionsManagementContext"
51-
)
52-
return self.index()
45+
def available(self):
46+
return get_registry_enabled()
5347

5448
def render_table(self):
5549
table = SessionsTable(self.context, self, self.request, self.get_sessions())
@@ -68,7 +62,7 @@ def get_dashboard_link(self, session):
6862
raise NotImplementedError
6963

7064
def get_sessions_url(self):
71-
raise NotImplementedError
65+
return api.portal.get().absolute_url()
7266

7367

7468
class SessionFilesView(BrowserView):
@@ -117,7 +111,7 @@ def __call__(self):
117111
else:
118112
api.portal.show_message(_("Session not found!"), request=self.request, type="error")
119113

120-
return self.request.RESPONSE.redirect(self.context.absolute_url() + "/@@esign-sessions-listing")
114+
return self.request.RESPONSE.redirect(self.context.absolute_url() + "/@@parapheo")
121115

122116

123117
class ExternalSessionCreateView(BrowserView):
@@ -128,7 +122,7 @@ def __call__(self, session_id=None):
128122
session_id = self.request.get("session_id", None)
129123
if session_id is None:
130124
api.portal.show_message(_("No session ID provided!"), request=self.request, type="error")
131-
return self.context.absolute_url() + "/@@esign-sessions-listing"
125+
return self.context.absolute_url() + "/@@parapheo"
132126
resp = create_external_session(
133127
int(session_id),
134128
b64_cred=ESIGN_CREDENTIALS,
@@ -155,7 +149,7 @@ def __call__(self, session_id=None):
155149
request=self.request,
156150
type="error",
157151
)
158-
return self.context.absolute_url() + "/@@esign-sessions-listing"
152+
return self.context.absolute_url() + "/@@parapheo"
159153

160154

161155
class FacetedSessionInfoViewlet(ViewletBase):
@@ -204,7 +198,7 @@ def ext_session_link(self, session):
204198

205199
@property
206200
def session_listing_url(self):
207-
return api.portal.get().absolute_url() + "/sessions/@@esign-sessions-listing"
201+
return api.portal.get().absolute_url() + "/@@parapheo"
208202

209203

210204
class ItemSessionInfoViewlet(FacetedSessionInfoViewlet):

src/imio/esign/configure.zcml

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,4 @@
4646
provides="collective.compoundcriterion.interfaces.ICompoundCriterionFilter"
4747
name="files-belonging-to-a-given-session" />
4848

49-
<subscriber
50-
for="plone.registry.interfaces.IRecordModifiedEvent"
51-
handler=".browser.settings.detect_settings_changed" />
52-
5349
</configure>

src/imio/esign/interfaces.py

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,6 @@ class IImioEsignLayer(IDefaultBrowserLayer):
99
"""Marker interface that defines a browser layer."""
1010

1111

12-
class IImioSessionsManagementContext(Interface):
13-
"""Marker interface used to restrict session listing and actions."""
14-
15-
1612
class IContextUidProvider(Interface):
1713
"""Adapter to provide context UID for a file."""
1814

src/imio/esign/profiles/default/actions.xml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,4 +25,15 @@
2525
<property name="visible">True</property>
2626
</object>
2727
</object>
28+
<object name="portal_tabs" meta_type="CMF Action Category">
29+
<object name="parapheo" meta_type="CMF Action">
30+
<property name="title">Paraphéo</property>
31+
<property name="url_expr">string:${portal_url}/@@parapheo</property>
32+
<property name="available_expr">object/@@parapheo/available</property>
33+
<property name="permissions">
34+
<element value="View" />
35+
</property>
36+
<property name="visible">True</property>
37+
</object>
38+
</object>
2839
</object>

src/imio/esign/setuphandlers.py

Lines changed: 0 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,7 @@
11
# -*- coding: utf-8 -*-
22

3-
from imio.esign import logger
4-
from imio.esign.interfaces import IImioSessionsManagementContext
53
from plone import api
64
from Products.CMFPlone.interfaces import INonInstallable
7-
from zope.interface import alsoProvides
85
from zope.interface import implementer
96

107

@@ -24,31 +21,8 @@ def getNonInstallableProducts(self):
2421
def post_install(context):
2522
"""Post install script"""
2623
portal = api.portal.get()
27-
create_sessions_link(portal)
2824

2925

3026
def uninstall(context):
3127
"""Uninstall script"""
3228
# Do something at the end of the uninstallation of this package.
33-
34-
35-
def create_sessions_link(portal):
36-
"""Create sessions link in portal root if not exists"""
37-
if not hasattr(portal, "sessions"):
38-
portal.invokeFactory("Link", id="sessions", title="Sessions", remoteUrl="sessions/esign-sessions-listing")
39-
s_l = portal["sessions"]
40-
s_l.setExcludeFromNav(True)
41-
alsoProvides(s_l, IImioSessionsManagementContext)
42-
# alsoProvides(s_l, IProtectedItem)
43-
s_l.manage_permission("Access contents information",
44-
("Contributor", "Editor", "Manager", "Reader", "Site administrator"), acquire=0)
45-
s_l.manage_permission("Modify portal content", ("Owner", ), acquire=0)
46-
s_l.manage_permission("View", ("Contributor", "Editor", "Manager", "Reader", "Site administrator"), acquire=0)
47-
s_l.changeOwnership(s_l.portal_membership.getMemberById("admin"))
48-
s_l.reindexObject()
49-
50-
unlisted = list(portal.portal_properties.navtree_properties.metaTypesNotToList)
51-
if "Link" not in unlisted:
52-
unlisted.append("Link")
53-
portal.portal_properties.navtree_properties.manage_changeProperties(metaTypesNotToList=unlisted)
54-
logger.info("Sessions link created in portal root")

0 commit comments

Comments
 (0)