From ce1acbe47e159f0b8e87d3957e306cfc4e9bd342 Mon Sep 17 00:00:00 2001 From: David Glick Date: Thu, 17 Oct 2024 12:46:39 -0700 Subject: [PATCH 1/2] Add a way to check for backend support of version-dependent features via the site service --- src/plone/restapi/services/site/get.py | 11 +++++++++++ src/plone/restapi/tests/http-examples/site_get.resp | 3 +++ 2 files changed, 14 insertions(+) diff --git a/src/plone/restapi/services/site/get.py b/src/plone/restapi/services/site/get.py index 43840a8b8..c4d9cd662 100644 --- a/src/plone/restapi/services/site/get.py +++ b/src/plone/restapi/services/site/get.py @@ -10,6 +10,7 @@ from Products.CMFPlone.interfaces import IImagingSchema from Products.CMFPlone.interfaces import ISiteSchema from Products.CMFPlone.utils import getSiteLogo +from Products.CMFPlone.controlpanel.browser.redirects import RedirectionSet from zope.component import adapter from zope.component import getMultiAdapter from zope.component import getUtility @@ -49,6 +50,7 @@ def __call__(self, expand=False): "plone.default_language": language_settings.default_language, "plone.available_languages": language_settings.available_languages, "plone.portal_timezone": self.plone_timezone(), + "features": self.features(), } ) @@ -73,6 +75,15 @@ def plone_timezone(self): return portal_timezone + def features(self): + """Indicates which features are supported by this site. + + This can be used by a client to check for version-dependent features. + """ + result = { + "filter_aliases_by_date": hasattr(RedirectionSet, "supports_date_range_filtering"), + } + return result class SiteGet(Service): def reply(self): diff --git a/src/plone/restapi/tests/http-examples/site_get.resp b/src/plone/restapi/tests/http-examples/site_get.resp index 28a4c1167..43a502cc1 100644 --- a/src/plone/restapi/tests/http-examples/site_get.resp +++ b/src/plone/restapi/tests/http-examples/site_get.resp @@ -3,6 +3,9 @@ Content-Type: application/json { "@id": "http://localhost:55001/plone/@site", + "features": { + "filter_aliases_by_date": false + }, "plone.allowed_sizes": [ "huge 1600:65536", "great 1200:65536", From 1babf1edfb84c0a50b5dedeb0428f6422199f606 Mon Sep 17 00:00:00 2001 From: David Glick Date: Thu, 17 Oct 2024 12:49:54 -0700 Subject: [PATCH 2/2] lint & changelog --- news/1826.feature | 1 + src/plone/restapi/services/site/get.py | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) create mode 100644 news/1826.feature diff --git a/news/1826.feature b/news/1826.feature new file mode 100644 index 000000000..3f21fa89a --- /dev/null +++ b/news/1826.feature @@ -0,0 +1 @@ +Site service: Indicate whether the site supports filtering URL aliases by date. @davisagli diff --git a/src/plone/restapi/services/site/get.py b/src/plone/restapi/services/site/get.py index c4d9cd662..4ab0a9801 100644 --- a/src/plone/restapi/services/site/get.py +++ b/src/plone/restapi/services/site/get.py @@ -81,10 +81,13 @@ def features(self): This can be used by a client to check for version-dependent features. """ result = { - "filter_aliases_by_date": hasattr(RedirectionSet, "supports_date_range_filtering"), + "filter_aliases_by_date": hasattr( + RedirectionSet, "supports_date_range_filtering" + ), } return result + class SiteGet(Service): def reply(self): site = Site(self.context, self.request)