Esempio n. 1
0
    def save_and_login(self, request):
        'Create this user in the database, log that user in, and return the Profile'
        
        first_name = self.cleaned_data['first_name']
        last_name = self.cleaned_data['last_name']

        #username = defaultfilters.slugify(self.cleaned_data['email'])[:30]
        username = Profile.objects.unique_username(first_name, last_name)
        email = self.cleaned_data['email']
        password = self.cleaned_data['password']

        new_user = User.objects.create_user(username, email, password)
        new_user.first_name = first_name
        new_user.last_name = last_name
        new_user.save()

        geuser = Profile(user = new_user, timezone=self.cleaned_data['timezone'])

        referer = None
        referer_id = None
        if 'f' in request.GET:
            referer_id = request.GET['f']
        elif 'f' in request.COOKIES:
            referer_id = request.COOKIES['f']
        if referer_id:
            try:
                referer = Profile.objects.get(pk = long(referer_id))
                referer.add_participation_points(points=5)
                referer.save()

                geuser.referer = referer
            except (Profile.DoesNotExist, ValueError):
                pass
        geuser.save()

        if self.cleaned_data['picture']:
            relative_pic_name = save_picture(geuser, self.cleaned_data['picture'])
            geuser.avatar = relative_pic_name
        #else:
        #    relative_pic_name = save_gravatar(geuser)

        geuser.save()
        
        if self.cleaned_data['group']:
            group_id = self.cleaned_data['group']
            group = Group.objects.get(pk = group_id)
            geuser.groups.add(group)

        user = authenticate(username=new_user.username, password=password)
        login(request, user)

        return geuser