Depois de um Plone 2,5x para Plone 3.x migração, como faço para corrigir o problema kss_generic_macros?
Pergunta
Eu recebo o erro abaixo de vários pontos de vista. Que parece idêntico ao que é descrito aqui neste outros kss_generic_macros postar. Uma resposta é fornecido, que é " Isto foi causado pelo processo de migração 2.5-> 3.0 não adicionar a camada plone_kss a um punhado de nossas capas personalizadas. Quando eu entrei e plone_kss acrescentou à mão a essas peles, ele fixo isso. "
Esta é apenas tão útil. Um exemplo de código ou um ponteiro real como para onde você adicionar plone_kss faria isso muito mais fácil de resolver.
2009-06-24 15:24:28 ERROR Zope.SiteErrorLog 1245871468.060.103936823493 https://nasascience.on.my.mac/humanator-folder/what-is-six-plus-3/base_view
Traceback (innermost last):
Module ZPublisher.Publish, line 119, in publish
Module ZPublisher.mapply, line 88, in mapply
Module ZPublisher.Publish, line 42, in call_object
Module Shared.DC.Scripts.Bindings, line 313, in __call__
Module Shared.DC.Scripts.Bindings, line 350, in _bindAndExec
Module Products.CMFCore.FSPageTemplate, line 216, in _exec
Module Products.CacheSetup.patch_cmf, line 29, in FSPT_pt_render
Module Products.CacheSetup.patch_utils, line 9, in call_pattern
Module Products.CMFCore.FSPageTemplate, line 155, in pt_render
Module Products.CacheSetup.patch_cmf, line 77, in PT_pt_render
Module Products.CacheSetup.patch_utils, line 9, in call_pattern
Module Products.PageTemplates.PageTemplate, line 98, in pt_render
Module zope.pagetemplate.pagetemplate, line 117, in pt_render
- Warning: Macro expansion failed
- Warning: exceptions.KeyError: 'macro'
Module zope.tal.talinterpreter, line 271, in __call__
Module zope.tal.talinterpreter, line 346, in interpret
Module zope.tal.talinterpreter, line 891, in do_useMacro
Module zope.tal.talinterpreter, line 346, in interpret
Module zope.tal.talinterpreter, line 536, in do_optTag_tal
Module zope.tal.talinterpreter, line 521, in do_optTag
Module zope.tal.talinterpreter, line 516, in no_tag
Module zope.tal.talinterpreter, line 346, in interpret
Module zope.tal.talinterpreter, line 536, in do_optTag_tal
Module zope.tal.talinterpreter, line 525, in do_optTag
Module zope.tal.talinterpreter, line 346, in interpret
Module zope.tal.talinterpreter, line 957, in do_defineSlot
Module zope.tal.talinterpreter, line 346, in interpret
Module zope.tal.talinterpreter, line 536, in do_optTag_tal
Module zope.tal.talinterpreter, line 521, in do_optTag
Module zope.tal.talinterpreter, line 516, in no_tag
Module zope.tal.talinterpreter, line 346, in interpret
Module zope.tal.talinterpreter, line 861, in do_defineMacro
Module zope.tal.talinterpreter, line 346, in interpret
Module zope.tal.talinterpreter, line 957, in do_defineSlot
Module zope.tal.talinterpreter, line 346, in interpret
Module zope.tal.talinterpreter, line 536, in do_optTag_tal
Module zope.tal.talinterpreter, line 521, in do_optTag
Module zope.tal.talinterpreter, line 516, in no_tag
Module zope.tal.talinterpreter, line 346, in interpret
Module zope.tal.talinterpreter, line 536, in do_optTag_tal
Module zope.tal.talinterpreter, line 525, in do_optTag
Module zope.tal.talinterpreter, line 346, in interpret
Module zope.tal.talinterpreter, line 949, in do_defineSlot
Module zope.tal.talinterpreter, line 346, in interpret
Module zope.tal.talinterpreter, line 536, in do_optTag_tal
Module zope.tal.talinterpreter, line 521, in do_optTag
Module zope.tal.talinterpreter, line 516, in no_tag
Module zope.tal.talinterpreter, line 346, in interpret
Module zope.tal.talinterpreter, line 861, in do_defineMacro
Module zope.tal.talinterpreter, line 346, in interpret
Module zope.tal.talinterpreter, line 536, in do_optTag_tal
Module zope.tal.talinterpreter, line 521, in do_optTag
Module zope.tal.talinterpreter, line 516, in no_tag
Module zope.tal.talinterpreter, line 346, in interpret
Module zope.tal.talinterpreter, line 891, in do_useMacro
Module zope.tal.talinterpreter, line 346, in interpret
Module zope.tal.talinterpreter, line 536, in do_optTag_tal
Module zope.tal.talinterpreter, line 521, in do_optTag
Module zope.tal.talinterpreter, line 516, in no_tag
Module zope.tal.talinterpreter, line 346, in interpret
Module zope.tal.talinterpreter, line 870, in do_useMacro
Module zope.tales.tales, line 696, in evaluate
- URL: file:/Users/danny/projects/schwa/2.1.0a/trunk/eggs/Products.Archetypes-1.5.10-py2.4.egg/Products/Archetypes/skins/archetypes/base.pt
- Line 22, Column 10
- Expression: <PathExpr standard:u'here/kss_generic_macros/macros/generic_title_view'>
- Names:
{'container': <PloneSite at /msrd>,
'context': <Humanatorquestion at /msrd/humanator-folder/what-is-six-plus-3>,
'default': <object object at 0x1bf528>,
'here': <Humanatorquestion at /msrd/humanator-folder/what-is-six-plus-3>,
'loop': {},
'nothing': None,
'options': {'args': ()},
'repeat': <Products.PageTemplates.Expressions.SafeMapping object at 0x9ea75f8>,
'request': <HTTPRequest, URL=https://nasascience.on.my.mac/humanator-folder/what-is-six-plus-3/base_view>,
'root': <Application at >,
'template': <FSPageTemplate at /msrd/base_view used for /msrd/humanator-folder/what-is-six-plus-3>,
'traverse_subpath': [],
'user': <PloneUser 'admin'>}
Module zope.tales.expressions, line 217, in __call__
Module Products.PageTemplates.Expressions, line 155, in _eval
Module zope.tales.expressions, line 124, in _eval
Module Products.PageTemplates.Expressions, line 82, in boboAwareZopeTraverse
Module OFS.Traversable, line 301, in restrictedTraverse
Module OFS.Traversable, line 269, in unrestrictedTraverse
- __traceback_info__: ([], 'kss_generic_macros')
AttributeError: kss_generic_macros
Solução
Faça o login no ZMI, em seguida, ir para a ferramenta portal_skins. Agora clique na guia "Propriedades". A pele "Plone Default" deve ser algo como isto:
custom
cmfeditions_views
CMFEditions
ChangeSet
kupu_plone
kupu
kupu_tests
archetypes
archetypes_kss
mimetypes_icons
plone_kss
ATContentTypes
ATReferenceBrowserWidget
ResourceRegistries
PasswordReset
gruf
plone_ecmascript
plone_wysiwyg
plone_prefs
plone_portlets
plone_templates
plone_styles
plone_form_scripts
plone_scripts
plone_forms
plone_images
plone_content
plone_login
plone_deprecated
plone_3rdParty
cmf_legacy
Se você não encontrou qualquer um desses você vai precisar adicioná-los. Isso deve resolver o problema.
Outras dicas
Está faltando a camada plone_kss
em suas peles. Vá para a ZMI (via configuração local ou adicionando / gerenciar à sua página Plone), encontrar a ferramenta portal_skins, e verificar suas camadas de pele na guia de propriedades. Certifique-se a camada plone_kss
está listada antes da camada de costume e você deve estar pronto para ir.
No futuro, você pode usar uma ferramenta de linha de comando como Localizar para encontrar métodos de pele faltando; Achei isso um em um buildout usando o seguinte comando:
$ find parts/plone -name kss_generic_macros.*
parts/plone/CMFPlone/skins/plone_kss/kss_generic_macros.pt
Você pode automatizar isso com o seguinte Python Script:
from Products.CMFCore.utils import getToolByName
layer = 'plone_kss'
skins = getToolByName(context, 'portal_skins')
for name in skins.getSkinSelections():
path = skins.getSkinPath(name)
path = [i.strip() for i in path.split(',')]
if layer not in path:
try:
path.insert(path.index('custom') + 1, layer)
except ValueError:
path.append(layer)
skins.addSkinSelection(name, ','.join(path))
Este script faz um loop sobre todas as peles na ferramenta de peles, e irá inserir plone_kss
em qualquer um deles, onde ele estiver ausente; quer apenas depois de a camada custom
, ou no final, se não há nenhuma camada custom
presente.
A razão que você quer que sua camada custom
para ser o primeiro é que esta camada pelo costume (sem trocadilhos) tem versões de ativos de pele personalizada. Se você fosse para personalizar um ativo da camada portal_kss
através da ZMI, em seguida, a versão personalizada será colocada na camada custom
. Como as regras da pele pesquisa vai olhar através da pilha de camadas de cima para baixo, você quer ter certeza de suas versões personalizadas na camada custom
são encontrados antes dos originais nas camadas mais baixas.