def publishTraverse(self, request, name):
        if getUtility(IPortalRegistration).authorizePrincipal(name):
            self.authorized = True
            IStatusMessage(request).add(_("Authorization completed."))
        else:
            IStatusMessage(request).add(
                _("Authorization code is invalid."), 'warning')

        return self
 def selectButtonHandler(self, action):
     data, errors = self.extractData()
     if not data['principal']:
         IStatusMessage(self.request).add(
             _('Please select user.'), 'warning')
     else:
         self.notification.subscribe(data['principal'])
         IStatusMessage(self.request).add(_('User has been subscribed.'))
         self.redirect('.')
    def authorize(self, action):
        data, errors = self.extractData()

        if errors:
            IStatusMessage(self.request).add(self.formErrorsMessage, 'error')
        else:
            if getUtility(IPortalRegistration).authorizePrincipal(data['code']):
                self.redirect(
                    u'%s/login.html'%absoluteURL(getSite(), self.request))
                IStatusMessage(self.request).add(_("Authorization completed."))
            else:
                IStatusMessage(self.request).add(
                    _("Authorization code is invalid."), 'warning')
    def update(self):
        request = self.request
        context = self.context

        auth = getUtility(IAuthentication)

        if 'form.button.authorize' in request:
            for authcode in request.get('authcodes', ()):
                context.authorizePrincipal(authcode)

            IStatusMessage(request).add(
                _('Principals have been authorized.'))

        elif 'form.button.resend' in request:
            for authcode in request.get('authcodes', ()):
                try:
                    principal = auth.getPrincipal(
                        context.principalByAuthcode(authcode))
                except PrincipalLookupError:
                    continue

                email = IMailAddress(principal, None)
                if email is not None:
                    template = getMultiAdapter(
                        (principal, authcode, request),
                        IMailAuthorizationTemplate)
                    template.send(
                        (formataddr((principal.title, email.address)),))

            IStatusMessage(request).add(
                _('Authorization information has been sent.'))

        principals = []
        for pid, authcode in context.listAuthorizations():
            try:
                principals.append(
                    {'pid': pid,
                     'title': auth.getPrincipal(pid).title,
                     'authcode': authcode})
            except:
                principals.append(
                    {'pid': pid,
                     'title': pid,
                     'authcode': authcode})

        self.principals = principals

        super(Authorizations, self).update()
    def update(self):
        self.notification = RegistrationNotification(getSite())

        super(NotificationsForm, self).update()

        request = self.request

        if 'form.unsubscribe' in request:
            principals = request.get('form.principals', ())
            for pid in principals:
                self.notification.unsubscribe(pid)

            if principals:
                IStatusMessage(request).add(
                    _('Selected users have been unsubscribed.'))

        principals = []
        auth = getUtility(IAuthentication)

        for pid in self.notification.getSubscribers(getSite()):
            try:
                principal = auth.getPrincipal(pid)
            except PrincipalLookupError:
                continue

            profile = IPersonalProfile(principal)
            principals.append(
                (profile.title, {'id': pid, 'title': profile.title}))

        principals.sort()
        self.principals = [info for _t, info in principals]
    def authorize(self, action):
        data, errors = self.extractData()

        if errors:
            IStatusMessage(self.request).add(self.formErrorsMessage, 'error')
        else:
            principal = getPrincipalByLogin(data['login'])
            if principal is None:
                IStatusMessage(self.request).add(
                    _("Can't find user with this login."), 'warning')
            else:
                authcode = getUtility(
                    IPortalRegistration).authcodeForPrincipal(principal.id)
                if authcode is not None:
                    email = IMailAddress(principal, None)
                    if email is not None:
                        template = getMultiAdapter(
                            (principal, authcode, self.request),
                            IMailAuthorizationTemplate)
                        template.send(
                            (formataddr((principal.title, email.address)),))

                IStatusMessage(self.request).add(
                    _("Authorization has been sent."))