0

In my view login_user I have authentication using ldap server. It works fine. At first attempt to login I create and objects of Uzytkownik class, it works also (only at first login, not every1). Now when I add some code to add user to specified group it works only after first login. It behaves like django removes user from that group after second attempt to login.

Some code from login_user view:

user = authenticate(username=username, password=password)
    if user is not None:
        if user.is_active:
            prof=user.get_profile()
            prof.stanowisko=user.stanowisko
            prof.tytul_Naukowy=user.tytul
            prof.save()
            try:
                uzytkownik=Uzytkownik.objects.get(username=user)
            except Exception as e:
                g = Group.objects.get(name= settings.DEFAULT_GROUP_NAME) #this 3 lines don't work as I expect
                g.user_set.add(user)   
                g.save()                    
                uzytkownik=Uzytkownik(username=user, tytul_Naukowy=user.tytul, stanowisko=user.stanowisko, imie=user.first_name, nazwisko=user.last_name)
                uzytkownik.save()

            login(request, user)
            return HttpResponseRedirect("/")

Settings.py:

DEFAULT_GROUP_NAME = 'common'

I tried a second method to add group to user with no effect(works only after first login) :

g=Groups.objects.get(name='common')
u=User.objects.get(username=user)
u.groups.add(g)

When I'm logged in and now add logged user to this group and refresh page I see that I'm in that group, but after logout and login I'm not in any group. I have made some changes in user profiles, could it be a reason?

Settings.py:

AUTH_PROFILE_MODULE = 'user.UserProfile'

and my module:

class UserProfile(models.Model):

class Meta:
    verbose_name_plural = 'Profile'

user = models.OneToOneField(User, unique=True)
stanowisko=models.CharField(max_length=50)
tytul_Naukowy=models.CharField(max_length=30)

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


def create_profile(sender, instance, created, **kwargs):
if created:
    profile, created = UserProfile.\
             objects.get_or_create(user=instance)

post_save.connect(create_profile, sender=User)
4

0 回答 0