Exemple #1
0
 def memberships(self, context, segments):
     """/addresses/<email>/memberships"""
     if len(segments) != 0:
         return NotFound(), []
     if self._address is None:
         return NotFound(), []
     return AddressMemberships(self._address)
Exemple #2
0
 def member(self, context, segments, role, email):
     """Return a single member representation."""
     if self._mlist is None:
         return NotFound(), []
     member = getUtility(ISubscriptionService).find_member(
         email, self._mlist.list_id, role)
     if member is None:
         return NotFound(), []
     return AMember(member.member_id)
Exemple #3
0
 def owners(self, context, segments):
     """/domains/<domain>/owners"""
     if len(segments) == 0:
         domain = getUtility(IDomainManager).get(self._domain)
         if domain is None:
             return NotFound()
         return OwnersForDomain(domain)
     else:
         return NotFound(), []
Exemple #4
0
 def all(self, request, segments):
     """/members/<id>/all/preferences"""
     if len(segments) == 0:
         return NotFound(), []
     if self._member is None:
         return NotFound(), []
     child = ReadOnlyPreferences(
         self._member, 'members/{0}/all'.format(self._member.member_id.int))
     return child, []
Exemple #5
0
 def preferences(self, request, segments):
     """/members/<id>/preferences"""
     if len(segments) != 0:
         return NotFound(), []
     if self._member is None:
         return NotFound(), []
     child = Preferences(self._member.preferences,
                         'members/{0}'.format(self._member.member_id.int))
     return child, []
Exemple #6
0
 def preferences(self, request, segments):
     """/addresses/<email>/preferences"""
     if len(segments) != 0:
         return NotFound(), []
     if self._address is None:
         return NotFound(), []
     child = Preferences(self._address.preferences,
                         'addresses/{0}'.format(self._address.email))
     return child, []
Exemple #7
0
 def all(self, context, segments):
     """/members/<id>/all/preferences"""
     if len(segments) == 0:
         return NotFound(), []
     if self._member is None:
         return NotFound(), []
     member_id = self.api.from_uuid(self._member_id)
     child = ReadOnlyPreferences(self._member,
                                 'members/{}/all'.format(member_id))
     return child, []
Exemple #8
0
 def member(self, request, segments, role, email):
     """Return a single member representation."""
     if self._mlist is None:
         return NotFound(), []
     members = getUtility(ISubscriptionService).find_members(
         email, self._mlist.list_id, role)
     if len(members) == 0:
         return NotFound(), []
     assert len(members) == 1, 'Too many matches'
     return AMember(members[0].member_id)
Exemple #9
0
 def preferences(self, context, segments):
     """/members/<id>/preferences"""
     if len(segments) != 0:
         return NotFound(), []
     if self._member is None:
         return NotFound(), []
     member_id = self.api.from_uuid(self._member_id)
     child = Preferences(self._member.preferences,
                         'members/{}'.format(member_id))
     return child, []
Exemple #10
0
 def uris(self, content, segments):
     if self.api.version_info < (3, 1):
         return NotFound(), []
     if len(segments) == 0:
         return AllSiteURIs()
     if len(segments) > 1:
         return BadRequest(), []
     template = segments[0]
     if template not in AllSiteURIs.URIs:
         return NotFound(), []
     return ASiteURI(template), []
Exemple #11
0
    def uris(self, context, segments):
        """Return the template URIs of the mailing list.

        These are only available after API 3.0.
        """
        if self._mlist is None or self.api.version_info < (3, 1):
            return NotFound(), []
        if len(segments) == 0:
            return AllListURIs(self._mlist)
        if len(segments) > 1:
            return BadRequest(), []
        template = segments[0]
        if template not in AllListURIs.URIs:
            return NotFound(), []
        return AListURI(self._mlist, template), []
Exemple #12
0
    def uris(self, context, segments):
        """Return the template URIs of the domain.

        These are only available after API 3.0.
        """
        domain = getUtility(IDomainManager).get(self._domain)
        if domain is None or self.api.version_info < (3, 1):
            return NotFound(), []
        if len(segments) == 0:
            return AllDomainURIs(domain)
        if len(segments) > 1:
            return BadRequest(), []
        template = segments[0]
        if template not in AllDomainURIs.URIs:
            return NotFound(), []
        return ADomainURI(domain, template), []
Exemple #13
0
 def system(self, context, segments):
     """/<api>/system"""
     if len(segments) == 0:
         # This provides backward compatibility; see /system/versions.
         return Versions()
     elif segments[0] == 'preferences':
         if len(segments) > 1:
             return BadRequest(), []
         return ReadOnlyPreferences(system_preferences, 'system'), []
     elif segments[0] == 'versions':
         if len(segments) > 1:
             return BadRequest(), []
         return Versions(), []
     elif segments[0] == 'configuration':
         if len(segments) <= 2:
             return SystemConfiguration(*segments[1:]), []
         return BadRequest(), []
     elif segments[0] == 'pipelines':
         if len(segments) > 1:
             return BadRequest(), []
         return Pipelines(), []
     elif segments[0] == 'chains':
         if len(segments) > 1:
             return BadRequest(), []
         return Chains(), []
     else:
         return NotFound(), []
Exemple #14
0
 def user(self, context, segments):
     """/addresses/<email>/user"""
     if self._address is None:
         return NotFound(), []
     # Avoid circular imports.
     from mailman.rest.users import AddressUser
     return AddressUser(self._address)
Exemple #15
0
 def unverify(self, context, segments):
     """/addresses/<email>/verify"""
     if len(segments) != 0:
         return BadRequest(), []
     if self._address is None:
         return NotFound(), []
     child = _VerifyResource(self._address, 'unverify')
     return child, []
Exemple #16
0
 def lists(self, context, segments):
     """/domains/<domain>/lists"""
     if len(segments) == 0:
         domain = getUtility(IDomainManager).get(self._domain)
         if domain is None:
             return NotFound()
         return ListsForDomain(domain)
     else:
         return BadRequest(), []
 def __init__(self, plugin_name):
     self._resource = None
     if plugin_name in config.plugins:
         plugin = config.plugins[plugin_name]
         self._resource = plugin.resource
     # If the plugin doesn't exist or doesn't provide a resource, just proxy
     # to NotFound.
     if self._resource is None:
         self._resource = NotFound()
Exemple #18
0
 def preferences(self, request, segments):
     """/addresses/<email>/preferences"""
     if len(segments) != 0:
         return BadRequest(), []
     if self._user is None:
         return NotFound(), []
     child = Preferences(self._user.preferences,
                         'users/{0}'.format(self._user.user_id.int))
     return child, []
Exemple #19
0
 def preferences(self, context, segments):
     """/users/<id>/preferences"""
     if len(segments) != 0:
         return BadRequest(), []
     if self._user is None:
         return NotFound(), []
     child = Preferences(
         self._user.preferences,
         'users/{}'.format(self.api.from_uuid(self._user.user_id)))
     return child, []
Exemple #20
0
    def templates(self, context, segments):
        """/<api>/templates/<fqdn_listname>/<template>/[<language>]

        Use content negotiation to context language and suffix (content-type).
        """
        # This resource is removed in API 3.1; use the /uris resource instead.
        if self.api.version_info > (3, 0):
            return NotFound(), []
        if len(segments) == 3:
            fqdn_listname, template, language = segments
        elif len(segments) == 2:
            fqdn_listname, template = segments
            language = 'en'
        else:
            return BadRequest(), []
        mlist = getUtility(IListManager).get(fqdn_listname)
        if mlist is None:
            return NotFound(), []
        # XXX dig out content-type from context.
        content_type = None
        return TemplateFinder(fqdn_listname, template, language, content_type)
Exemple #21
0
 def plugins(self, context, segments):
     """/<api>/plugins
        /<api>/plugins/<plugin_name>
        /<api>/plugins/<plugin_name>/...
     """
     if self.api.version_info < (3, 1):
         return NotFound(), []
     if len(segments) == 0:
         return AllPlugins(), []
     else:
         plugin_name = segments.pop(0)
         return APlugin(plugin_name), segments
Exemple #22
0
    def templates(self, request, segments):
        """/<api>/templates/<fqdn_listname>/<template>/[<language>]

        Use content negotiation to request language and suffix (content-type).
        """
        if len(segments) == 3:
            fqdn_listname, template, language = segments
        elif len(segments) == 2:
            fqdn_listname, template = segments
            language = 'en'
        else:
            return BadRequest(), []
        mlist = getUtility(IListManager).get(fqdn_listname)
        if mlist is None:
            return NotFound(), []
        # XXX dig out content-type from request
        content_type = None
        return TemplateFinder(fqdn_listname, template, language, content_type)
Exemple #23
0
 def login(self, context, segments):
     """Log the user in, sort of, by verifying a given password."""
     if self._user is None:
         return NotFound(), []
     return Login(self._user)
Exemple #24
0
 def addresses(self, context, segments):
     """/users/<uid>/addresses"""
     if self._user is None:
         return NotFound(), []
     return UserAddresses(self._user)
Exemple #25
0
 def header_matches(self, context, segments):
     """Return a collection of mailing list's header matches."""
     if self._mlist is None:
         return NotFound(), []
     return HeaderMatches(self._mlist)
Exemple #26
0
 def bans(self, context, segments):
     """Return a collection of mailing list's banned addresses."""
     if self._mlist is None:
         return NotFound(), []
     return BannedEmails(self._mlist)
Exemple #27
0
 def digest(self, context, segments):
     if self._mlist is None:
         return NotFound(), []
     return ListDigest(self._mlist)
Exemple #28
0
 def archivers(self, context, segments):
     """Return a representation of mailing list archivers."""
     if self._mlist is None:
         return NotFound(), []
     return ListArchivers(self._mlist)
Exemple #29
0
 def requests(self, context, segments):
     """Return a list of subscription/unsubscription requests."""
     if self._mlist is None:
         return NotFound(), []
     return SubscriptionRequests(self._mlist)
Exemple #30
0
 def held(self, context, segments):
     """Return a list of held messages for the mailing list."""
     if self._mlist is None:
         return NotFound(), []
     return HeldMessages(self._mlist)