Source code for ploneintranet.workspace.browser.viewlets
from collective.workspace.interfaces import IWorkspace
from plone import api
from plone.app.layout.viewlets import ViewletBase
from ploneintranet.workspace.policies import PARTICIPANT_POLICY
[docs]class JoinViewlet(ViewletBase):
""" Allows users to join a self-joining workspace """
[docs] def in_workspace(self):
"""
Are we currently in a workspace?
"""
return hasattr(self.context, "acquire_workspace")
[docs] def visible(self):
"""
Join viewlet is shown if:
* In a 'self-join' workspace
* User is not already a member
"""
if not self.in_workspace():
return False
if not self.context.join_policy == "self":
return False
user = api.user.get_current()
workspace = IWorkspace(self.context.acquire_workspace())
if user.getId() in workspace.members:
return False
return True
[docs] def join_url(self):
"""
Get url of the join action
"""
workspace = self.context.acquire_workspace()
return "%s/%s" % (workspace.absolute_url(), "joinme")
[docs]class SharingViewlet(ViewletBase):
"""
Provides information about the default policy when viewing
the sharing tab on a workspace.
"""
[docs] def visible(self):
"""
Only shown on the sharing view
"""
context_state = api.content.get_view(
context=self.context, request=self.request, name="plone_context_state"
)
url = context_state.current_base_url()
return url.endswith("@@sharing")
[docs] def active_participant_policy(self):
""" Get the title of the current participation policy """
key = self.context.participant_policy
policy = PARTICIPANT_POLICY.get(key)
return policy["title"]