2011-12-05 19 views
8

Poszukuję sposobu dostosowania administracji Django do obsługi uprawnień opartych na grupie użytkowników.Administrator django - uprawnienia grupowe do edytowania lub przeglądania modeli

Na przykład właśnie utworzyłem grupę Developers, teraz utworzyłem także model Tickets, w którym AdminModel określa sposób wyświetlania danych.

Chciałbym, aby ten model był widoczny tylko dla programistów i ukryty dla siebie nie w tej grupie (np. Filtruj widok na podstawie grup). Przeczytałem wiele dokumentacji, ale nie mogłem znaleźć i zrozumieć, co należy zrobić, aby działało.

Ze względów bezpieczeństwa należałoby również sprawdzić grupy użytkowników w czasie wykonywania podczas dodawania-usuwania obiektów dla określonego modelu (ten, który ukryłem dla osób spoza grupy programistów), w przeciwnym razie musiałby tylko znać Adres URL do używania tego modelu: s

Wygląda to na proste zadanie, ale może brakuje mi czegoś ... jakiegokolwiek oprogramowania pośredniego innej firmy, lub po prostu sposobu na zrobienie tego? W razie potrzeby mogę również edytować widoki administracyjne, ale muszę wiedzieć, co należy zrobić.

Dziękuję :-)

Odpowiedz

12

ModelAdmin ma trzy sposoby czynienia ze zgodą użytkownika: has_add_permission, has_change_permission i has_delete_permission. Wszystkie trzy powinny zwrócić wartość boolean (True/False).

Więc można zrobić coś takiego:

class TicketAdmin(admin.ModelAdmin): 
    ... 
    def has_add_permission(self, request): 
     return request.user.groups.filter(name='Developers').exists() 

    def has_change_permission(self, request, obj=None): 
     return request.user.groups.filter(name='Developers').exists() 

    def has_delete_permission(self, request, obj=None): 
     return request.user.groups.filter(name='Developers').exists() 

Kiedy False zwracany jest z jednym z nich, to wyniki w 403..

+0

Cool! Nie wiedziałem, że nie było łatwego haka administratora do obsługi niestandardowych uprawnień! –

+0

Wow! Wydaje się to tak łatwe do przeprowadzenia :-) Podobne pytania nie dały tak łatwego do zrozumienia rozwiązania. Dziękuję bardzo! –

+0

Niesamowite, co dokładnie wskazuje na to, co pracuję. –

Powiązane problemy