2011-07-12 13 views
5

हमारे पास नेविगेशन व्यवहार से बाहर निकलने के लिए एक निपुणता सामग्री प्रकार की आवश्यकता है, लेकिन exclude_from_nav फ़ील्ड का डिफ़ॉल्ट मान True होने के लिए आवश्यक है। व्यवहार में plone.app.dexterity.behaviors.exclfromnav.IExcludeFromNavigation यह False पर डिफ़ॉल्ट है।प्लोन में निपुणता व्यवहार में किसी फ़ील्ड के डिफ़ॉल्ट मान को ओवरराइड कैसे करते हैं?

स्पष्ट रूप से मैं अपना खुद का व्यवहार बना सकता हूं जो IExcludeFromNavigation को डिफ़ॉल्ट मान को छोड़कर कॉपी करता है लेकिन मैं सोच रहा था कि IExcludeFromNavigation का उपयोग करने के आधार पर ऐसा करने का कोई तरीका है या नहीं। हमारे पास अन्य सामग्री प्रकार हैं जो IExcludeFromNavigation का उपयोग करते हैं जहां हम इसे False पर डिफ़ॉल्ट करना चाहते हैं।

हम प्लोन 4.1rc3 और निपुणता 1.0

उत्तर

3

मैं इस काम कर रहा है एक plone.directives.form डेकोरेटर का उपयोग कर।

मैंने इसे अपने व्यवहार मॉड्यूल में से एक में जोड़ा है।

from plone.directives.form import default_value 

@default_value(field = IExcludeFromNavigation['exclude_from_nav']) 
def excludeFromNavDefaultValue(data): 
    return data.request.URL.endswith('++add++my_item_type') 

मैं भी configure.zcml में निम्नलिखित बड़े सुराग के लिए मार्टिन

<include package="plone.directives.form" file="meta.zcml" /> 
<include package="plone.directives.form" /> 

<grok:grok package="." /> 

धन्यवाद हालांकि उनके जवाब काफी मेरी समस्या का समाधान नहीं है। यह मुझे एक हैक की तरह लगता है - एक और सुरुचिपूर्ण समाधान अच्छा होगा।

+0

एक और विकल्प कस्टम ऐड फॉर्म पंजीकृत करना होगा और फिर 'फॉर्म' (या यह 'व्यू' का उपयोग करना होगा?) dividinator डिफ़ॉल्ट_value() को केवल उस फ़ॉर्म के लिए ओवरराइड निर्दिष्ट करने के लिए। – optilude

+0

धन्यवाद, मैंने इसे अपने परिदृश्य के लिए उपयोग किया जहां मेरे पास एक ही कंटेनर में दो अलग-अलग ऑब्जेक्ट प्रकार हैं जिन्हें मैं डिफ़ॉल्ट रूप से बाहर करना चाहता हूं। समस्या यह थी कि मैं ऑब्जेक्ट परिभाषाओं पर एक ही सजावट नहीं डाल सका या मुझे कॉन्फ़िगरेशन विवाद शिकायतें मिलेंगी। मैं बस प्रकारों में से एक पर घोषित कर रहा हूं :: वापसी data.request.URL.endswith ('++ add ++ my_item_type') या data.request.URL.endswith ('++ add ++ my_other_type') –

+0

और आपके उदाहरण की तरह मुझे इसे काम करने के लिए संदर्भ पैरामीटर को हटाना पड़ा ... वास्तव में हैकी लगता है। –

5

का उपयोग कर रहे http://plone.org/products/dexterity/documentation/manual/developer-manual/advanced/defaults और http://pypi.python.org/pypi/plone.directives.form#value-adapters, लेकिन मूल रूप से देखें:

@form.default_value(field=IExcludeFromNavigation['exclude_from_nav'], context=IMyType) 
def excludeFromNavDefaultValue(data): 
    return True 

चीयर्स, मार्टिन

+0

मार्टिन। आपके उत्तर के लिए धन्यवाद लेकिन यह काफी नहीं है जो मैं कर रहा हूं। मैं गलत हो सकता हूं लेकिन यहां 'संदर्भ' कंटेनर प्रतीत होता है जिसमें आप आइटम जोड़ रहे हैं और मुझे जोड़े जाने वाले आइटम के प्रकार के आधार पर नियम की आवश्यकता है। मैं 'data.request.URL' के परीक्षण का उपयोग करके एक बदसूरत हैक देख सकता हूं लेकिन कुछ और सुरुचिपूर्ण अच्छा होगा – scarba05

संबंधित मुद्दे