Пример #1
0
def get_group_watchers(context):
    """Index people who should have context appear in their timeline."""
    if context.portal_type in (
        "Discussion Item",
        "collective.history.useraction"
    ):
        return
    watchers = []
    context = aq_inner(context)
    group = context
    #Add content's creators as watchers
    if hasattr(context, 'creators'):
        watchers.extend(context.creators)
    elif hasattr(context, 'Creators'):
        watchers.extend(context.Creators())
    #Add followers of the first content's creator as watchers
    watchers.extend(get_followers(context))
    if context.portal_type != "collective.rcse.group":
        group = get_group(context)
        if group and hasattr(group, 'creators'):
            watchers.extend(group.creators)
    #Add watchers of the group as watchers of the content
    watcherlist = component.queryAdapter(
        group, interface=IWatcherList, name="group_watchers", default=None
    )
    if watcherlist:
        watchers.extend(watcherlist.watchers)
    watchers = tuple(set(watchers))
    return watchers
Пример #2
0
    def update(self):
        if self.tools is None:
            self.tools = component.getMultiAdapter(
                (self.context, self.request), name="plone_tools")
        if self.catalog is None:
            catalogid = 'portal_requestaccess_catalog'
            self.catalog = getToolByName(self.context, catalogid)
        if self.memberid is None:
            mtool = self.tools.membership()
            member = mtool.getAuthenticatedMember()
            if member is not None:
                self.memberid = member.getId()
        if self.pstate is None:
            self.pstate = component.getMultiAdapter(
                (self.context, self.request), name="plone_portal_state")
        if self.container is None:
            portal = self.pstate.portal()
            self.container = portal.portal_requestaccess

        self.group = get_group(self.context)
        self.proxy_manager = None
        if self.group is not None:
            name = "@@proxy_group_manager"
            self.proxy_manager = self.group.unrestrictedTraverse(name)
            self.proxy_manager.update()
            self.proxy_group = self.proxy_manager.proxy
            self.group = self.proxy_manager.group
Пример #3
0
def get_group_watchers(context):
    """Index people who should have context appear in their timeline."""
    if context.portal_type in ("Discussion Item",
                               "collective.history.useraction"):
        return
    watchers = []
    context = aq_inner(context)
    group = context
    #Add content's creators as watchers
    if hasattr(context, 'creators'):
        watchers.extend(context.creators)
    elif hasattr(context, 'Creators'):
        watchers.extend(context.Creators())
    #Add followers of the first content's creator as watchers
    watchers.extend(get_followers(context))
    if context.portal_type != "collective.rcse.group":
        group = get_group(context)
        if group and hasattr(group, 'creators'):
            watchers.extend(group.creators)
    #Add watchers of the group as watchers of the content
    watcherlist = component.queryAdapter(group,
                                         interface=IWatcherList,
                                         name="group_watchers",
                                         default=None)
    if watcherlist:
        watchers.extend(watcherlist.watchers)
    watchers = tuple(set(watchers))
    return watchers
Пример #4
0
    def update(self):
        if self.tools is None:
            self.tools = component.getMultiAdapter(
                (self.context, self.request),
                name="plone_tools"
            )
        if self.catalog is None:
            catalogid = 'portal_requestaccess_catalog'
            self.catalog = getToolByName(self.context, catalogid)
        if self.memberid is None:
            mtool = self.tools.membership()
            member = mtool.getAuthenticatedMember()
            if member is not None:
                self.memberid = member.getId()
        if self.pstate is None:
            self.pstate = component.getMultiAdapter(
                (self.context, self.request),
                name="plone_portal_state"
            )
        if self.container is None:
            portal = self.pstate.portal()
            self.container = portal.portal_requestaccess

        self.group = get_group(self.context)
        self.proxy_manager = None
        if self.group is not None:
            name = "@@proxy_group_manager"
            self.proxy_manager = self.group.unrestrictedTraverse(name)
            self.proxy_manager.update()
            self.proxy_group = self.proxy_manager.proxy
            self.group = self.proxy_manager.group
Пример #5
0
 def __call__(self):
     group = get_group(self.context)
     if group is not None and group != self.context:
         url = group.absolute_url() + '/@@manage-portlets'
         self.request.response.redirect(url)
         return
     return super(ManageContextualPortlets, self).__call__()
Пример #6
0
 def __init__(self, context):
     self.what = "collective.rcse.group"
     self.where = None
     group = get_group(context)
     if group:
         portal_membership = getToolByName(context, 'portal_membership')
         if portal_membership.checkPermission('Add portal content', group):
             self.where = IUUID(group)
 def updateGroup(self):
     if self.group is None:
         self.group = get_group(self.context)
     if self.group is not None:
         if self.group_url is None:
             self.group_url = self.group.absolute_url()
         if self.group_title is None:
             self.group_title = self.group.Title()
 def updateGroup(self):
     if self.group is None:
         self.group = get_group(self.context)
     if self.group is not None:
         if self.group_url is None:
             self.group_url = self.group.absolute_url()
         if self.group_title is None:
             self.group_title = self.group.Title()
Пример #9
0
 def __init__(self, context):
     self.what = "collective.rcse.group"
     self.where = None
     group = get_group(context)
     if group:
         portal_membership = getToolByName(context, 'portal_membership')
         if portal_membership.checkPermission('Add portal content',
                                              group):
             self.where = IUUID(group)
Пример #10
0
 def group_url(self):
     group = get_group(self.context)
     if group is None:
         group_url = self.portal_state.navigation_root_url()
         if not group_url.endswith('/home'):
             group_url += '/home'
     else:
         group_url = group.absolute_url()
     return group_url
Пример #11
0
 def get_query(self):
     query = {"sort_on": "effective", "sort_limit": self.data.count}
     if self.data.ptype:
         query['portal_type'] = self.data.ptype
     group = get_group(self.context)
     if self.data.group and group:
         query['path'] = {'query' : '/'.join(group.getPhysicalPath()),
                          'depth': 1}
     return query
Пример #12
0
 def group_url(self):
     group = get_group(self.context)
     if group is None:
         group_url = self.portal_state.navigation_root_url()
         if not group_url.endswith('/home'):
             group_url += '/home'
     else:
         group_url = group.absolute_url()
     return group_url
Пример #13
0
 def get_query(self):
     query = {"sort_on": "effective", "sort_limit": self.data.count}
     if self.data.ptype:
         query['portal_type'] = self.data.ptype
     group = get_group(self.context)
     if self.data.group and group:
         query['path'] = {
             'query': '/'.join(group.getPhysicalPath()),
             'depth': 1
         }
     return query
Пример #14
0
 def get_calendar_url(context, search_base):
     portal_state = context.restrictedTraverse('plone_portal_state')
     navigation_root = portal_state.navigation_root()
     if search_base:
         base = navigation_root.restrictedTraverse(search_base.lstrip('/'))
         return '%s/event_listing' % base.absolute_url()
     else:
         group = get_group(context)
         if group is None:
             group = navigation_root
         return '%s/event_listing' % group.absolute_url()
Пример #15
0
 def get_calendar_url(context, search_base):
     portal_state = context.restrictedTraverse('plone_portal_state')
     navigation_root = portal_state.navigation_root()
     if search_base:
         base = navigation_root.restrictedTraverse(search_base.lstrip('/'))
         return '%s/event_listing' % base.absolute_url()
     else:
         group = get_group(context)
         if group is None:
             group = navigation_root
         return '%s/event_listing' % group.absolute_url()
Пример #16
0
    def update(self):
        self.membership = getToolByName(self.context, 'portal_membership')
        super(EditBar, self).update()

        #MENU
        self.menus = {}
        for menu in MENUS:
            self.menus[menu] = getUtility(
                IBrowserMenu,
                name=menu,
            ).getMenuItems(self.context, self.request)
        #remove advanced workflow action if exists
        if len(self.menus["plone_contentmenu_workflow"]):
            del self.menus["plone_contentmenu_workflow"][-1]
        self.context_state = getMultiAdapter((self.context, self.request),
                                             name=u'plone_context_state')
        self.object_actions = self.context_state.actions('object')

        try:
            adapter = queryAdapter(self.context,
                                   IStringSubstitution,
                                   'review_state_title')
            if adapter:
                self.review_state = adapter()
            else:
                self.review_state = None
        except WorkflowException:
            self.review_state = None

        self.object_uid = unicode(IUUID(self.context, u""))

        self.group = get_group(self.context)
        self.isGroup = self.context.portal_type in (
            "collective.rcse.group", "collective.rcse.proxygroup"
        )
        self.member = self.portal_state.member()

        if self.member is not None and self.group is not None:
            self.memberid = self.member.getId()
            getroles = self.group.manage_getUserRolesAndPermissions
            # TODO Remove security manage save and reset when
            #   https://github.com/zopefoundation/AccessControl/issues/4
            #   is fixed
            sm = getSecurityManager()
            self.roles = getroles(self.memberid)
            setSecurityManager(sm)
            self.isOwner = self.hasRole("Owner")
#            owner = self.group.getOwner()
#            if owner:
#                self.isOwner = self.memberid == owner.getId()
            self.isManager = self.hasRole("Manager")
            self.isSiteAdmin = self.hasRole("Site Administrator")
            self.isContributor = self.hasRole("Contributor")
Пример #17
0
 def update(self):
     if self.plone_utils is None:
         self.plone_utils = getToolByName(self.context, 'plone_utils')
     if self.use_view_action is None:
         pp = getToolByName(self.context, 'portal_properties')
         self.use_view_action = pp.site_properties.getProperty(
             'typesUseViewActionInListings', ())
     if self.group is None:
         self.group = get_group(self.context)
         name = "@@timeline_header_group"
         self.group_description = self.group.restrictedTraverse(name)()
     super(GroupTimelineView, self).update()
Пример #18
0
    def update(self):
        self.membership = getToolByName(self.context, 'portal_membership')
        super(EditBar, self).update()

        #MENU
        self.menus = {}
        for menu in MENUS:
            self.menus[menu] = getUtility(
                IBrowserMenu,
                name=menu,
            ).getMenuItems(self.context, self.request)
        #remove advanced workflow action if exists
        if len(self.menus["plone_contentmenu_workflow"]):
            del self.menus["plone_contentmenu_workflow"][-1]
        self.context_state = getMultiAdapter((self.context, self.request),
                                             name=u'plone_context_state')
        self.object_actions = self.context_state.actions('object')

        try:
            adapter = queryAdapter(self.context, IStringSubstitution,
                                   'review_state_title')
            if adapter:
                self.review_state = adapter()
            else:
                self.review_state = None
        except WorkflowException:
            self.review_state = None

        self.object_uid = unicode(IUUID(self.context, u""))

        self.group = get_group(self.context)
        self.isGroup = self.context.portal_type in (
            "collective.rcse.group", "collective.rcse.proxygroup")
        self.member = self.portal_state.member()

        if self.member is not None and self.group is not None:
            self.memberid = self.member.getId()
            getroles = self.group.manage_getUserRolesAndPermissions
            # TODO Remove security manage save and reset when
            #   https://github.com/zopefoundation/AccessControl/issues/4
            #   is fixed
            sm = getSecurityManager()
            self.roles = getroles(self.memberid)
            setSecurityManager(sm)
            self.isOwner = self.hasRole("Owner")
            #            owner = self.group.getOwner()
            #            if owner:
            #                self.isOwner = self.memberid == owner.getId()
            self.isManager = self.hasRole("Manager")
            self.isSiteAdmin = self.hasRole("Site Administrator")
            self.isContributor = self.hasRole("Contributor")
Пример #19
0
 def update(self):
     AutoExtensibleForm.update(self)
     form.Form.update(self)
     #if I can use the current group to add content set the value of where
     factory = component.queryUtility(IVocabularyFactory,
                                      "collective.rcse.vocabulary.groups")
     vocab = factory(self.context)
     group = get_group(self.context)
     if group:
         uid = IUUID(group)
         try:
             if vocab.getTerm(uid):
                 self.widgets['where'].value = uid
         except LookupError:
             pass
         self.widgets['where'].value = uid
Пример #20
0
 def update(self):
     AutoExtensibleForm.update(self)
     form.Form.update(self)
     #if I can use the current group to add content set the value of where
     factory = component.queryUtility(IVocabularyFactory,
                                      "collective.rcse.vocabulary.groups")
     vocab = factory(self.context)
     group = get_group(self.context)
     if group:
         uid = IUUID(group)
         try:
             if vocab.getTerm(uid):
                 self.widgets['where'].value = uid
         except LookupError:
             pass
         self.widgets['where'].value = uid
Пример #21
0
    def update(self):
        self.features = settings.features
        self.group = get_group(self.context)
        self.catalog = getToolByName(self.context, 'portal_catalog')
        self.path = self.context.getPhysicalPath()
        self.path_str = "/".join(self.context.getPhysicalPath())
        self.context_state = component.getMultiAdapter(
            (self.context, self.request), name=u'plone_context_state')
        self.portal_state = component.getMultiAdapter(
            (self.context, self.request), name=u'plone_portal_state')
        self.navroot = self.portal_state.navigation_root()
        self.navroot_path = self.navroot.getPhysicalPath()
        parents_ids = self.path[len(self.navroot_path):]

        #the breadcrumb let you select two levels of groups

        self.parents_info = []
        query1 = {
            "path": {
                "query": '/'.join(self.navroot_path),
                "depth": 1
            },
            "portal_type": "collective.rcse.group"
        }
        brains = self.catalog(**query1)
        parents = self.get_brain_info(brains)
        self.parents_info.append(parents)
        self.parent_url = None

        #level2.
        #FIXME: il faut voir au niveau du parents_ids.
        if len(parents_ids) > 0:  # context is in a group
            self.parent_url = self.context.aq_inner.aq_parent.absolute_url()
            # We add Back to current group in the list
            path = '/'.join(self.navroot_path + parents_ids[:1])
            query2 = {
                "path": {
                    "query": path,
                    "depth": 1
                },
                "portal_type": "collective.rcse.group"
            }
            brains = self.catalog(**query2)
            if brains:
                parents = self.get_brain_info(brains)
                self.parents_info.append(parents)
Пример #22
0
    def update(self):
        self.features = settings.features
        self.group = get_group(self.context)
        self.catalog = getToolByName(self.context, 'portal_catalog')
        self.path = self.context.getPhysicalPath()
        self.path_str = "/".join(self.context.getPhysicalPath())
        self.context_state = component.getMultiAdapter(
            (self.context, self.request),
            name=u'plone_context_state'
        )
        self.portal_state = component.getMultiAdapter(
            (self.context, self.request),
            name=u'plone_portal_state'
        )
        self.navroot = self.portal_state.navigation_root()
        self.navroot_path = self.navroot.getPhysicalPath()
        parents_ids = self.path[len(self.navroot_path):]

        #the breadcrumb let you select two levels of groups

        self.parents_info = []
        query1 = {"path": {"query": '/'.join(self.navroot_path), "depth": 1},
                  "portal_type": "collective.rcse.group"}
        brains = self.catalog(**query1)
        parents = self.get_brain_info(brains)
        self.parents_info.append(parents)
        self.parent_url = None

        #level2.
        #FIXME: il faut voir au niveau du parents_ids.
        if len(parents_ids) > 0:  # context is in a group
            self.parent_url = self.context.aq_inner.aq_parent.absolute_url()
            # We add Back to current group in the list
            path = '/'.join(self.navroot_path + parents_ids[:1])
            query2 = {"path": {"query": path, "depth": 1},
                      "portal_type": "collective.rcse.group"}
            brains = self.catalog(**query2)
            if brains:
                parents = self.get_brain_info(brains)
                self.parents_info.append(parents)
Пример #23
0
 def _doDelete(self):
     wf = self.context.restrictedTraverse('folder_publish')
     ##parameters=workflow_action=None, paths=[], comment='No comment',
     ##expiration_date=None, effective_date=None, include_children=False
     wf(workflow_action="delete",
        comment="RCSE Delete action",
        include_children=True,
        paths=['/'.join(self.context.getPhysicalPath())])
     status = IStatusMessage(self.request)
     # lets replace the message from folder_publish by ours.
     status.show()
     self.request.cookies[STATUSMESSAGEKEY] = None
     self.request.response.expireCookie(STATUSMESSAGEKEY, path='/')
     annotations = IAnnotations(self.request)
     annotations[STATUSMESSAGEKEY] = None
     status.add(_(u"Item and it's content has been deleted"))
     # avoid getting the context itself if it's a group
     group = get_group(aq_inner(self.context).__parent__)
     if group is None:
         url = getToolByName(self.context, 'portal_url')()
     else:
         url = group.absolute_url()
     self.request.response.redirect(url)
Пример #24
0
 def _doDelete(self):
     wf = self.context.restrictedTraverse('folder_publish')
     ##parameters=workflow_action=None, paths=[], comment='No comment',
     ##expiration_date=None, effective_date=None, include_children=False
     wf(workflow_action="delete",
        comment="RCSE Delete action",
        include_children=True,
        paths=['/'.join(self.context.getPhysicalPath())])
     status = IStatusMessage(self.request)
     # lets replace the message from folder_publish by ours.
     status.show()
     self.request.cookies[STATUSMESSAGEKEY] = None
     self.request.response.expireCookie(STATUSMESSAGEKEY, path='/')
     annotations = IAnnotations(self.request)
     annotations[STATUSMESSAGEKEY] = None
     status.add(_(u"Item and it's content has been deleted"))
     # avoid getting the context itself if it's a group
     group = get_group(aq_inner(self.context).__parent__)
     if group is None:
         url = getToolByName(self.context, 'portal_url')()
     else:
         url = group.absolute_url()
     self.request.response.redirect(url)