2012-10-30 11 views
5

Próbuję skonfigurować niektóre foldery utrzymywane w grupie, które nie powinny być widoczne dla innych grup. Obecnie osiągam to, klikając pole wyboru "Dziedzicz uprawnienia z wyższych poziomów", klikając zakładkę udostępniania @@, ale chciałbym to zautomatyzować.Wyłączanie "Dziedzicz uprawnienia z wyższych poziomów" programowo

Nie znalazłem nic na ten temat w dokumentacji lub Google. Po przejrzeniu katalogu jajek znalazłem kilka interesujących rzeczy na temat "ac_inherited_permissions", ale nic nie wyskoczyło na mnie jako moje rozwiązanie.

Chciałbym zrobić coś takiego jak obj.inherited_permissions = False lub zadzwonić do dowolnej funkcji, której potrzebuję.

Wszelkie pomysły?

Odpowiedz

5

Karta udostępniania wpływa tylko na role lokalne. Zwykle są dziedziczone po rodzicach (nabyte), ale można je jawnie zablokować, ustawiając __ac_local_roles_block__ na True na obiekcie.

Upewnij się jednak, ustawisz na nieowiniętym obiektu (brak kontekstu): nabycie

from Acquisition import aq_base 

aq_base(object).__ac_local_roles_block__ = True 
+0

myślałem, że będzie to coś podobnego. Dziękuję Ci! – waldopat

+0

Martijn, czy mógłbybyś opracować ostrzeżenie o używaniu aq_base? – cewing

+0

@cewing: W tym przypadku jest to w rzeczywistości zbędne; ustawianie atrybutu zawsze powoduje to w bieżącym obiekcie (nie przejdzie ono w górę łańcucha, aby znaleźć atrybut gdzie indziej i ustawić go w tym miejscu). Ale jawność jest lepsza niż niejawna, a gdy * cofamy * atrybut do sprawdzenia, czy jest ustawiony, zdecydowanie chcesz spojrzeć na 'aq_base' (dla tego konkretnego atrybutu). Stąd wyraźne rozpakowanie. –

Powiązane problemy