Plone расширенный поиск не работает - PullRequest
2 голосов
/ 13 октября 2011

Я использую Plone 4.0.1 и у меня проблема с портлетом поиска.Обычный поиск и живой поиск работают нормально, но когда я пытаюсь использовать расширенный поиск (через mysite / search_form), я получаю следующий стек ошибок:

    Traceback (innermost last):
      Module ZPublisher.Publish, line 127, in publish
      Module ZPublisher.mapply, line 77, in mapply
      Module ZPublisher.Publish, line 47, in call_object
      Module Shared.DC.Scripts.Bindings, line 324, in __call__
      Module Shared.DC.Scripts.Bindings, line 361, in _bindAndExec
      Module Products.CMFCore.FSPageTemplate, line 240, in _exec
      Module Products.CMFCore.FSPageTemplate, line 180, in pt_render
      Module Products.PageTemplates.PageTemplate, line 80, in pt_render
      Module zope.pagetemplate.pagetemplate, line 115, in pt_render
      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 821, in do_loop_tal
      Module zope.tal.talinterpreter, line 343, in interpret
      Module zope.tal.talinterpreter, line 821, in do_loop_tal
      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 633, in do_insertI18nText_tal
      Module Products.PageTemplates.Expressions, line 227, in evaluateText
      Module zope.tales.tales, line 696, in evaluate
       - URL: file:/usr/local/Plone/buildout-cache/eggs/Plone-4.0.1-py2.6.egg/Products/CMFPlone/skins/plone_forms/search_form.pt
       - Line 162, Column 24
       - Expression: <PythonExpr portal_types.getTypeInfo(type).Title()>
       - Names:
          {'container': <PloneSite at /PROJECT>,
           'context': <PloneSite at /PROJECT>,
           'default': <object object at 0x7fe10cfc7ae0>,
           'here': <PloneSite at /PROJECT>,
           'loop': {u'sublist': <Products.PageTemplates.Expressions.PathIterator object at 0xc0c58d0>,
                    u'type': <Products.PageTemplates.Expressions.PathIterator object at 0xc0c5a50>},
           'nothing': None,
           'options': {'args': ()},
           'repeat': <Products.PageTemplates.Expressions.SafeMapping object at 0xc0fad08>,
           'request': <HTTPRequest, URL=http://www.PROJECT/search_form>,
           'root': <Application at >,
           'template': <FSPageTemplate at /PROJECT/search_form>,
           'traverse_subpath': [],
           'user': <PloneUser 'USER@MAIL.COM'>}
      Module Products.PageTemplates.ZRPythonExpr, line 49, in __call__
       - __traceback_info__: portal_types.getTypeInfo(type).Title()
      Module PythonExpr, line 1, in <expression>
      Module AccessControl.ImplPython, line 688, in guarded_getattr
    AttributeError: 'NoneType' object has no attribute 'Title'

Спасибо за любую помощь!

Ответы [ 3 ]

2 голосов
/ 13 октября 2011

У вас, похоже, что-то не так с portal_types, проверьте, все ли в порядке. Может быть, тип содержимого с некоторым именем с пробелами внутри имени или неработающие продукты?

0 голосов
/ 23 мая 2013

Это можно решить с помощью импорта типов соответствующего типа и профиля пакета.

Есть наполовину установленный продукт или дополнение Zope.

Исправление грубой силы - переустановить все ваши аддоны, и, надеюсь, один из аддонов зарегистрирует тип.


Однако, для более «перфекционистского» подхода:

  1. Найти оскорбительный тип
    Запустите zope в fg с Products.PDBDebugMode (это заставляет plone вводить pdb при исключении)

    AttributeError: 'NoneType' object has no attribute 'Title'
    > /path/to/your/plone/instance/PythonExpr(1)<expression>()
    (Pdb) portal_types
    <TypesTool at /plonesite/portal_types>
    (Pdb) type
    'NameOfOffendingType'   #### <------ HERE!!!!!!
    (Pdb) portal_types.getTypeInfo(type) is None
    True   ####<--- yup, sure is!!!
    

2) Посетите ZMI и под своим сайтом Plone, проверьте инструмент типов. Вы должны заметить, что тип нарушителя, определенный на шаге 1, не указан.

3) Найдите пакет python и профиль types.xml, который определяет этот объект: Вы должны увидеть это где-то в types.xml (надеюсь)

 <object name="NameOfOffendingType"
    meta_type="Factory-based Type Information with dynamic views"/>

4) Теперь, когда вы знаете пакет, посетите ZMI и под своим сайтом Plone перейдите к «Настройка портала» и нажмите вкладку «Импорт». Выберите пакет / продукт в разделе «Выбрать профиль или снимок» (имя профиля можно найти в файле configure.zcml пакета). Выберите «Инструмент типов» и нажмите «Импортировать выбранные шаги»

5) отсюда, вы можете еще раз проверить Инструмент типов в шаге 2. Теперь вы должны увидеть «Тип обид» в списке.

6) Вернитесь и попробуйте расширенный поиск снова. Возможно, в этот раз это сработает.

http://rpatterson.net/blog/products.pdbdebugmode-egg

0 голосов
/ 13 октября 2011

Скорее всего, ошибка Ловкости, средство доступа для Title возвращает None, и каталог кеширует это в метаданные / мозг - тогда шаблон задыхается. Обновление до Ловкости 1.0.3 - IIRC должен решить за вас.

...