~rashi007/mailman/docsfix

« back to all changes in this revision

Viewing changes to src/mailman/rest/root.py

  • Committer: Barry Warsaw
  • Date: 2015-02-13 08:13:06 UTC
  • Revision ID: barry@list.org-20150213081306-1b567rjfxqw45ti6
 * A new API is provided to support non-production testing infrastructures,
   allowing a client to cull all orphaned UIDs via ``DELETE`` on
   ``<api>/reserved/uids/orphans``.  Note that *no guarantees* of API
   stability will ever be made for resources under ``reserved``.
   (LP: #1420083)

Also:

- Allow @dbconnection methods to be @staticmethods taking only one argument,
  the store to perform the query on.

Show diffs side-by-side

added added

removed removed

Lines of Context:
29
29
from mailman.core.constants import system_preferences
30
30
from mailman.core.system import system
31
31
from mailman.interfaces.listmanager import IListManager
 
32
from mailman.model.uid import UID
32
33
from mailman.rest.addresses import AllAddresses, AnAddress
33
34
from mailman.rest.domains import ADomain, AllDomains
34
35
from mailman.rest.helpers import (
35
 
    BadRequest, NotFound, child, etag, not_found, okay, path_to)
 
36
    BadRequest, NotFound, child, etag, no_content, not_found, okay, path_to)
36
37
from mailman.rest.lists import AList, AllLists, Styles
37
38
from mailman.rest.members import AMember, AllMembers, FindMembers
38
39
from mailman.rest.preferences import ReadOnlyPreferences
42
43
from zope.component import getUtility
43
44
 
44
45
 
 
46
SLASH = '/'
 
47
 
 
48
 
45
49
 
46
50
class Root:
47
51
    """The RESTful root resource.
110
114
        okay(response, etag(resource))
111
115
 
112
116
 
 
117
class Reserved:
 
118
    """Top level API for reserved operations.
 
119
 
 
120
    Nothing under this resource should be considered part of the stable API.
 
121
    The resources that appear here are purely for the support of external
 
122
    non-production systems, such as testing infrastructures for cooperating
 
123
    components.  Use at your own risk.
 
124
    """
 
125
    def __init__(self, segments):
 
126
        self._resource_path = SLASH.join(segments)
 
127
 
 
128
    def on_delete(self, request, response):
 
129
        if self._resource_path != 'uids/orphans':
 
130
            not_found(response)
 
131
            return
 
132
        UID.cull_orphans()
 
133
        no_content(response)
 
134
 
 
135
 
113
136
class TopLevel:
114
137
    """Top level collections and entries."""
115
138
 
226
249
            return AQueueFile(segments[0], segments[1]), []
227
250
        else:
228
251
            return BadRequest(), []
 
252
 
 
253
    @child()
 
254
    def reserved(self, request, segments):
 
255
        """/<api>/reserved/[...]"""
 
256
        return Reserved(segments), []