Barry Warsaw pushed to branch master at mailman / Mailman

Commits:
3bd2a292 by Barry Warsaw at 2017-05-23T12:39:39-07:00
Add self_links to the system configuration resources.

Closes #335

- - - - -
0eb24746 by Barry Warsaw at 2017-05-23T21:40:13+00:00
Merge branch 'self_links' into 'master'

Add self_links to the system configuration resources

Closes #335

See merge request !271
- - - - -


3 changed files:

- src/mailman/rest/docs/systemconf.rst
- src/mailman/rest/root.py
- src/mailman/rest/tests/test_systemconf.py


Changes:

=====================================
src/mailman/rest/docs/systemconf.rst
=====================================
--- a/src/mailman/rest/docs/systemconf.rst
+++ b/src/mailman/rest/docs/systemconf.rst
@@ -8,6 +8,7 @@ get a list of all defined sections.
     >>> dump_json('http://localhost:9001/3.0/system/configuration')
     http_etag: ...
     sections: ['antispam', 'archiver.mail_archive', 'archiver.master', ...
+    self_link: http://localhost:9001/3.0/system/configuration
 
 You can also get all the values for a particular section, such as the
 ``[mailman]`` section...
@@ -25,6 +26,7 @@ You can also get all the values for a particular section, 
such as the
     pending_request_life: 3d
     post_hook:
     pre_hook:
+    self_link: http://localhost:9001/3.0/system/configuration/mailman
     sender_headers: from from_ reply-to sender
     site_owner: nore...@example.com
 
@@ -36,6 +38,7 @@ You can also get all the values for a particular section, 
such as the
     org_domain_data_url: https://publicsuffix.org/list/public_suffix_list.dat
     resolver_lifetime: 5s
     resolver_timeout: 3s
+    self_link: http://localhost:9001/3.0/system/configuration/dmarc
 
 Dotted section names work too, for example, to get the French language
 settings section.
@@ -45,3 +48,4 @@ settings section.
     description: French
     enabled: yes
     http_etag: ...
+    self_link: http://localhost:9001/3.0/system/configuration/language.fr


=====================================
src/mailman/rest/root.py
=====================================
--- a/src/mailman/rest/root.py
+++ b/src/mailman/rest/root.py
@@ -89,7 +89,9 @@ class SystemConfiguration:
     def on_get(self, request, response):
         if self._section is None:
             resource = dict(
-                sections=sorted(section.name for section in config))
+                sections=sorted(section.name for section in config),
+                self_link=self.api.path_to('system/configuration'),
+                )
             okay(response, etag(resource))
             return
         missing = object()
@@ -100,6 +102,14 @@ class SystemConfiguration:
         # Sections don't have .keys(), .values(), or .items() but we can
         # iterate over them.
         resource = {key: section[key] for key in section}
+        # Add a `self_link` attribute to the resource.  This is a little ugly
+        # because technically speaking we're mixing namespaces.  We can't have
+        # a variable named `self_link` in any section, but also we can't have
+        # `http_etag` either, so unless we want to shove all these values into
+        # a sub dictionary (which we don't), we have to live with it.
+        self_link = self.api.path_to(
+            'system/configuration/{}'.format(section.name))
+        resource['self_link'] = self_link
         okay(response, etag(resource))
 
 


=====================================
src/mailman/rest/tests/test_systemconf.py
=====================================
--- a/src/mailman/rest/tests/test_systemconf.py
+++ b/src/mailman/rest/tests/test_systemconf.py
@@ -48,6 +48,7 @@ class TestSystemConfiguration(unittest.TestCase):
             pending_request_life='3d',
             post_hook='',
             pre_hook='',
+            self_link='http://localhost:9001/3.0/system/configuration/mailman',
             sender_headers='from from_ reply-to sender',
             site_owner='nore...@example.com',
             ))
@@ -65,6 +66,7 @@ class TestSystemConfiguration(unittest.TestCase):
                 'https://publicsuffix.org/list/public_suffix_list.dat',
             resolver_lifetime='5s',
             resolver_timeout='3s',
+            self_link='http://localhost:9001/3.0/system/configuration/dmarc',
             ))
 
     def test_dotted_section(self):
@@ -78,6 +80,8 @@ class TestSystemConfiguration(unittest.TestCase):
             description='French',
             charset='iso-8859-1',
             enabled='yes',
+            self_link=('http://localhost:9001/3.0/system'
+                       '/configuration/language.fr'),
             ))
 
     def test_multiline(self):



View it on GitLab: 
https://gitlab.com/mailman/mailman/compare/f690f98ba1ebd8fafadc9a90fe4064ac31cdccc1...0eb24746c61a5fd944adb2b82681e4df6a039de1

---
View it on GitLab: 
https://gitlab.com/mailman/mailman/compare/f690f98ba1ebd8fafadc9a90fe4064ac31cdccc1...0eb24746c61a5fd944adb2b82681e4df6a039de1
You're receiving this email because of your account on gitlab.com.
_______________________________________________
Mailman-checkins mailing list
Mailman-checkins@python.org
Unsubscribe: 
https://mail.python.org/mailman/options/mailman-checkins/archive%40jab.org

Reply via email to