summaryrefslogtreecommitdiff
path: root/src/mailman/rest/root.py
diff options
context:
space:
mode:
authorBarry Warsaw2012-03-03 13:40:16 -0500
committerBarry Warsaw2012-03-03 13:40:16 -0500
commite09c13199c2a60724ee601902a51a816e627e024 (patch)
treea203d3fd90e90ba4bb94e140a2f26e1b3b6f1827 /src/mailman/rest/root.py
parent07aa6808fbc5288592c5a41c658882ad37756fca (diff)
downloadmailman-e09c13199c2a60724ee601902a51a816e627e024.tar.gz
mailman-e09c13199c2a60724ee601902a51a816e627e024.tar.zst
mailman-e09c13199c2a60724ee601902a51a816e627e024.zip
Diffstat (limited to 'src/mailman/rest/root.py')
-rw-r--r--src/mailman/rest/root.py24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/mailman/rest/root.py b/src/mailman/rest/root.py
index 794d7510f..8c1a31cf2 100644
--- a/src/mailman/rest/root.py
+++ b/src/mailman/rest/root.py
@@ -27,16 +27,19 @@ __all__ = [
from base64 import b64decode
from restish import guard, http, resource
+from zope.component import getUtility
from mailman.config import config
from mailman.core.constants import system_preferences
from mailman.core.system import system
+from mailman.interfaces.listmanager import IListManager
from mailman.rest.addresses import AllAddresses, AnAddress
from mailman.rest.domains import ADomain, AllDomains
from mailman.rest.helpers import etag, path_to
from mailman.rest.lists import AList, AllLists
from mailman.rest.members import AMember, AllMembers, FindMembers
from mailman.rest.preferences import ReadOnlyPreferences
+from mailman.rest.templates import TemplateFinder
from mailman.rest.users import AUser, AllUsers
@@ -144,3 +147,24 @@ class TopLevel(resource.Resource):
else:
user_id = segments.pop(0)
return AUser(user_id), segments
+
+ @resource.child()
+ 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 http.bad_request()
+ mlist = getUtility(IListManager).get(fqdn_listname)
+ if mlist is None:
+ return http.not_found()
+ # XXX dig out content-type from request
+ content_type = None
+ return TemplateFinder(
+ fqdn_listname, template, language, content_type)