2012-05-24 4 views
0

Я использую Django Admin Tool, и у меня очень простая модель. Я хочу ограничить доступ к определенному паролю для конкретного пользователя или конкретной группы. Как я могу сделать 3 условия для доступа «Да/Нет/Никогда», и когда у пользователя есть Да + его группа Нет, тогда у него есть доступ, но когда «Да» + «Никогда», то нет. И как я могу заставить его работать с системой разрешений django-admin-tools.Как ограничить доступ к определенным строкам в django

from django.db import models 
from passwords.objects.labels.models import Label 

class Password(models.Model): 
    class Meta: 
     db_table = 'passwords' 

    name = models.CharField(max_length=32) 
    username = models.CharField(max_length=32) 
    password = models.CharField(max_length=32) 
    labels = models.ManyToManyField(Label) 

    def __unicode__(self): 
     return self.name 

ответ

0

Из коробки, Джанго поддерживает только разрешение уровня класса (другие слова, разрешения на таблицы).

Существует поддержка объектно-уровня (на уровне строк) разрешений, но Джанго не приходит с ней реализована из коробки:

разрешений на уровне объектов

основу для определения прав на уровне каждого объекта добавлено . Хотя в этом нет никакой реализации, базовый сервер аутентификации может обеспечить эту реализацию, и будет использоваться django.contrib.auth.models.User. Дополнительную информацию см. В документах проверки подлинности .

Следовательно, существуют сторонние приложения, такие как django-guardian, которые позволяют использовать эту функцию.

0

Поскольку вы работаете с администратором, вы можете переопределить методы и has_delete_permission на ModelAdmin. Но я не могу помочь вам дальше, не зная, как ваши права «Да/Нет/Никогда» прикреплены к пользователю/группе.

UPDATE

Если вы хотите сохранить его тупо просто, лучше всего было бы просто создать группу, «Passwordaccess», например. Затем назначьте всех пользователей, которых вы хотите для этой группы, и назначаете для этой группы права на добавление, изменение и удаление по умолчанию для Password.

Больше ничего не требуется. Любой пользователь, добавленный в эту группу, автоматически наследует разрешения для Password, любой другой пользователь не будет иметь эти разрешения и, следовательно, даже не увидит его в администраторе.

+0

Большое спасибо за помощь, ребята, Да/Нет/Никогда, вероятно, не слишком обидно, потому что я только начинаю изучать Python, так как я могу установить Yes/No, поэтому любой пользователь должен иметь или индивидуальное разрешение или должен быть в группе, которые имеют разрешение на чтение пароля. – user1415982

+0

См. Обновление выше. –

Смежные вопросы