Skip to main content

A queryparser, querybuilder and extra helper tools, to parse stored queries to actual results, used in new style Plone collections

Project description


This package provides a queryparser, querybuilder and extra helper tools, to parse stored queries to actual results, used in new style collections. It includes a registry reader which reads operators, values and criteria from the Plone registry.

Compatibility with Plone versions

For each Plone release, its versions.cfg file at pins a version of that works well with that Plone version. It is wise not to pick another version.

But for clarity, these are the correct relationships between the two versions:

  • On Plone 4.2 use 1.0.x.

  • On Plone 4.3 use 1.2.x.

  • On Plone 5.0 use 1.3.x.

Too new versions can cause problems. For example, the 1.1.x and 1.2.x series are intended for usage with Plone 4.3. They depend on plone.batching, which ships with Plone 4.3 but may cause problems with Plone 4.2.


2.1.0 (2023-09-21)

New features:

  • Add a way to specific a context for getting vocabularies in the QuerystringRegistryReader. @davisagli (#137)

2.0.6 (2023-08-17)

Bug fixes:

  • Fix the currentUser operation when the current user’s username is different from their user id. @davisagli (#135)

2.0.5 (2023-06-16)

Bug fixes:

  • Fix integer operations to accept integers. @davisagli Fix integer operations to avoid adding None to the query when the input is not valid. @davisagli (#131)

  • Merge range queries on the same index instead of overwriting. @davisagli (#132)


  • Update configuration files. [plone devs] (dd37b9f9)

2.0.4 (2023-05-22)

Bug fixes:

  • Fix a circular transitive dependency to New direct dependency explicit on Move to .vocabularies, move the ZCML to register the factory, move the the test. Move with new name parseAndModifyFormquery to .queryparser. [@jensens] (fix-circular-dep-pavocabularies)

2.0.3 (2023-04-26)

Bug fixes:

  • Fix cyclic dependency, do not depend on [@jensens] (rm-cyclic-dep)

2.0.2 (2023-03-21)

Bug fixes:

  • Housecleaning: pyupgrade, isort, black, remove six, move imports from CMFPlone to plone.base, copy munge_search_terms from CMFPlone to here to avoid dependency on CMFPlone. [jensens] (#119)


  • Update configuration files. [plone devs] (a533099d)

2.0.1 (2022-12-21)

Bug fixes:

  • Minor cleanup on tests. [gforcada] (#1)

2.0.0 (2022-07-21)

Bug fixes:

  • Use function from Products.CMFPlone to handle cleaning of search terms. Fixes #111 [erral] (#111)

1.6.0 (2022-05-26)

New features:

  • Add negation-query operators string.isNot and selection.none. New and including upgrade steps. [thet] (#110)

Bug fixes:

  • Fix how to merge custom_query with parsedquery without overriding values. [cekk] (#103)

1.5.0 (2022-02-04)

New features:

  • Add lazy attribute to vocabularies to prevent fetching any results [reebalazs] (#104)

1.4.15 (2021-09-15)

Bug fixes:

  • Remove cyclic dependency with [sneridagh] (#101)

1.4.14 (2020-07-17)

Bug fixes:

  • Fixing issue #97: Multiple path support for Translation Groups, using PATH_INDICES as suggested by jensens (#97)

1.4.13 (2020-04-20)

Bug fixes:

  • Minor packaging updates. (#1)

1.4.12 (2019-10-09)

Bug fixes:

  • Integer criterions: try to convert all input to integers. Most notably this did not happen for unicode on Python 2. So a u"42" was passed as value to the catalog query, and this matched either all or nothing. [maurits] (#93)

1.4.11 (2018-12-10)

Bug fixes:

  • Do not show default profile as installable (already installed with core) [jensens]

1.4.10 (2018-10-31)

Bug fixes:

  • Fix query_index_modifiers and tests with py3 [pbauer, gforcada]

1.4.9 (2018-09-28)

Bug fixes:

  • Fix a case, where objects id starts with roots id [eikichi18]

1.4.8 (2018-02-05)

Bug fixes:

  • Ignore unknown sort_on indexes when parsing a query. Otherwise you get a CatalogError. [maurits]

  • Add Python 2 / 3 compatibility [pbauer]

1.4.7 (2017-11-25)

Bug fixes:

  • Fix tests with CMF 2.3. [davisagli]

  • Fix querybuilder if SearchableText is a dict {‘query’: ‘…’} [tomgross]

1.4.6 (2017-09-08)

Bug fixes:

  • Filter query string from bad term and operator. [nngu6036]

1.4.5 (2017-06-20)

Bug fixes:

  • remove unittest2 dependency [kakshay21]

1.4.4 (2017-05-23)

Bug fixes:

  • Do not fail on empty empty or not existing querystrings while upgrading. [agitator]

1.4.3 (2017-02-12)

Bug fixes:

  • Fix QueryBuilder with empty queries to return a Batch when requested. [thet]

  • Disable “Subject” (“Tags”) as sortable index. Keyword Indexes are not sortable. [jensens]

1.4.2 (2017-01-17)

Bug fixes:

  • Fix a case, where index modifiers with queries containing largerThanRelativeDate or lessThanRelativeDate date operators failed with an TypeError. [thet]

  • Import DateTimeError from DateTime.interfaces, class attribute DateTime.DateTimeError was removed in DateTime 3.0 [vincentfretin]

1.4.1 (2016-11-18)

Bug fixes:

  • Add coding header on python files. [gforcada]

1.4 (2016-08-18)

New features:

  • Refactor addition of criteria to stick inside INavigationRoot in querybuilder. Added a simple IQueryModifier interfaces expecting a query and returning a query. Iterates over all sorted utilities providing such an interfaces and calls it right before the query is parsed. Code to add the INavigationRoot stickiness was moved to such a query modifier. [jensens]

Bug fixes:

  • Use zope.interface decorator. [gforcada]

1.3.15 (2016-05-25)


  • Add missing _referenceIs query parser [vangheem]

1.3.14 (2016-02-19)


  • Set path to navigation root by default to have the same results in Collection preview and view. [Gagaro]

1.3.13 (2016-02-14)


  • Be able to parse more date string types [vangheem]

1.3.12 (2015-11-26)


1.3.11 (2015-10-30)


  • Rerelease as something went wrong during upload of the package. [maurits]

1.3.10 (2015-10-30)


  • Added missing ‘,’ for subject upgrade. [ezvirtual]

1.3.9 (2015-10-30)


1.3.8 (2015-09-21)

  • Fixed problems introduced by merge. [jensens]

  • Add “before/after N days” functionality [petschki]

  • Fixed Sortable Indexes to not return ZCTextIndex type indexes. [winstonf88]

1.3.7 (2015-09-11)

  • Fix vocabularies sorting [ebrehault]

1.3.6 (2015-08-24)

  • Fix migration from Plone 4 to Plone 5. [pbauer]

1.3.5 (2015-08-22)

  • Creator criteria: pur currentUser on top. [mvanrees]

  • Migrate Creator to selection.any. [mvanrees]

  • add user vocabulary to [vangheem]

  • do not need “is” when there is an “any” operator. [vangheem]

1.3.4 (2015-08-21)

  • Hide upgrade-profiles when creating a new site. [pbauer]

  • Replace with selection.any for portal_types and review_state operations, and add selection.any for Creator operation. [frapell]

  • Actually convert the value to a datetime for the DateIndex query modifier. [frapell]

  • Do not fail if the ‘Between’ operation is called with an empty value, and instead return a list with 2 empty values. [frapell]

  • Fixed possible problem with custom_query parameter where theoretically a second invocation could inadvertently be using the value from the first invocation. [maurits]

1.3.3 (2015-07-18)

  • Fix getObjPositionInParent be sortable by default [datakurre]

  • Add operators selection.any and selection.all to Subject. [MrTango]

1.3.2 (2015-05-04)

  • Implement is, lessThan and largerThan operators for integer fields (fixes #32). [rodfersou]

1.3.1 (2015-03-12)

  • No need to install as z2 products in tests. [timo]

  • Fix path-queries using UID. [pbauer]

1.3 (2015-01-22)

  • Path criteria can be defined either absolute to IPloneSiteRoot, absolute to INavigationRoot or relative to current context. [rnixx]

  • Relative path parent breaks on IPloneSiteRoot rather than INavigationRoot. [rnixx]

1.2.3 (2014-10-20)

  • Fixed build DateIndex query. [kroman0]

1.2.2 (2014-08-05)

  • Fix wrong query field vocabulary declaration of the show_inactive field from AllRoles to Roles. [thet]

  • Add a custom_query parameter to the QueryBuilder._makequery method, which allows for run time customization of the stored query, e.g. by request parameters. [thet]

  • Added support for depth in relativePath operator. [djay]

1.2.1 (2014-05-14)

  • Fixed upgrade_1_to_2 upgrade step in case the registry doesn’t contain the named value [ichim-david]

  • Added show inactive operation which uses the roles vocabulary in order to assign permission to show or hide the inactive objects of the given query [ichim-david]

  • Migrate tests to [sdelcourt]

  • Fix querybuilder code if results object does not provide an actual_result_count attribute. This regression has been introduced in release 1.1.1 (fixed broken handling of limit and batch size). [timo]

1.2.0 (2014-04-05)

  • bugfix for #22: Names not matching for operations getObjPositionInParent plus test [jensens]

  • Implement multipath queries: - Parsing a path returns always a list. - Special handling for paths in parseFormquery. [maethu]

  • Fixes [mathias.leimgruber]

  • querybuilder results can now be manipulated using IParsedQueryIndexModifier named utilities. [keul]

1.1.1 (2014-01-27)

  • fixed broken handling of limit and batch size. [bosim]

  • pep8 fixes [bosim]

1.1.0 (2013-11-14)

  • be able to include a depth value onto path query string [vangheem]

  • Use plone.batching. [khink]

1.0.8 (2013-03-14)

  • Fix UnicodeDecodeError on utf8-encoded Subject strings. [tisto]

1.0.7 (2013-01-01)

  • getVocabularyValues now checks if the vocabulary utility is missing, if it is the utility is just ignored. This makes the module tollarant to missing vocabulary utilities. [bosim]

1.0.6 (2012-10-03)

  • _relativePath handler can now walk through the site structure (not only upwards) _path handler respects absolute paths without leading nav_root path [petschki]

1.0.5 (2012-06-29)

  • Date ranges now use the _betweenDates handler, which is much more forgiving of empty field values, defaulting to an all-encompassing date range if neither value is provided, an “everything after” range if only the start date is provided, and a min/max range if both are provided.

    Fixes [esteele]

1.0.4 (2012-05-07)

  • Fixed i18n of “Before today” operator and “x items matching your search terms.”. [vincentfretin]

1.0.3 (2012-04-15)

  • Add an optional ‘brains’ parameter to the query builder to obtain results not wrapped as an IContentListing. [davisagli]

  • Declare all dependencies in to resolve a dependency problem in test setups, where the Plone stack isn’t fully loaded. [thet]

  • Add a “today” date operator [esteele]

  • Internationalize strings in the registry. [davisagli]

  • Change relative date searching to be “N days” string based rather than datetime based. [esteele]

  • Handle empty values on relative date fields. [esteele]

1.0.2 (2012-02-10)

  • Change the Creator field to use the correct query operation for filtering on the current logged in user. This fixes [jcerjak]

  • Limit number of items that show up in the preview of the edit view to 25. If we do not limit these results all items in the query will be rendered in the preview which leads to problems when the collection contains > 10k results. [timo]

1.0.1 (2011-10-17)

  • Ensure inactive content is only shown to users with the appropriate permission.

1.0 (2011-07-19)

  • Initial release

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution (48.5 kB view hashes)

Uploaded source

Built Distribution

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page