Coder Social home page Coder Social logo

collective.searchandreplace's Introduction

Introduction

image

The collective.searchandreplace product is a Plone Add-on designed to find and replace text in Plone content objects.

It searches in all text fields (since version 7.0) and all string fields (since 8.0).

This includes default content types fields like title, description, and document text. It excludes the id/short name string field.

It operates over single or multiple Plone content objects and can show a preview of changes as well as immediately perform them.

Features include:

  • being able to control searching in subfolders
  • matching based on case sensitivity/insensitivity
  • maximum number of results
  • fast search using the catalog by default
  • disable the fast search to be able to search and replace raw html tags, for example replace <strong>text</strong> by <em>text</em>

Development

image

Binder

Running tests and demo Plone site on mybinder.org.

image

Compatibility

From version 8.0, we are compatible with Plone 4.3, 5.1 and 5.2.

To be able to run the buildout for a specific Plone version, you need to set an environment variable for the Plone version you want to use, eg. export PLONE_VERSION=5.2

Warning

8.0 is not backward-compatible.

  • The Python API of the searchandreplace utility has changed. If your setup customizes searchandreplace, it will need some work.
  • String fields are now searched. You can turn that feature off to keep 7.x functionality by setting the registry include_textline_fields to False

From version 5.0, we are compatible with Plone 4.3 and 5.0.

The collective.searchandreplace product was initally built for use with eduCommons by Novell, inc, later improved by EnPraxis. It is currently maintained by Maurits van Rees. Plone 5 support added by Gagaro.

collective.searchandreplace's People

Contributors

ale-rt avatar davisagli avatar dependabot[bot] avatar gagaro avatar gotcha avatar ivanteoh avatar laulaz avatar mauritsvanrees avatar rudd-o avatar spereverde avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

collective.searchandreplace's Issues

deprecationwarning: isDefaultPage

when running a Plone 5.2 (python 3.6) setup we get a deprecation warning:

/buildout/eggs/collective.searchandreplace-8.2.1-py3.6-linux-x86_64.egg/collective/searchandreplace/browser/searchreplaceform.py:9: DeprecationWarning: isDefaultPage is deprecated. Import from Products.CMFPlone instead
  from plone.app.layout.navigation.defaultpage import isDefaultPage

todo: adjust import for different versions of plone

Traceback when searching for text with parentheses

For example, with a search term : "(my text)", you get the following traceback :

Traceback (innermost last):
  Module ZPublisher.Publish, line 138, in publish
  Module ZPublisher.mapply, line 77, in mapply
  Module ZPublisher.Publish, line 48, in call_object
  Module zope.formlib.form, line 873, in __call__
  Module zope.formlib.form, line 994, in render
  Module zope.formlib.form, line 863, in render
  Module Products.Five.browser.pagetemplatefile, line 125, in __call__
  Module Products.Five.browser.pagetemplatefile, line 59, in __call__
  Module zope.pagetemplate.pagetemplate, line 132, in pt_render
  Module zope.pagetemplate.pagetemplate, line 240, in __call__
  Module zope.tal.talinterpreter, line 271, in __call__
  Module zope.tal.talinterpreter, line 343, in interpret
  Module zope.tal.talinterpreter, line 888, in do_useMacro
  Module zope.tal.talinterpreter, line 343, in interpret
  Module zope.tal.talinterpreter, line 533, in do_optTag_tal
  Module zope.tal.talinterpreter, line 518, in do_optTag
  Module zope.tal.talinterpreter, line 513, in no_tag
  Module zope.tal.talinterpreter, line 343, in interpret
  Module zope.tal.talinterpreter, line 954, in do_defineSlot
  Module zope.tal.talinterpreter, line 343, in interpret
  Module zope.tal.talinterpreter, line 533, in do_optTag_tal
  Module zope.tal.talinterpreter, line 518, in do_optTag
  Module zope.tal.talinterpreter, line 513, in no_tag
  Module zope.tal.talinterpreter, line 343, in interpret
  Module zope.tal.talinterpreter, line 858, in do_defineMacro
  Module zope.tal.talinterpreter, line 343, in interpret
  Module zope.tal.talinterpreter, line 954, in do_defineSlot
  Module zope.tal.talinterpreter, line 343, in interpret
  Module zope.tal.talinterpreter, line 533, in do_optTag_tal
  Module zope.tal.talinterpreter, line 518, in do_optTag
  Module zope.tal.talinterpreter, line 513, in no_tag
  Module zope.tal.talinterpreter, line 343, in interpret
  Module zope.tal.talinterpreter, line 946, in do_defineSlot
  Module zope.tal.talinterpreter, line 343, in interpret
  Module zope.tal.talinterpreter, line 533, in do_optTag_tal
  Module zope.tal.talinterpreter, line 518, in do_optTag
  Module zope.tal.talinterpreter, line 513, in no_tag
  Module zope.tal.talinterpreter, line 343, in interpret
  Module zope.tal.talinterpreter, line 858, in do_defineMacro
  Module zope.tal.talinterpreter, line 343, in interpret
  Module zope.tal.talinterpreter, line 533, in do_optTag_tal
  Module zope.tal.talinterpreter, line 518, in do_optTag
  Module zope.tal.talinterpreter, line 513, in no_tag
  Module zope.tal.talinterpreter, line 343, in interpret
  Module zope.tal.talinterpreter, line 954, in do_defineSlot
  Module zope.tal.talinterpreter, line 343, in interpret
  Module zope.tal.talinterpreter, line 533, in do_optTag_tal
  Module zope.tal.talinterpreter, line 518, in do_optTag
  Module zope.tal.talinterpreter, line 513, in no_tag
  Module zope.tal.talinterpreter, line 343, in interpret
  Module zope.tal.talinterpreter, line 858, in do_defineMacro
  Module zope.tal.talinterpreter, line 343, in interpret
  Module zope.tal.talinterpreter, line 531, in do_optTag_tal
  Module zope.tal.talinterpreter, line 513, in no_tag
  Module zope.tal.talinterpreter, line 343, in interpret
  Module zope.tal.talinterpreter, line 531, in do_optTag_tal
  Module zope.tal.talinterpreter, line 513, in no_tag
  Module zope.tal.talinterpreter, line 343, in interpret
  Module zope.tal.talinterpreter, line 742, in do_insertStructure_tal
  Module Products.PageTemplates.Expressions, line 218, in evaluateStructure
  Module zope.tales.tales, line 696, in evaluate
   - URL: /plone/eggs/collective.searchandreplace-8.2.1-py2.7.egg/collective/searchandreplace/browser/pageform.pt
   - Line 115, Column 16
   - Expression: <PathExpr standard:u'context/@@searchreplacetable'>
   - Names:
      {'args': (),
       'container': <PloneSite at /Plone>,
       'context': <PloneSite at /Plone>,
       'default': <object object at 0x7febb211a570>,
       'here': <PloneSite at /Plone>,
       'loop': {},
       'nothing': None,
       'options': {},
       'repeat': <Products.PageTemplates.Expressions.SafeMapping object at 0x7feb99c7f890>,
       'request': <HTTPRequest, URL=http://www.cirb.irisnetlab.be/@@searchreplaceform>,
       'root': <Application at >,
       'template': <Products.Five.browser.pagetemplatefile.ViewPageTemplateFile object at 0x7feb9c1ee5d0>,
       'traverse_subpath': [],
       'user': <PropertiedUser 'admin'>,
       'view': <Products.Five.metaclass.SearchReplaceForm object at 0x7feb9b10f990>,
       'views': <Products.Five.browser.pagetemplatefile.ViewMapper object at 0x7feb97e09d90>}
  Module zope.tales.expressions, line 217, in __call__
  Module Products.PageTemplates.Expressions, line 147, in _eval
  Module zope.tales.expressions, line 124, in _eval
  Module Products.PageTemplates.Expressions, line 94, in trustedBoboAwareZopeTraverse
  Module OFS.Traversable, line 201, in unrestrictedTraverse
   - __traceback_info__: ([], '@@searchreplacetable')
  Module zope.traversing.namespace, line 112, in namespaceLookup
  Module Products.CMFPlone.patches.security, line 12, in traverse
  Module zope.traversing.namespace, line 327, in traverse
  Module zope.component._api, line 120, in queryMultiAdapter
  Module zope.component.registry, line 238, in queryMultiAdapter
  Module zope.interface.adapter, line 532, in queryMultiAdapter
  Module collective.searchandreplace.browser.searchreplacetable, line 19, in __init__
  Module collective.searchandreplace.browser.searchreplacetable, line 49, in findObjects
  Module collective.searchandreplace.searchreplaceutility, line 191, in findObjects
  Module Products.LinguaPlone.patches, line 34, in searchResults
  Module Products.CMFPlone.CatalogTool, line 393, in searchResults
  Module Products.ZCatalog.ZCatalog, line 604, in searchResults
  Module Products.ZCatalog.Catalog, line 925, in searchResults
  Module Products.ZCatalog.Catalog, line 547, in search
  Module Products.ZCTextIndex.ZCTextIndex, line 217, in _apply_index
  Module Products.ZCTextIndex.QueryParser, line 136, in parseQuery
  Module Products.ZCTextIndex.QueryParser, line 156, in _require
ParseError: Token 'EOF' required, u'(' found

Tested on Plone 5 / collective.searchandreplace 8.2.1.

Removed behavior searchandreplace from type Document

Plone 5.0.5, s&r 7.1(latest)
./bin/plonectl fg
.......
WARNING plone.dexterity.schema No behavior registration found for behavior named: "collective.searchandreplace.interfaces.ISearchReplaceable" - trying fallback lookup..."
.....
Removed behavior collective.searchandreplace.interfaces.ISearchReplaceable from type Document2016-07-21 13:20:42 ERROR Zope.SiteErrorLog 1469089242.640.267444027251

as a result of the removal behavior - I can't save some of the edited pages

Traceback (innermost last):
Module ZPublisher.Publish, line 138, in publish
Module ZPublisher.mapply, line 77, in mapply
Module ZPublisher.Publish, line 48, in call_object
Module plone.z3cform.layout, line 66, in call
Module plone.z3cform.layout, line 50, in update
Module plone.dexterity.browser.edit, line 58, in update
Module plone.z3cform.fieldsets.extensible, line 59, in update
Module plone.z3cform.patch, line 30, in GroupForm_update
Module z3c.form.group, line 145, in update
Module plone.app.z3cform.csrf, line 21, in execute
Module z3c.form.action, line 98, in execute
Module z3c.form.button, line 315, in call
Module z3c.form.button, line 170, in call
Module plone.dexterity.browser.edit, line 30, in handleApply
Module z3c.form.group, line 126, in applyChanges
Module zope.event, line 31, in notify
Module zope.component.event, line 24, in dispatch
Module zope.component._api, line 136, in subscribers
Module zope.component.registry, line 321, in subscribers
Module zope.interface.adapter, line 585, in subscribers
Module zope.component.event, line 32, in objectEventNotify
Module zope.component._api, line 136, in subscribers
Module zope.component.registry, line 321, in subscribers
Module zope.interface.adapter, line 585, in subscribers
Module z3c.relationfield.event, line 76, in updateRelations
Module zc.relation.catalog, line 546, in unindex
Module zc.relation.catalog, line 556, in unindex_doc
Module zc.relation.catalog, line 621, in _remove
KeyError: InterfaceClass Products.CMFDynamicViewFTI.interfaces.ISelectableBrowserDefault

the problem is specific to version 7.x.x

ParseError when searching for a space

When the user searches for a space, an error occurs.
Version tested: 8.2.2 and the z3cform branch.
It looks like it might be related to #43

The traceback:

Traceback (innermost last):
  Module ZPublisher.WSGIPublisher, line 181, in transaction_pubevents
  Module ZPublisher.WSGIPublisher, line 390, in publish_module
  Module ZPublisher.WSGIPublisher, line 285, in publish
  Module ZPublisher.mapply, line 85, in mapply
  Module ZPublisher.WSGIPublisher, line 68, in call_object
  Module z3c.form.form, line 233, in __call__
  Module plone.z3cform.fieldsets.extensible, line 62, in update
  Module plone.z3cform.patch, line 31, in GroupForm_update
  Module z3c.form.group, line 132, in update
  Module z3c.form.form, line 136, in updateWidgets
  Module z3c.form.contentprovider, line 65, in update
  Module collective.searchandreplace.browser.searchreplacetable, line 31, in update
  Module collective.searchandreplace.browser.searchreplacetable, line 55, in findObjects
  Module collective.searchandreplace.searchreplaceutility, line 194, in findObjects
  Module Products.CMFPlone.CatalogTool, line 429, in searchResults
  Module Products.ZCatalog.ZCatalog, line 615, in searchResults
  Module Products.ZCatalog.Catalog, line 1084, in searchResults
  Module Products.ZCatalog.Catalog, line 627, in search
  Module Products.ZCatalog.Catalog, line 557, in _search_index
  Module Products.ZCTextIndex.ZCTextIndex, line 201, in query_index
  Module Products.ZCTextIndex.QueryParser, line 155, in parseQuery
Products.ZCTextIndex.ParseTree.ParseError: Query contains only common words: '* *'

Add static portlets support

We have a customer who wants to search / replace text across its site ... but more than content types, they also have many static portlets.

Would you be interested / would it be an acceptable usecase to handle these portlets with collective.searchandreplace, or is it too specific ?
It would obviously be in a different form (at least for performance issues).

Thank you very much for your feedbacks (@mauritsvanrees @gotcha maybe ?)

Control panel configlet icon broken in Plone 6

Sup. Just wanted to point out that the icon does not show up in Plone 6. Not sure why that is, might want to consider revising how the configlet is deployed using GenericSetup based on other similar packages that do work.

Affected content label has unexpected behavior

When the user made a search and on the result page clicks on "Affected content", the first search result checkbox toggles. This seems a bit strange, is this the intended behavior, or is something broken?
Tested on version 8.2.2 and on z3cform branch.

Remove maintainer note

enPraxis is no more; feel free to remove the line about that entity maintaining the module.

Search and (Replace + Remove)

Not working replacement if rtext=NONE (empty replacement box)

I can't remove all occurrences of the query, only replace with a non-empty value.

A simple change in the line:100 "if replace and rtext:" to "if replace" causes an error in Unicode.

Unfortunately my experience is not sufficient to solve this problem.

I think this is a useful feature if implemented.

UnicodeEncodeError

UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-4: ordinal not in range(128)

Additional product is only for sites in the English language.
I can't search in Russian, I think in other non-English too.

Allow replacing in all text fields

Currently, only the title, description and text field are searched and replaced.

I propose to go through all rich text fields. A client needs this. They have some content types with ten or more rich text fields. :-)

This needs to work for both Archetypes and Dexterity, but this should be doable: for the text field we already have code that can handle both cases.
Getting all text fields should be doable too. I have code in a different project that iterates over the schema to get all image fields, which I can probably adapt:

from plone.app.blob.interfaces import IBlobImageField
from plone.dexterity.utils import iterSchemata
from plone.namedfile.interfaces import INamedImageField
from zope.schema import getFieldsInOrder

...
        image_fields = []
        if getattr(aq_base(obj), 'Schema', None):
            # Archetypes
            for field in obj.Schema().values():
                if not (IBlobImageField.providedBy(field) or
                        INamedImageField.providedBy(field)):
                    continue
                image_fields.append(field)
        else:
            # Dexterity
            for schemata in iterSchemata(obj):
                fields = getFieldsInOrder(schemata)
                for name, field in fields:
                    if not (IBlobImageField.providedBy(field) or
                            INamedImageField.providedBy(field)):
                        continue
                    image_fields.append(field)
        # Now iterate over all fields, whether AT or dexterity.
        for field in image_fields:
            field_instance = field.get(obj)

plone 5.1*

running a plone5.1-latest buildout and everything is fine so far.

adding collective.searchandreplace leads to some version pinning issues and getting trough all dependency-pitfalls (we all love buildout for that) i ended up pinnning:

zope.publisher = 4.3.2
zope.security = 4.1.1
zope.proxy = 4.2.1
zope.contenttype = 4.2.0
zope.configuration = 4.1.0
zope.browser = 2.1.0
zope.formlib = 4.3.0

after that buildout has done its work but now i can't start zope:

ZConfig.SchemaResourceError: could not load package ZServer: No module named _base
  Package name: 'ZServer'
  File name: 'component.xml'
  Package path: None

so as it seems: no collective.searchandreplace in plone5.1?

p.s.:
i am not shure, if the issue is in the right spot.
but as it was the package, that broke my setup ...

Restrict searching and replacing to portal_type instead of interface

Since version 6, content types need to implement the ISearchReplaceable marker interface, otherwise we will not search and replace in them. Problem: when this is activated on a new content type (by enabling the dexterity behavior or for Archetypes add some zcml) the existing content is still not searched. You need to reindex the object_provides index. I don't like that.

Also, I would like to be able to set the enabled types in one control panel, and not have to write zcml.

Proposal:

  • Create a control panel where we can set the supported types. An In-Out widget is probably best for this, so you can easily select them. In an upgrade we could try to be smart and try to determine which types to enable by default. Or we enable a few standard ones.
  • On that control panel, also have a boolean option 'restrict types'. Default False: the settings in the In-Out widget are ignored and all types are searched. Then we are back to what happened before version 6.
  • Save the settings in plone.app.registry.
  • Update the searchandreplace utility to no longer restrict the search on the ISearchReplaceable interface, but on the given portal_types.
  • Cleanup the dexterity behavior and other code needed for the way we are doing it now. Make sure that this does not break existing sites: I am not sure if removing the behavior from the code gives errors when there are still types that use this behavior. An upgrade step is probably needed and we may need to keep the interface around for a while.

I can do this.

@Gagaro What do you think of this? You added this in pull request #4. Would the new way fit your use cases?

leaving the "Find What" and "Replace With" field blank results in error

description

  • When leaving Find What empty results in an error. Interestingly, the field "Find What" is a required field but the required property doesn't seem to work all the time (the error didn't always happen) . For full traceback, see below.
  • When leaving the Replace With empty and pressing replace, also results in an error. For full traceback, see below.
  • This seems to happen on all three button pushes (preview, replace and reset when the find what field is empty)
  • you can quickly reproduce the error inside the jupyter notebook binder for more traceback and info.

traceback empty replace with:

Traceback (innermost last):
  Module ZPublisher.Publish, line 138, in publish
  Module ZPublisher.mapply, line 77, in mapply
  Module ZPublisher.Publish, line 48, in call_object
  Module zope.formlib.form, line 868, in __call__
  Module five.formlib.formbase, line 50, in update
  Module zope.formlib.form, line 849, in update
  Module zope.formlib.form, line 640, in success
  Module collective.searchandreplace.browser.searchreplaceform, line 113, in action_replace
  Module collective.searchandreplace.browser.searchreplaceform, line 131, in replace_filtered
  Module collective.searchandreplace.searchreplaceutility, line 151, in replaceFilteredOccurences
  Module collective.searchandreplace.searchreplaceutility, line 246, in replace_occurences_in_object
  Module collective.searchandreplace.searchreplaceutility, line 279, in replaceText
TypeError: coercing to Unicode: need string or buffer, NoneType found

traceback empty find what:

Traceback (innermost last):
  Module ZPublisher.Publish, line 138, in publish
  Module ZPublisher.mapply, line 77, in mapply
  Module ZPublisher.Publish, line 48, in call_object
  Module zope.formlib.form, line 873, in __call__
  Module zope.formlib.form, line 994, in render
  Module zope.formlib.form, line 863, in render
  Module Products.Five.browser.pagetemplatefile, line 125, in __call__
  Module Products.Five.browser.pagetemplatefile, line 59, in __call__
  Module zope.pagetemplate.pagetemplate, line 132, in pt_render
  Module zope.pagetemplate.pagetemplate, line 240, in __call__
  Module zope.tal.talinterpreter, line 271, in __call__
  Module zope.tal.talinterpreter, line 343, in interpret
  Module zope.tal.talinterpreter, line 888, in do_useMacro
  Module zope.tal.talinterpreter, line 343, in interpret
  Module zope.tal.talinterpreter, line 533, in do_optTag_tal
  Module zope.tal.talinterpreter, line 518, in do_optTag
  Module zope.tal.talinterpreter, line 513, in no_tag
  Module zope.tal.talinterpreter, line 343, in interpret
  Module zope.tal.talinterpreter, line 954, in do_defineSlot
  Module zope.tal.talinterpreter, line 343, in interpret
  Module zope.tal.talinterpreter, line 533, in do_optTag_tal
  Module zope.tal.talinterpreter, line 518, in do_optTag
  Module zope.tal.talinterpreter, line 513, in no_tag
  Module zope.tal.talinterpreter, line 343, in interpret
  Module zope.tal.talinterpreter, line 858, in do_defineMacro
  Module zope.tal.talinterpreter, line 343, in interpret
  Module zope.tal.talinterpreter, line 954, in do_defineSlot
  Module zope.tal.talinterpreter, line 343, in interpret
  Module zope.tal.talinterpreter, line 533, in do_optTag_tal
  Module zope.tal.talinterpreter, line 518, in do_optTag
  Module zope.tal.talinterpreter, line 513, in no_tag
  Module zope.tal.talinterpreter, line 343, in interpret
  Module zope.tal.talinterpreter, line 946, in do_defineSlot
  Module zope.tal.talinterpreter, line 343, in interpret
  Module zope.tal.talinterpreter, line 533, in do_optTag_tal
  Module zope.tal.talinterpreter, line 518, in do_optTag
  Module zope.tal.talinterpreter, line 513, in no_tag
  Module zope.tal.talinterpreter, line 343, in interpret
  Module zope.tal.talinterpreter, line 858, in do_defineMacro
  Module zope.tal.talinterpreter, line 343, in interpret
  Module zope.tal.talinterpreter, line 533, in do_optTag_tal
  Module zope.tal.talinterpreter, line 518, in do_optTag
  Module zope.tal.talinterpreter, line 513, in no_tag
  Module zope.tal.talinterpreter, line 343, in interpret
  Module zope.tal.talinterpreter, line 954, in do_defineSlot
  Module zope.tal.talinterpreter, line 343, in interpret
  Module zope.tal.talinterpreter, line 533, in do_optTag_tal
  Module zope.tal.talinterpreter, line 518, in do_optTag
  Module zope.tal.talinterpreter, line 513, in no_tag
  Module zope.tal.talinterpreter, line 343, in interpret
  Module zope.tal.talinterpreter, line 858, in do_defineMacro
  Module zope.tal.talinterpreter, line 343, in interpret
  Module zope.tal.talinterpreter, line 531, in do_optTag_tal
  Module zope.tal.talinterpreter, line 513, in no_tag
  Module zope.tal.talinterpreter, line 343, in interpret
  Module zope.tal.talinterpreter, line 531, in do_optTag_tal
  Module zope.tal.talinterpreter, line 513, in no_tag
  Module zope.tal.talinterpreter, line 343, in interpret
  Module zope.tal.talinterpreter, line 742, in do_insertStructure_tal
  Module Products.PageTemplates.Expressions, line 218, in evaluateStructure
  Module zope.tales.tales, line 696, in evaluate
   - URL: /opt/plone/x0135809/buildout/eggs/collective.searchandreplace-8.0.0-py2.7.egg/collective/searchandreplace/browser/pageform.pt
   - Line 92, Column 16
   - Expression: <PathExpr standard:u'context/@@searchreplacetable'>
   - Names:
      {'args': (),
       'container': <PloneSite at /mptest>,
       'context': <PloneSite at /mptest>,
       'default': <object object at 0x7f830cac9560>,
       'here': <PloneSite at /mptest>,
       'loop': {},
       'nothing': None,
       'options': {},
       'repeat': <Products.PageTemplates.Expressions.SafeMapping object at 0x7f82ec2149f0>,
       'request': <HTTPRequest, URL=http://icts-t-plone-7:11080/mptest/@@searchreplaceform>,
       'root': <Application at >,
       'template': <Products.Five.browser.pagetemplatefile.ViewPageTemplateFile object at 0x7f82f1efd4d0>,
       'traverse_subpath': [],
       'user': <PropertiedUser 'admin'>,
       'view': <Products.Five.metaclass.SearchReplaceForm object at 0x7f82ec6b9f90>,
       'views': <Products.Five.browser.pagetemplatefile.ViewMapper object at 0x7f82ec6a94d0>}
  Module zope.tales.expressions, line 217, in __call__
  Module Products.PageTemplates.Expressions, line 155, in _eval
  Module Products.PageTemplates.Expressions, line 117, in render
  Module Products.Five.browser.metaconfigure, line 485, in __call__
  Module Products.Five.browser.pagetemplatefile, line 125, in __call__
  Module Products.Five.browser.pagetemplatefile, line 59, in __call__
  Module zope.pagetemplate.pagetemplate, line 132, in pt_render
  Module zope.pagetemplate.pagetemplate, line 240, in __call__
  Module zope.tal.talinterpreter, line 271, in __call__
  Module zope.tal.talinterpreter, line 343, in interpret
  Module zope.tal.talinterpreter, line 583, in do_setLocal_tal
  Module zope.tales.tales, line 696, in evaluate
   - URL: /opt/plone/x0135809/buildout/eggs/collective.searchandreplace-8.0.0-py2.7.egg/collective/searchandreplace/browser/searchreplacetable.pt
   - Line 1, Column 0
   - Expression: <PathExpr standard:u'view/getItems'>
   - Names:
      {'args': (),
       'container': <PloneSite at /mptest>,
       'context': <PloneSite at /mptest>,
       'default': <object object at 0x7f830cac9560>,
       'here': <PloneSite at /mptest>,
       'loop': {},
       'nothing': None,
       'options': {},
       'repeat': <Products.PageTemplates.Expressions.SafeMapping object at 0x7f82ecaf42b8>,
       'request': <HTTPRequest, URL=http://icts-t-plone-7:11080/mptest/@@searchreplaceform>,
       'root': <Application at >,
       'template': <Products.Five.browser.pagetemplatefile.ViewPageTemplateFile object at 0x7f82f1f30bd0>,
       'traverse_subpath': [],
       'user': <PropertiedUser 'admin'>,
       'view': <Products.Five.metaclass.SimpleViewClass from /opt/plone/x0135809/buildout/eggs/collective.searchandreplace-8.0.0-py2.7.egg/collective/searchandreplace/browser/searchreplacetable.pt object at 0x7f82ec6982d0>,
       'views': <Products.Five.browser.pagetemplatefile.ViewMapper object at 0x7f82ec698c90>}
  Module zope.tales.expressions, line 217, in __call__
  Module Products.PageTemplates.Expressions, line 155, in _eval
  Module Products.PageTemplates.Expressions, line 117, in render
  Module collective.searchandreplace.browser.searchreplacetable, line 35, in getItems
  Module collective.searchandreplace.searchreplaceutility, line 173, in findObjects
  Module kuleuven.patches.language, line 31, in searchResults
  Module Products.CMFPlone.CatalogTool, line 394, in searchResults
  Module Products.ZCatalog.ZCatalog, line 610, in searchResults
  Module Products.ZCatalog.Catalog, line 925, in searchResults
  Module Products.ZCatalog.Catalog, line 547, in search
  Module Products.ZCTextIndex.ZCTextIndex, line 217, in _apply_index
  Module Products.ZCTextIndex.QueryParser, line 139, in parseQuery
ParseError: Query contains only common words: u'**'

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.