Ejemplo n.º 1
0
    def _data(self):
        """Returns a list of all pending subscription requests, adding the URL,
        description and title of the Section they're for.
        """
        query = {
            'object_provides': ISubscribableSection.__identifier__,
            'sort_on': 'sortable_title',
        }
        results = self.catalog.unrestrictedSearchResults(**query)
        all_requests = []
        for brain in results:
            section = brain.getObject()
            if getSecurityManager().checkPermission(permissions.ManagePortal,
                                                    section):
                manager = SubscriptionsManager(section)
                requests = manager.getRequests()
                for r in requests:
                    r['title'] = brain.Title
                    r['description'] = brain.Description
                    r['url'] = brain.getURL()
                    all_requests.append(r)

        if all_requests:
            all_requests.sort(self._compareRequestDates)

        return all_requests
Ejemplo n.º 2
0
    def data(self):
        """Return a dictionary of requests and subscriptions.

        mydict = {
            'requests': [
                {   'title': '',
                    'url': '',
                    'description': '',
                },
            ],
            'subscriptions': [
                # the same...
            ],
        }
        """

        user_id = self.mtool.getAuthenticatedMember().id
        mydict = {
            'requests': [],
            'subscriptions': [],
        }
        query = {
            'object_provides': ISubscribableSection.__identifier__,
            'sort_on': 'sortable_title',
            'full_objects': True,
        }

        # Use ZCatalog so ALL results are found, this is even more
        # unrestricted than portal_catalog.unrestrictedSearchResults
        brains = ZCatalog.searchResults(self.catalog, None, **query)
        for brain in brains:
            title = brain.Title
            url = brain.getURL()
            description = brain.Description
            relative_path = brain.getPath().split('/')[2:]

            obj = self.site.unrestrictedTraverse(relative_path)
            sm = SubscriptionsManager(obj)

            if sm.checkRequestForUser(user_id):
                mydict['requests'].append({
                    'title': title,
                    'url': url,
                    'description': description,
                })
            if sm.checkSubscriptionForUser(user_id):
                mydict['subscriptions'].append({
                    'title': title,
                    'url': url,
                    'description': description,
                })

        return mydict
Ejemplo n.º 3
0
 def __init__(self, *args, **kwargs):
     super(ManageSubscriptions, self).__init__(*args, **kwargs)
     self.manager = SubscriptionsManager(self.context)
     self.messages = IStatusMessage(self.request)
Ejemplo n.º 4
0
 def __init__(self, *args, **kwargs):
     super(RequestSubscription, self).__init__(*args, **kwargs)
     self.manager = SubscriptionsManager(self.context)