Model Django para manipular a entrada LDAP [closed]

1

Atualmente, estou trabalhando em um projeto que envolve a estrutura Django e OpenLDAP . Mas eu me deparei com um problema.

No meu banco de dados LDAP, tenho uma entrada chamada Contas, com os seguintes atributos:

dn: ou=Accounts,dc=example,dc=ro
objectClass: groupOfNames
objectClass: top
cn: Accounts
member: cn=test1,ou=Accounts,dc=example,dc=ro
member: cn=test2,ou=Accounts,dc=example,dc=ro
member: cn=test3,ou=Accounts,dc=example,dc=ro
... (and so on, about 10 test users)

Para manipular minhas entradas LDAP do Django Models, eu uso o pacote django_ldapdb python. No arquivo models.py no django eu defini as seguintes coisas:

class LDAPEntry():
    base_dn = "ou=Accounts,dc=example,dc=ro"
    object_classes = ["groupOfNames"]

    group_name = CharField(db_column="cn", primary_key=True)
    member_attribute = CharField(db_column="member")

    # methods for displaying the group name(__str__ & __unicode__)

Depois disso, abro um Django Shell e começo a brincar com algumas consultas:

#this returns a instance for the Accounts group
group = LDAPEntry.objects.get(group_name = "Accounts")

#then i try to see the members that are part of this group
group.member

# and this returns the following thing:
u'cn=test1,ou=Accounts,dc=example,dc=ro'

Depois de perceber isso, percebo que o campo de membro, no meu modelo de Django, tem informações sobre apenas o primeiro atributo de membro na minha entrada de contas LDAP, no banco de dados LDAP.

O que eu quero perguntar é: existe uma maneira possível em que eu possa dizer a um campo de modelo do Django para manter múltiplos valores? (Eu quero o meu campo "membro" para armazenar informações sobre todos os membros no grupo de contas, basicamente, mantendo todos os nomes Distingueshed dos usuários).

Muito obrigado.

    
por John 12.12.2013 / 11:15

1 resposta

2

Acontece que a situação pode ser resolvida mudando:

member_attribute = CharField(db_column="member")

para:

member_attribute = ListField(db_column="member")

E, com isso, todos os valores membro na entrada Contas são buscados.

    
por John 12.12.2013 / 12:06

Tags