Beispiel #1
0
    def get_redirect_url(self, **kwargs):
        """ Generate the github profile and redirect to login """
        if "code" not in self.request.GET:
            raise Exception("Invalid GitHub callback: %s", self.request.GET)
        token = github.get_github_access_token(
            code=self.request.GET["code"])

        user_profile = github.get_github_user_profile(token=token)
        username = user_profile["user"]["login"]
        github_results = GitHub.objects.filter(username=username)
        if not github_results:
            # Assuming this is a new user
            profile = GitHub.populate_from_user_profile(user_profile)
            user = User.create_from_profile(profile)
            user.save()
            profile.user = user
            profile.save()
        else:
            profile = github_results[0]
            user = profile.user
        # MAN, this is a dirty, dirty hack. Seriously Django?
        user.backend = 'django.contrib.auth.backends.ModelBackend'
        user.save()
        login(self.request, user)
        return "/login"
Beispiel #2
0
 def test_new_user(self):
     """ Test creating a new user from a profile. """
     profile = Testing(name="Testing Roger", email="*****@*****.**",
         is_default=True)
     user = User.create_from_profile(profile)
     user.set_password("foobar")
     user.save()
     profile.user = user
     profile.save()
     self.assertEqual(user.email, "*****@*****.**")
     self.assertEqual(user.first_name, "Testing")
     self.assertEqual(user.last_name, "Roger")
     self.assertEqual(user.profile.id, profile.id)
Beispiel #3
0
    def save(self, force_insert=False, force_update=False, commit=True):
        """ Create a new user and new default profile. """
        new_profile = super(RegistrationForm, self).save(commit=False)
        if not new_profile.id:
            new_user = User.create_from_profile(new_profile)
            new_user.set_password(self.data.get("password"))
            new_user.save()

            new_profile.user = new_user
            new_profile.is_default = True

        if commit:
            new_profile.save()
        return new_profile