2012-10-30 37 views
5

मैं कुछ समूह बनाए रखने वाले फ़ोल्डर्स को सेट करने का प्रयास कर रहा हूं जिन्हें अन्य समूहों द्वारा नहीं देखा जाना चाहिए। वर्तमान में, मैं प्राप्त करता हूं कि @@ साझाकरण टैब में "उच्च स्तर से विरासत अनुमतियां" चेक-बॉक्स पर क्लिक करके, लेकिन मैं इसे स्वचालित करना चाहता हूं।"उच्च स्तर से विरासत अनुमतियां" को बंद करना प्रोग्रामेटिक रूप से

मुझे प्रलेखन या googling में इसके बारे में कुछ भी नहीं मिला। अंडे की निर्देशिका के चारों ओर खोज करने के बाद मुझे 'ac_inherited_permissions' के बारे में कुछ रोचक चीज़ें मिलीं लेकिन मेरे समाधान के रूप में मुझ पर कुछ भी नहीं निकला।

मैं obj.inherited_permissions = गलत जैसे कुछ करना चाहता हूं, या मुझे जिस भी फ़ंक्शन की आवश्यकता है उसे कॉल करना चाहते हैं।

कोई विचार?

उत्तर

5

साझाकरण टैब केवल स्थानीय भूमिकाओं को प्रभावित करता है। ये आमतौर पर माता-पिता (अधिग्रहित) से विरासत में प्राप्त होते हैं, लेकिन आप ऑब्जेक्ट पर __ac_local_roles_block__ से True पर सेट करके इन्हें स्पष्ट रूप से अवरुद्ध कर सकते हैं।

from Acquisition import aq_base 

aq_base(object).__ac_local_roles_block__ = True 
+0

मैंने सोचा कि यह ऐसा ही कुछ होगा:

सुनिश्चित करें, हालांकि, आप इस unwrapped वस्तु (कोई अधिग्रहण संदर्भ) पर सेट करें। धन्यवाद! – waldopat

+0

मार्टिजन, क्या आप aq_base का उपयोग करने के बारे में चेतावनी पर विस्तार से ध्यान देंगे? – cewing

+0

@ सेविंग: इस मामले में, यह वास्तव में अनावश्यक है; एक विशेषता को सेट करना हमेशा मौजूदा ऑब्जेक्ट पर करता है (यह कहीं और विशेषता को खोजने के लिए श्रृंखला को नहीं चलाएगा और वहां सेट करेगा)। लेकिन स्पष्ट रूप से स्पष्ट से बेहतर है, और जब यह सेट करने के लिए * रीट्रेविंग * विशेषता है, तो आप निश्चित रूप से 'aq_base' (इस विशेष विशेषता के लिए) देखना चाहते हैं। इसलिए स्पष्ट अनचाहे। –