2009-06-24 11 views
3

Ich bekomme den Fehler unten auf mehreren Ansichten. Das scheint identisch mit dem, was hier in dieser other kss_generic_macros Post beschrieben wird. Eine Antwort wird geliefert, die lautet: "Dies wurde verursacht, weil der Migrationsvorgang 2.5-> 3.0 die Ebene plone_kss nicht zu einer Handvoll unserer benutzerdefinierten Skins hinzufügt. Als ich Plone_kss von Hand in diese Skins einfügte, wurde das behoben "Wie kann ich nach einer Migration von Plone 2.5x auf Plone 3.x das kss_generic_macros-Problem korrigieren?

Das ist nur so hilfreich. Ein Codebeispiel oder ein echter Zeiger, wo Sie plone_kss hinzufügen, würde dies viel einfacher zu lösen machen.

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 
+0

Nicht wirklich ein Python-Problem, aber ... –

Antwort

4

Melden Sie sich beim ZMI an und gehen Sie dann zum Tool portal_skins. Klicken Sie nun auf die Registerkarte "Eigenschaften". Die „Plone Default“ Haut sollte in etwa so aussehen:.

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 

Wenn Sie irgendwelche von denen sind Sie nicht brauchen werden sie in hinzufügen Das sollte das Problem lösen.

3

Sie vermissen die plone_kss Ebene in Ihren Skins. Gehe zum ZMI (über die Site-Einrichtung oder durch Hinzufügen/Verwalten zu deiner Plone-Homepage), finde das Tool portal_skins und überprüfe deine Skin-Ebenen auf der Registerkarte Eigenschaften. Stellen Sie sicher, dass die Ebene plone_kss vor der benutzerdefinierten Ebene aufgeführt ist, und Sie sollten festgelegt werden, dass sie ausgeführt werden soll.

In Zukunft können Sie ein Befehlszeilenprogramm wie Suchen verwenden, um fehlende Skin-Methoden zu finden; Ich fand diese in einem buildout indem Sie den folgenden Befehl:

$ find parts/plone -name kss_generic_macros.* 
parts/plone/CMFPlone/skins/plone_kss/kss_generic_macros.pt 

Sie dies mit dem folgenden Python-Skript automatisieren:

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)) 

Dieses Skript Schleifen über alle Felle in der Haut Werkzeug, und wird fügen Sie plone_kss in eines von ihnen ein, wo es fehlt; entweder direkt nach der custom Schicht oder am Ende, wenn keine custom Schicht vorhanden ist.

Der Grund, warum Sie möchten, dass Ihre custom Ebene zuerst ist, ist, dass diese Ebene von benutzerdefinierten (kein Wortspiel beabsichtigt) benutzerdefinierte Versionen von Skin-Assets enthält. Wenn Sie ein Asset aus der Ebene portal_kss über das ZMI anpassen möchten, wird die angepasste Version in die Ebene custom eingefügt. Da die Skin-Lookup-Regeln den Layer-Stack von oben nach unten durchlaufen, möchten Sie sicherstellen, dass Ihre benutzerdefinierten Versionen in der Ebene custom vor den Originalen in den unteren Layern gefunden werden.

+0

Martijn, als ich Ihre Lösung ausprobierte, fügte plone_kss entweder vor oder nach Gewohnheit hinzu. – pydanny

+0

das Setzen vor Custom wird natürlich funktionieren, aber bricht die Konvention, dass angepasste Versionen in die benutzerdefinierte Ebene gehen, um das Original zu überschreiben. Indem Sie Ebenen höher stellen, geben Sie ihren Inhalten einen höheren Vorrang, und deshalb sollte die "Gewohnheit" vorzugsweise die erste sein. –

+0

Ich habe meine Antwort mit einer Erklärung aktualisiert, warum die benutzerdefinierte Ebene oben bleiben muss. –