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
    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.º 3
0
class ManageSubscriptions(BrowserView):
    """View and manage requests and subscriptions.
    """
    def __init__(self, *args, **kwargs):
        super(ManageSubscriptions, self).__init__(*args, **kwargs)
        self.manager = SubscriptionsManager(self.context)
        self.messages = IStatusMessage(self.request)

    def requests(self):
        return self.manager.getRequests()

    def subscriptions(self):
        return self.manager.getSubscriptions()

    def table_data(self):
        """Used to generate the form and parse it.
        """
        tables = {
            'requests': {
                'button_name':
                'form.button.requests',
                'columns': [
                    {
                        'id': 'approve',
                        'name': _(u'Approve request')
                    },
                    {
                        'id': 'remove',
                        'name': _(u'Remove request')
                    },
                ],
            },
            'subscriptions': {
                'button_name': 'form.button.subscriptions',
                'columns': [
                    {
                        'id': 'remove',
                        'name': _(u'Remove subscription')
                    },
                ],
            },
        }
        return tables

    def processForm(self):
        form = self.request.form
        table_data = self.table_data()
        # check for submitted form: button name should match the one in table
        # data
        button_names = [ table_data[key]['button_name'] for key in \
                                                                table_data.keys() ]
        if len(set(form.keys()) & set(button_names)) > 0:
            # process requests
            if form.has_key(table_data['requests']['button_name']):
                # approve subscription requests
                for user_id in form.get('users.id.approve', []):
                    message = self.manager.confirmSubscription(user_id)
                    addStatus(self.request, message)
                # remove subscription requests
                for user_id in form.get('users.id.remove', []):
                    message = self.manager.removeRequest(user_id)
                    addStatus(self.request, message)
            if form.has_key(table_data['subscriptions']['button_name']):
                # remove subscriptions
                for user_id in form.get('users.id.remove', []):
                    message = self.manager.removeSubscription(user_id)
                    addStatus(self.request, message)
            # redirect in order to show status message
            self.request.RESPONSE.redirect(self.request.URL)
        else:
            # no form submitted, do nothing
            pass
class ManageSubscriptions(BrowserView):
    """View and manage requests and subscriptions.
    """
        
    def __init__(self, *args, **kwargs):
        super(ManageSubscriptions, self).__init__(*args, **kwargs)
        self.manager = SubscriptionsManager(self.context)
        self.messages = IStatusMessage(self.request)

    def requests(self):
        return self.manager.getRequests()

    def subscriptions(self):
        return self.manager.getSubscriptions()

    def table_data(self):
        """Used to generate the form and parse it.
        """
        tables = {  
            'requests': {
                'button_name': 'form.button.requests', 
                'columns': [
                    {   'id': 'approve', 
                        'name': _(u'Approve request')},
                    {   'id': 'remove', 
                        'name': _(u'Remove request')},
                    ],
                },
            'subscriptions': {
                'button_name': 'form.button.subscriptions', 
                'columns': [
                    {   'id': 'remove', 
                        'name': _(u'Remove subscription')},
                ],
            },
        }
        return tables

    def processForm(self):
        form = self.request.form
        table_data = self.table_data()
        # check for submitted form: button name should match the one in table 
        # data
        button_names = [ table_data[key]['button_name'] for key in \
                                                                table_data.keys() ]
        if len(set(form.keys()) & set(button_names)) > 0:
            # process requests
            if form.has_key(table_data['requests']['button_name']):
                # approve subscription requests
                for user_id in form.get('users.id.approve', []):
                    message = self.manager.confirmSubscription(user_id)
                    addStatus(self.request, message)
                # remove subscription requests
                for user_id in form.get('users.id.remove', []):
                    message = self.manager.removeRequest(user_id)
                    addStatus(self.request, message)
            if form.has_key(table_data['subscriptions']['button_name']):
                # remove subscriptions
                for user_id in form.get('users.id.remove', []):
                    message = self.manager.removeSubscription(user_id)
                    addStatus(self.request, message)
            # redirect in order to show status message
            self.request.RESPONSE.redirect(self.request.URL)
        else:
            # no form submitted, do nothing
            pass