2011-12-05 19 views
8

Tôi đang tìm kiếm một cách để tùy chỉnh Quản trị Django để hỗ trợ quyền dựa trên nhóm người dùng.django admin - quyền nhóm để chỉnh sửa hoặc xem mô hình

Ví dụ: tôi vừa tạo nhóm Nhà phát triển, bây giờ tôi cũng đã tạo mô hình Vé, với AdminModel để chỉ định cách liệt kê dữ liệu.

Tôi muốn mô hình này chỉ hiển thị bởi Nhà phát triển và ẩn với nhau không thuộc nhóm này (ví dụ: lọc chế độ xem dựa trên nhóm). Tôi đã đọc rất nhiều tài liệu, nhưng thực sự không thể tìm thấy và hiểu phải làm gì để nó hoạt động. Vì mục đích bảo mật, tôi cũng cần phải kiểm tra các nhóm người dùng trong thời gian chạy khi thêm-xóa các đối tượng cho một mô hình cụ thể (mô hình tôi đã ẩn cho những người bên ngoài nhóm nhà phát triển), nếu không nó sẽ chỉ cần biết URL để sử dụng mô hình: s

Có vẻ như một công việc đơn giản, nhưng có thể tôi đang thiếu thứ gì đó ... bất kỳ phần mềm trung gian bên thứ ba nào, hoặc chỉ là một cách để làm điều đó? Tôi cũng sẵn sàng chỉnh sửa chế độ xem quản trị nếu cần, nhưng tôi cần biết phải làm gì.

Cảm ơn bạn :-)

Trả lời

12

ModelAdmin có ba phương pháp đối phó với sự cho phép người sử dụng: has_add_permission, has_change_permissionhas_delete_permission. Tất cả ba phải trả lại boolean (True/False).

Vì vậy, bạn có thể làm điều gì đó như:

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

Khi False được trả về từ một trong số này, nó kết quả trong một 403 Forbidden.

+0

Tuyệt! Không biết có một móc quản trị dễ dàng để xử lý quyền tùy chỉnh! –

+0

Wow! Điều này có vẻ rất dễ thực hiện :-) Các câu hỏi quen thuộc không có giải pháp dễ hiểu. Cảm ơn bạn rất nhiều !! –

+0

tuyệt vời đó là chỉ chính xác về những gì tôi đang làm việc –

Các vấn đề liên quan