------------------------------------------------------------
revno: 6716
committer: Barry Warsaw <[email protected]>
branch nick: restful
timestamp: Wed 2009-04-01 19:02:49 -0500
message:
  Checkpointing more REST stuff
added:
  src/mailman/interfaces/rest.py
  src/mailman/rest/
  src/mailman/rest/__init__.py
  src/mailman/rest/root.py
  src/mailman/rest/traverse.py

=== added file 'src/mailman/interfaces/rest.py'
--- src/mailman/interfaces/rest.py      1970-01-01 00:00:00 +0000
+++ src/mailman/interfaces/rest.py      2009-04-02 00:02:49 +0000
@@ -0,0 +1,36 @@
+# Copyright (C) 2009 by the Free Software Foundation, Inc.
+#
+# This file is part of GNU Mailman.
+#
+# GNU Mailman is free software: you can redistribute it and/or modify it under
+# the terms of the GNU General Public License as published by the Free
+# Software Foundation, either version 3 of the License, or (at your option)
+# any later version.
+#
+# GNU Mailman is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+# more details.
+#
+# You should have received a copy of the GNU General Public License along with
+# GNU Mailman.  If not, see <http://www.gnu.org/licenses/>.
+
+"""Interfaces for the RESTful admin server."""
+
+from __future__ import absolute_import, unicode_literals
+
+__metaclass__ = type
+__all__ = [
+    'IHasGet',
+    ]
+
+
+from zope.interface import Interface
+
+
+
+class IHasGet(Interface):
+    """A marker interface objects that implement traversal with get()."""
+
+    def get(name):
+        """Traverse to a contained object."""

=== added directory 'src/mailman/rest'
=== added file 'src/mailman/rest/__init__.py'
=== added file 'src/mailman/rest/root.py'
--- src/mailman/rest/root.py    1970-01-01 00:00:00 +0000
+++ src/mailman/rest/root.py    2009-04-02 00:02:49 +0000
@@ -0,0 +1,46 @@
+# Copyright (C) 2009 by the Free Software Foundation, Inc.
+#
+# This file is part of GNU Mailman.
+#
+# GNU Mailman is free software: you can redistribute it and/or modify it under
+# the terms of the GNU General Public License as published by the Free
+# Software Foundation, either version 3 of the License, or (at your option)
+# any later version.
+#
+# GNU Mailman is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+# more details.
+#
+# You should have received a copy of the GNU General Public License along with
+# GNU Mailman.  If not, see <http://www.gnu.org/licenses/>.
+
+"""The RESTful service root."""
+
+from __future__ import absolute_import, unicode_literals
+
+__metaclass__ = type
+__all__ = [
+    'AdminServiceRootResource',
+    ]
+
+
+from lazr.restful import ServiceRootResource
+from zope.interface import implements
+
+from mailman.core.system import system
+from mailman.interfaces.rest import IHasGet
+
+
+
+class AdminServiceRootResource(ServiceRootResource):
+    """The root of the Mailman RESTful admin web service."""
+
+    implements(IHasGet)
+
+    def get(self, name):
+        """See `IHasGet`."""
+        top_level = {
+            'sys': system,
+            }
+        return top_level.get(name)

=== added file 'src/mailman/rest/traverse.py'
--- src/mailman/rest/traverse.py        1970-01-01 00:00:00 +0000
+++ src/mailman/rest/traverse.py        2009-04-02 00:02:49 +0000
@@ -0,0 +1,52 @@
+# Copyright (C) 2009 by the Free Software Foundation, Inc.
+#
+# This file is part of GNU Mailman.
+#
+# GNU Mailman is free software: you can redistribute it and/or modify it under
+# the terms of the GNU General Public License as published by the Free
+# Software Foundation, either version 3 of the License, or (at your option)
+# any later version.
+#
+# GNU Mailman is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+# more details.
+#
+# You should have received a copy of the GNU General Public License along with
+# GNU Mailman.  If not, see <http://www.gnu.org/licenses/>.
+
+"""Traversal rules for the Mailman RESTful admin web service."""
+
+from __future__ import absolute_import, unicode_literals
+
+__metaclass__ = type
+__all__ = [
+    'Traverse',
+    ]
+
+
+from urllib import unquote
+
+from zope.component import adapts
+from zope.interface import implements
+from zope.publisher.interfaces import IPublishTraverse, NotFound
+from zope.publisher.interfaces.browser import IDefaultBrowserLayer
+
+
+
+class Traverse:
+    """An implementation of `IPublishTraverse` that uses the get() method."""
+
+    implements(IPublishTraverse)
+    adapts(IHasGet, IDefaultBrowserLayer)
+
+    def __init__(self, context, request):
+        self.context = context
+
+    def publishTraverse(self, request, name):
+        """See `IPublishTraverse`."""
+        name = unquote(name)
+        value = self.context.get(name)
+        if value is None:
+            raise NotFound(self, name)
+        return value



--
Primary development focus
https://code.launchpad.net/~mailman-coders/mailman/3.0

Your team Mailman Checkins is subscribed to branch lp:mailman.
To unsubscribe from this branch go to 
https://code.launchpad.net/~mailman-coders/mailman/3.0/+edit-subscription.
_______________________________________________
Mailman-checkins mailing list
[email protected]
Unsubscribe: 
http://mail.python.org/mailman/options/mailman-checkins/archive%40jab.org

Reply via email to