def make_digest_subscriber(self, subscriber):
     if is_email(subscriber):
         user_id = lookup_member_id(subscriber, self.context)
         if user_id:
             # submitted email address, is connected to a user
             if user_id not in self.members:
                 raise ValueError('%s (username: %s) is not a subscriber'
                                  % (subscriber, user_id))
             if subscriber in self.digest_emails:
                 # clean up lingering email digest sub
                 del(self.digest_emails[subscriber])
             if user_id not in self.digest_members:
                 self.digest_members[user_id] = None
         else:
             # submitted email address, no connected user
             if subscriber not in self.emails:
                 raise ValueError('%s is not a subscriber' % subscriber)
             if subscriber not in self.digest_emails:
                 self.digest_emails[subscriber] = None
     else:
         # submitted user id
         email = lookup_email(subscriber, self.context)
         if subscriber not in self.members:
             raise ValueError('%s is not a subscriber' % subscriber)
         if email in self.digest_emails:
             # clean up lingering email digest sub
             del(self.digest_emails[email])
         if subscriber not in self.digest_members:
             self.digest_members[subscriber] = None
 def remove_allowed_sender(self, allowed_sender, send_notify=True):
     was_subscribed = False
     if is_email(allowed_sender):
         user_id = lookup_member_id(allowed_sender, self.context)
         if user_id:
             if user_id in self.members:
                 record = self.members.pop(user_id)
                 if record.get("subscriber") == True:
                     was_subscribed = True
         if allowed_sender in self.emails:
             record = self.emails.pop(allowed_sender)
             if record.get("subscriber") == True:
                 was_subscribed = True
     else:
         email = lookup_email(allowed_sender, self.context)
         if email in self.emails:
             record = self.email.pop(email)
             if record.get("subscriber") == True:
                 was_subscribed = True
         if allowed_sender in self.members:
             record = self.members.pop(allowed_sender)
             if record.get("subscriber") == True:
                 was_subscribed = True
     if send_notify:
         if was_subscribed:
             self._notify_removed_subscriber(allowed_sender)
         self._notify_removed_allowed_sender(allowed_sender)
def getAddressInfo(obj, subscription_manager):
    if subscription_manager is not None:
        from_name, from_addr = parseaddr(obj.from_addr)
        user = lookup_member_id(from_addr, obj)
        if user is not None:
            return user, obj.from_addr
    return None, obj.from_addr
    def export_subscribers(self, include_allowed_senders=False):
        """ Returns CSV string of subscriber data """
        ml = IMembershipList(self.context)
        cat = getToolByName(self.context, 'portal_catalog')
        md = getToolByName(self.context, 'portal_memberdata')
        md_path = '/'.join(md.getPhysicalPath())
        file_data = []
            
        for email in ml.subscribers:
            memid = lookup_member_id(email, self.context)
            if memid:
                metadata = cat.getMetadataForUID('%s/%s' % (md_path, memid))
                # title gives the user's full name. It might be a good idea
                # to get the full object so we can directly access the full
                # name, but that'd be more expensive...
                title = metadata['Title']
            else: # e-mail only subscriber 
                memid = title = ""
            file_data.append(','.join([
                        memid, title, email, 'subscribed']))

        if include_allowed_senders:
            for email, info in ml.allowed_senders_data.items():
                if info['subscriber']:
                    continue
                file_data.append(','.join([
                            '', '', email, 'allowed']))

        return "\n".join(file_data)
 def unmake_digest_subscriber(self, subscriber):
     if is_email(subscriber):
         user_id = lookup_member_id(subscriber, self.context)
         if user_id:
             # submitted email, but has user; check and clear both
             # digest_members and digest_emails to be safe
             if (user_id not in self.digest_members and
                 subscriber not in self.digest_emails):
                 raise ValueError('%s (username: %s) is not a digest'
                                  ' subscriber' % (subscriber, user_id))
             if user_id in self.digest_members:
                 del(self.digest_members[user_id])
             if subscriber in self.digest_emails:
                 del(self.digest_emails[subscriber])
         else:
             # submitted email, no user
             if subscriber not in self.digest_emails:
                 raise ValueError('%s is not a digest subscriber'
                                  % subscriber)
             del(self.digest_emails[subscriber])
     else:
         # submitted user id; check and clear both digest_members
         # and digest_emails to be safe
         email = lookup_email(subscriber, self.context)
         if (subscriber not in self.digest_members and
             email not in self.digest_emails):
             raise ValueError('%s is not a digest subscriber'
                              % subscriber)
         if subscriber in self.digest_members:
             del(self.digest_members[subscriber])
         if email in self.digest_emails:
             del(self.digest_emails[email])
def getAddressInfo(obj, subscription_manager):
    if subscription_manager is not None:
        from_name, from_addr = parseaddr(obj.from_addr)
        user = lookup_member_id(from_addr, obj)
        if user is not None:
            return user, obj.from_addr
    return None, obj.from_addr
 def is_digest_subscriber(self, subscriber):
     if is_email(subscriber):
         user_id = lookup_member_id(subscriber, self.context)
         if user_id:
             return (user_id in self.digest_members or
                     subscriber in self.digest_emails)
         return subscriber in self.digest_emails
     email = lookup_email(subscriber, self.context)
     return (subscriber in self.digest_members or
             email in self.digest_emails)
 def is_allowed_sender(self, allowed_sender):
     if is_email(allowed_sender):
         user_id = lookup_member_id(allowed_sender, self.context)
         if user_id:
             return user_id in self.members or allowed_sender in self.emails
         else:
             return allowed_sender in self.emails
     else:
         email = lookup_email(allowed_sender, self.context)
         return allowed_sender in self.members or email in self.emails
 def is_subscribed(self, subscriber):
     if is_email(subscriber):
         user_id = lookup_member_id(subscriber, self.context)
         if user_id:
             return self.members.get(user_id, {}).get('subscriber', False) or self.emails.get(subscriber, {}).get('subscriber', False)
         else:
             return self.emails.get(subscriber, {}).get('subscriber', False)
     else:
         email = lookup_email(subscriber, self.context)
         return self.members.get(subscriber, {}).get('subscriber', False) or self.emails.get(email, {}).get('subscriber', False)
 def subscribe(self, subscriber):
     if is_email(subscriber):
         user_id = lookup_member_id(subscriber, self.context)
         if user_id:
             self._add_member(user_id)
         else:
             if subscriber not in self.emails:
                 self.emails[subscriber] = OOBTree()
     else:
         self._add_member(subscriber)
 def is_subscribed(self, subscriber):
     if is_email(subscriber):
         user_id = lookup_member_id(subscriber, self.context)
         if user_id:
             return user_id in self.members or subscriber in self.emails
         else:
             return subscriber in self.emails
     else:
         email = lookup_email(subscriber, self.context)
         return subscriber in self.members or email in self.emails
 def add_allowed_sender(self, allowed_sender, send_notify=True):
     if is_email(allowed_sender):
         user_id = lookup_member_id(allowed_sender, self.context)
         if user_id:
             self._add_member(user_id, send_notify)
         else:
             if allowed_sender not in self.emails:
                 self.emails[allowed_sender] = {'subscriber':False}
                 if send_notify:
                     self._notify_added_a_s(allowed_sender)
     else:
         self._add_member(allowed_sender, send_notify)
 def unsubscribe(self, subscriber, send_notify=True):
     if is_email(subscriber):
         user_id = lookup_member_id(subscriber, self.context)
         if user_id:
             if user_id in self.members:
                 self.members[user_id] = {'subscriber':False}
         if subscriber in self.emails:
             self.emails[subscriber] = {'subscriber':False}
     else:
         if subscriber in self.members:
             self.members[subscriber] = {'subscriber':False}
     if send_notify:
         self._notify_removed_subscriber(subscriber)
 def unsubscribe(self, subscriber):
     if is_email(subscriber):
         user_id = lookup_member_id(subscriber, self.context)
         if user_id:
             if user_id in self.members:
                 self.members.pop(user_id)
         if subscriber in self.emails:
             self.emails.pop(subscriber)
     else:
         email = lookup_email(subscriber, self.context)
         if email in self.emails:
             self.email.pop(email)
         if subscriber in self.members:
             self.members.pop(subscriber)
    def enforce(self, request):
        action = request.get('action')
        user = request.get('email')
        if action is None or user is None: 
            return MEMBERSHIP_ERROR

        user_email = is_email(user) and user or lookup_email(user, self.context)
        user_name = is_email(user) and lookup_member_id(user, self.context) or user

        if action == 'add_allowed_sender':
            self.a_s_mod_pending_list.add(user)
        elif action == 'subscribe':
            if self.mem_list.is_allowed_sender(user):
                return MEMBERSHIP_ALLOWED
            self.sub_mod_pending_list.add(user, user_name=user_name)
        else:
            return MEMBERSHIP_DENIED           

        self.mail_sender.manager_mod(user_email, user_name)
        return MEMBERSHIP_DEFERRED
 def subscribe(self, subscriber, send_notify=True):
     if is_email(subscriber):
         user_id = lookup_member_id(subscriber, self.context)
         if user_id:
             if user_id not in self.members and send_notify:
                 self._notify_added_a_s(user_id)
             self.members[user_id] = {'subscriber':True}
             if subscriber in self.emails:
                 self.emails.pop(subscriber)
         else:
             if subscriber not in self.emails and send_notify:
                 self._notify_added_a_s(subscriber)
             self.emails[subscriber] = {'subscriber':True}
     else:
         if subscriber not in self.members and send_notify:
             self._notify_added_a_s(subscriber)
         self.members[subscriber] = {'subscriber':True}
         email = lookup_email(subscriber, self.context)
         if email in self.emails:
             self.emails.pop(email)
     if send_notify:
         self._notify_added_subscriber(subscriber)
Пример #17
0
    def enforce(self, request):
        action = request.get('action')
        user = request.get('email')
        if action is None or user is None:
            return MEMBERSHIP_ERROR

        user_email = is_email(user) and user or lookup_email(
            user, self.context)
        user_name = is_email(user) and lookup_member_id(user,
                                                        self.context) or user

        if action == 'add_allowed_sender':
            self.a_s_mod_pending_list.add(user)
        elif action == 'subscribe':
            if self.mem_list.is_allowed_sender(user):
                return MEMBERSHIP_ALLOWED
            self.sub_mod_pending_list.add(user, user_name=user_name)
        else:
            return MEMBERSHIP_DENIED

        self.mail_sender.manager_mod(user_email, user_name)
        return MEMBERSHIP_DEFERRED