fix handling of US dates in all cases

This commit is contained in:
Frédéric Péters 2014-06-10 16:09:09 +02:00
parent c10f163b93
commit a2120db10e
2 changed files with 19 additions and 5 deletions

View File

@ -19,6 +19,14 @@
for="*"
/>
<browser:page
name="querybuildernumberofresults"
class=".searchview.QueryBuilder"
permission="zope2.View"
attribute="number_of_results"
for="*"
/>
<browser:page
name="querybuilderjsonconfig"
class=".searchview.RegistryConfiguration"

View File

@ -406,20 +406,26 @@ class ContentListingView(BrowserView):
class QueryBuilder(plone.app.querystring.querybuilder.QueryBuilder):
def _makequery(self, *args, **kwargs):
for i, param in enumerate(kwargs.get('query', [])):
def __call__(self, query, *args, **kwargs):
for i, param in enumerate(query):
if param.get('o', '').startswith('plone.app.querystring.operation.date'):
date = param.get('v')
try:
param = dict(param.copy())
param['v'] = datetime.datetime.strptime(date, '%d/%m/%Y').strftime('%Y-%m-%d')
kwargs.get('query')[i] = param
query[i] = param
except ValueError:
pass
results = plone.app.querystring.querybuilder.QueryBuilder._makequery(self, *args, **kwargs)
if isinstance(results, ContentListing):
return plone.app.querystring.querybuilder.QueryBuilder.__call__(self,
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
# 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]
return results