Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 6 additions & 5 deletions src/imio/esign/browser/configure.zcml
Original file line number Diff line number Diff line change
Expand Up @@ -23,18 +23,19 @@
/>

<browser:page
name="esign-sessions-listing"
for="imio.esign.interfaces.IImioSessionsManagementContext"
name="parapheo"
for="Products.CMFPlone.interfaces.IPloneSiteRoot"
class=".views.SessionsListingView"
permission="zope2.View"
template="templates/sessions.pt"
i18n:domain="imio.esign"
allowed_attributes="available"
/>

<!-- @@esign-session-files on sessions folder -->
<browser:page
name="esign-session-files"
for="imio.esign.interfaces.IImioSessionsManagementContext"
for="Products.CMFPlone.interfaces.IPloneSiteRoot"
class=".views.SessionFilesView"
permission="zope2.View"
template="templates/session_files.pt"
Expand All @@ -53,15 +54,15 @@

<browser:page
name="esign-session-delete"
for="imio.esign.interfaces.IImioSessionsManagementContext"
for="Products.CMFPlone.interfaces.IPloneSiteRoot"
class=".views.SessionDeleteView"
permission="imio.esign.ManageSessions"
i18n:domain="imio.esign"
/>

<browser:page
name="external-esign-session-create"
for="imio.esign.interfaces.IImioSessionsManagementContext"
for="Products.CMFPlone.interfaces.IPloneSiteRoot"
class=".views.ExternalSessionCreateView"
permission="imio.esign.ManageSessions"
i18n:domain="imio.esign"
Expand Down
16 changes: 0 additions & 16 deletions src/imio/esign/browser/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -88,19 +88,3 @@ class ImioEsignSettings(RegistryEditForm):
ImioEsignSettingsView = layout.wrap_form(
ImioEsignSettings, ControlPanelFormWrapper
)


def detect_settings_changed(event):
"""
Manage our record changes
"""
if (IRecordModifiedEvent.providedBy(event) and event.record.interfaceName
and event.record.interface == IImioEsignSettings):
new_value = event.newValue
if event.record.fieldName == 'enabled':
portal = api.portal.get()
# hide "sessions" link from navigation depending on eSign enable or not
if new_value is True:
portal.get('sessions').setExcludeFromNav(False)
else:
portal.get('sessions').setExcludeFromNav(True)
22 changes: 8 additions & 14 deletions src/imio/esign/browser/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
from imio.esign import ESIGN_ROOT_URL
from imio.esign.browser.table import external_session_link
from imio.esign.browser.table import SessionsTable
from imio.esign.interfaces import IImioSessionsManagementContext
from imio.esign.config import get_registry_enabled
from imio.esign.utils import create_external_session
from imio.esign.utils import get_session_annotation
from imio.esign.utils import remove_session
Expand All @@ -23,7 +23,6 @@
from zope.i18n import translate
from zope.interface import implementer
from zope.publisher.interfaces import IPublishTraverse
from zope.security.interfaces import Unauthorized

import csv
import os
Expand All @@ -43,13 +42,8 @@ class SessionsListingView(BrowserView):
def __init__(self, context, request):
super(SessionsListingView, self).__init__(context, request)

def __call__(self):
# Verify that the context provides the correct interface
if not IImioSessionsManagementContext.providedBy(self.context):
raise Unauthorized(
"This view can only be called on a context providing IImioSessionsManagementContext"
)
return self.index()
def available(self):
return get_registry_enabled()

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

def get_sessions_url(self):
raise NotImplementedError
return api.portal.get().absolute_url()


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

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


class ExternalSessionCreateView(BrowserView):
Expand All @@ -128,7 +122,7 @@ def __call__(self, session_id=None):
session_id = self.request.get("session_id", None)
if session_id is None:
api.portal.show_message(_("No session ID provided!"), request=self.request, type="error")
return self.context.absolute_url() + "/@@esign-sessions-listing"
return self.context.absolute_url() + "/@@parapheo"
resp = create_external_session(
int(session_id),
b64_cred=ESIGN_CREDENTIALS,
Expand All @@ -155,7 +149,7 @@ def __call__(self, session_id=None):
request=self.request,
type="error",
)
return self.context.absolute_url() + "/@@esign-sessions-listing"
return self.context.absolute_url() + "/@@parapheo"


class FacetedSessionInfoViewlet(ViewletBase):
Expand Down Expand Up @@ -204,7 +198,7 @@ def ext_session_link(self, session):

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


class ItemSessionInfoViewlet(FacetedSessionInfoViewlet):
Expand Down
4 changes: 0 additions & 4 deletions src/imio/esign/configure.zcml
Original file line number Diff line number Diff line change
Expand Up @@ -46,8 +46,4 @@
provides="collective.compoundcriterion.interfaces.ICompoundCriterionFilter"
name="files-belonging-to-a-given-session" />

<subscriber
for="plone.registry.interfaces.IRecordModifiedEvent"
handler=".browser.settings.detect_settings_changed" />

</configure>
4 changes: 0 additions & 4 deletions src/imio/esign/interfaces.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,6 @@ class IImioEsignLayer(IDefaultBrowserLayer):
"""Marker interface that defines a browser layer."""


class IImioSessionsManagementContext(Interface):
"""Marker interface used to restrict session listing and actions."""


class IContextUidProvider(Interface):
"""Adapter to provide context UID for a file."""

Expand Down
11 changes: 11 additions & 0 deletions src/imio/esign/profiles/default/actions.xml
Original file line number Diff line number Diff line change
Expand Up @@ -25,4 +25,15 @@
<property name="visible">True</property>
</object>
</object>
<object name="portal_tabs" meta_type="CMF Action Category">
<object name="parapheo" meta_type="CMF Action">
<property name="title">Paraphéo</property>
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

à traduire? rajoute alors i18n_domain=imio.esign

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pour moi, c'est un nom propre donc pas traduisible. Par contre, je vais changer le name de "sessions" à "parapheo"

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oui tout à fait c'est juste que je n'aime pas les caractères spéciaux (ici "é") dans le titre des actions, mais si çà s'affiche correctement (ce qui je pense est le cas), laisse comme çà en effet ce n'est pas traduisible

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

J'avais compris dans la réunion qu'on ne nommerait pas paraphéo dans ia.docs (même si cette première idée a été avancée) mais au moment où on bascule vers Luxtrust.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Un peu de paraphéo mais pas trop...
@chris-adam tu peux merger quand tu veux 👍

<property name="url_expr">string:${portal_url}/@@parapheo</property>
<property name="available_expr">object/@@parapheo/available</property>
<property name="permissions">
<element value="View" />
</property>
<property name="visible">True</property>
</object>
</object>
</object>
26 changes: 0 additions & 26 deletions src/imio/esign/setuphandlers.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,7 @@
# -*- coding: utf-8 -*-

from imio.esign import logger
from imio.esign.interfaces import IImioSessionsManagementContext
from plone import api
from Products.CMFPlone.interfaces import INonInstallable
from zope.interface import alsoProvides
from zope.interface import implementer


Expand All @@ -24,31 +21,8 @@ def getNonInstallableProducts(self):
def post_install(context):
"""Post install script"""
portal = api.portal.get()
create_sessions_link(portal)


def uninstall(context):
"""Uninstall script"""
# Do something at the end of the uninstallation of this package.


def create_sessions_link(portal):
"""Create sessions link in portal root if not exists"""
if not hasattr(portal, "sessions"):
portal.invokeFactory("Link", id="sessions", title="Sessions", remoteUrl="sessions/esign-sessions-listing")
s_l = portal["sessions"]
s_l.setExcludeFromNav(True)
alsoProvides(s_l, IImioSessionsManagementContext)
# alsoProvides(s_l, IProtectedItem)
s_l.manage_permission("Access contents information",
("Contributor", "Editor", "Manager", "Reader", "Site administrator"), acquire=0)
s_l.manage_permission("Modify portal content", ("Owner", ), acquire=0)
s_l.manage_permission("View", ("Contributor", "Editor", "Manager", "Reader", "Site administrator"), acquire=0)
s_l.changeOwnership(s_l.portal_membership.getMemberById("admin"))
s_l.reindexObject()

unlisted = list(portal.portal_properties.navtree_properties.metaTypesNotToList)
if "Link" not in unlisted:
unlisted.append("Link")
portal.portal_properties.navtree_properties.manage_changeProperties(metaTypesNotToList=unlisted)
logger.info("Sessions link created in portal root")