2013-02-25 4 views
0

J'utilise un module d'authentification LDAP pour me connecter à mon application django. Cela fonctionne bien pour vous identifier mais je vais avoir du mal avec une fonction qui utilisent de:Authentification LDAP Django en production

request.user.is_authenticated(): 

Cela fonctionne bien sur ma machine dev (également en utilisant ldap), mais la production ne reviendra pas les informations associées à l'utilisateur . En particulier, je récupère un ensemble d'événements basés sur la clé primaire de l'utilisateur.

eventList = Event.objects.filter(employee_id = request.user.pk) 

Les événements existent (ils sont rendus dans une autre vue) et je suis tout à fait sûr que c'est une déclaration. Il est intéressant de noter que même si je suis sous-classé l'utilisateur comme suit, mais les employés sont créés (je l'ai vérifié dans l'interface admin):

class Employee(models.Model): 
    # This field is required. 
    user = models.OneToOneField(User) 
    manager_id = models.ForeignKey('self', related_name = 'employees', null = True) 

    def __unicode__(self): 
    return self.user.username 

def create_user_profile(sender, **kwargs): 
    """When creating a new user, make an employee profile too.""" 
    u = kwargs["instance"] 
    if not Employee.objects.filter(user = u): 
     Employee(user=u).save() 

post_save.connect(create_user_profile, sender = User) 

Quelqu'un pourrait-il aider?

+0

Quels messages d'erreur sont de vous? – reptilicus

+0

En fait, maintenant vous le mentionnez, le modèle est retourné mais il est vide. Donc, je suppose que cela signifie que le problème est avec la requête? –

+0

Je ne pense pas que vous ayez besoin de refondre la requête en liste, il devrait déjà s'agir d'une liste renvoyée par l'ORM de Django. Essayez de supprimer cela et voir ce qui se passe? – reptilicus

Répondre

0

C'était jusqu'à ma requête. Fondamentalement, la requête originale supposait que chaque objet employé et utilisateur a le même PK. C'était correct en développement, mais n'a pas fonctionné en production car les clés ne correspondaient pas.

Remplacement de la requête initiale avec celui ci-dessous régler nos différends:

employee = request.user.employee 
    eventList = Event.objects.filter(employee_id = employee.pk)