fix handling of US dates in all cases
This commit is contained in:
parent
c10f163b93
commit
a2120db10e
|
@ -19,6 +19,14 @@
|
||||||
for="*"
|
for="*"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
<browser:page
|
||||||
|
name="querybuildernumberofresults"
|
||||||
|
class=".searchview.QueryBuilder"
|
||||||
|
permission="zope2.View"
|
||||||
|
attribute="number_of_results"
|
||||||
|
for="*"
|
||||||
|
/>
|
||||||
|
|
||||||
<browser:page
|
<browser:page
|
||||||
name="querybuilderjsonconfig"
|
name="querybuilderjsonconfig"
|
||||||
class=".searchview.RegistryConfiguration"
|
class=".searchview.RegistryConfiguration"
|
||||||
|
|
|
@ -406,20 +406,26 @@ class ContentListingView(BrowserView):
|
||||||
|
|
||||||
|
|
||||||
class QueryBuilder(plone.app.querystring.querybuilder.QueryBuilder):
|
class QueryBuilder(plone.app.querystring.querybuilder.QueryBuilder):
|
||||||
def _makequery(self, *args, **kwargs):
|
def __call__(self, query, *args, **kwargs):
|
||||||
for i, param in enumerate(kwargs.get('query', [])):
|
for i, param in enumerate(query):
|
||||||
if param.get('o', '').startswith('plone.app.querystring.operation.date'):
|
if param.get('o', '').startswith('plone.app.querystring.operation.date'):
|
||||||
date = param.get('v')
|
date = param.get('v')
|
||||||
try:
|
try:
|
||||||
param = dict(param.copy())
|
param = dict(param.copy())
|
||||||
param['v'] = datetime.datetime.strptime(date, '%d/%m/%Y').strftime('%Y-%m-%d')
|
param['v'] = datetime.datetime.strptime(date, '%d/%m/%Y').strftime('%Y-%m-%d')
|
||||||
kwargs.get('query')[i] = param
|
query[i] = param
|
||||||
except ValueError:
|
except ValueError:
|
||||||
pass
|
pass
|
||||||
results = plone.app.querystring.querybuilder.QueryBuilder._makequery(self, *args, **kwargs)
|
return plone.app.querystring.querybuilder.QueryBuilder.__call__(self,
|
||||||
if isinstance(results, ContentListing):
|
query, *args, **kwargs)
|
||||||
|
|
||||||
|
def _makequery(self, query, *args, **kwargs):
|
||||||
|
results = plone.app.querystring.querybuilder.QueryBuilder._makequery(self, query, *args, **kwargs)
|
||||||
|
if isinstance(results, ContentListing) and kwargs.get('limit') != 1:
|
||||||
# results may have been padded with None, but ContentListing
|
# results may have been padded with None, but ContentListing
|
||||||
# doesn't like that.
|
# doesn't like that.
|
||||||
|
# we do not touch the list in the casse of limit == 1 as it's used
|
||||||
|
# to compute the number of results, and we want the correct number.
|
||||||
results._basesequence = [x for x in results._basesequence if x is not None]
|
results._basesequence = [x for x in results._basesequence if x is not None]
|
||||||
return results
|
return results
|
||||||
|
|
||||||
|
|
Reference in New Issue