def ensure_social_user(self, provider, user_id, username, extra_data=None, firstname=None, lastname=None): from social.apps.django_app.default.models import UserSocialAuth import uuid try: social_auth = UserSocialAuth.objects.get(provider=provider, uid=user_id) user = social_auth.user except UserSocialAuth.DoesNotExist: internal_username = username while User.objects.filter(username=internal_username).exists(): internal_username = username + uuid.uuid4().hex[:16] user = User.objects.create(username=internal_username, first_name=firstname or '', last_name=lastname or '') social_auth = UserSocialAuth(user=user, provider=provider, uid=user_id, extra_data=extra_data or {}) social_auth.save() return user, social_auth
def ensure_social_user(self, provider, user_id, username, extra_data=None, firstname=None, lastname=None): from social.apps.django_app.default.models import UserSocialAuth import uuid try: social_auth = UserSocialAuth.objects.get( provider=provider, uid=user_id) user = social_auth.user except UserSocialAuth.DoesNotExist: internal_username = username while User.objects.filter(username=internal_username).exists(): internal_username = username + uuid.uuid4().hex[:16] user = User.objects.create( username=internal_username, first_name=firstname or '', last_name=lastname or '') social_auth = UserSocialAuth( user=user, provider=provider, uid=user_id, extra_data=extra_data or {} ) social_auth.save() return user, social_auth
def setUp(self): provider = 'facebook' self.user = User.objects.create_user(email='*****@*****.**', password='******', username="******") self.user = User.objects.get(pk=self.user.pk) uid = '662706953856122' extra_data = '{"expires": "5108950", "id": "662706953856122", "access_token": "CAAH4lDiSMqkBAJWOEsle5ISozhx5xkPIF2ZA2sCpHsn4tIbR9WdYyw9ZAIBQN4XVMddWoXwvFNDrUZB8RSJcNJulE4byJn2Vnxffz9qyLPmz0lVakSZCqbPN2U6BzV3WPGZBl1ro5DvkKJzhRIOtyFy3Oi1yyvJjEk4f4bFIVCTN7VoJ2t1EdCHZBBG6uNZBnqiUj1vhIwOepnEHWkT2rZBZA"}' social_auth = UserSocialAuth(user=self.user, provider=provider, uid=uid, extra_data=extra_data) social_auth.save() self.user_friend = User.objects.create_user(email='*****@*****.**', password='******', username="******") self.user_friend = User.objects.get(pk=self.user_friend.pk) uid = '10206250137793732' extra_data = '{"expires": "5183999", "id": "10206250137793732", "access_token": "CAAH4lDiSMqkBAJ4rz1HutjMkUv7gg3Blc3CR7caKWPTXwWQwoVvaleg4CWnJopnxRwoXl83JkbOZACRNeenEasyIrHOKKwQTieL9s9SaxZCbEqRZBwsC9StEn686dgshAqqtIly1ojrZBR7PSxXb9klwm0qg09qSqal98ZCZBkyGpdihlSzjfPqf7MpYR2IgejdEK9ScDzQiyeKpyQQ6ZBS"}' self.social_auth_friend = UserSocialAuth(user=self.user_friend, provider=provider, uid=uid, extra_data=extra_data) self.social_auth_friend.save() self.user_no_friend = User.objects.create_user(email='*****@*****.**', password='******', username="******") self.user_no_friend = User.objects.get(pk=self.user_no_friend.pk) uid = '10153139013369780' extra_data = '{"expires": "5183999", "id": "10153139013369780", "access_token": "CAAH4lDiSMqkBACz9b3PYRoSgsxRUx19cdxxR8U5BWGRgVHlRwdHIL5HtMsCvlNaZBbZBK4qgr8AUPZAZBZCjIjPfjapLbyBDcelLi3rRAbGeImR8tuiK8naRQVW6sqTwP5GgZAX5BqIwFKZAlTgcCD2PzUsymZByJqld1UuSQVzMugM5V5yc9mKCgXJqhRy62MNULbZAQ0ZB543mOZAryBbZB0sn"}' social_auth = UserSocialAuth(user=self.user_no_friend, provider=provider, uid=uid, extra_data=extra_data) social_auth.save() self.url = '/api/facebook/friend/'
def save(self, profile_request): user = User.objects.create_user( username=self.cleaned_data['username'], email=self.cleaned_data['email'], first_name=self.cleaned_data['first_name'], last_name=self.cleaned_data['last_name'], ) user.password = profile_request.password user.is_active = self.cleaned_data['is_active'] user.is_staff = self.cleaned_data['is_staff'] user.is_superuser = self.cleaned_data['is_superuser'] user.groups = self.cleaned_data['groups'] user.save() if profile_request.provider and profile_request.uid: social = UserSocialAuth( user=user, provider=profile_request.provider, uid=profile_request.uid, ) social.save() user_profile = UserProfile.objects.get(user=user) user_profile.email_visible = self.cleaned_data['email_visible_to_others'] user_profile.phone_number = self.cleaned_data['phone_number'] user_profile.phone_visible = self.cleaned_data['phone_visible_to_others'] user_profile.status = self.cleaned_data['status'] user_profile.save() user_profile.current_room = self.cleaned_data['current_room'] user_profile.former_rooms = self.cleaned_data['former_rooms'] user_profile.former_houses = self.cleaned_data['former_houses'] user_profile.save() return user
def get_user_id(auth_data): provider = auth_data['provider'] uid = auth_data['uid'] logger.debug('uid = {}'.format(uid)) user_social_auth = UserSocialAuth.get_social_auth(provider, uid) if user_social_auth: user = YMUser.objects.get(id=user_social_auth.user_id) else: user = YMUser() if 'email' in auth_data: user.email = auth_data['email'] if 'username' in auth_data: user.username = auth_data['username'] if 'first_name' in auth_data: user.first_name = auth_data['first_name'] if 'last_name' in auth_data: user.last_name = auth_data['last_name'] if 'picture' in auth_data: user.icon_url = auth_data['picture'] if 'locale' in auth_data: user.locale = auth_data['locale'] # logger.debug('user save called...') user.save() if user_social_auth: return (user.id, False) user_social_auth = UserSocialAuth(user_id=user.id, provider=provider, uid=uid, extra_data=auth_data) user_social_auth.save() return (user.id, True)
def create_users(): User.objects.exclude(pk=1).delete() for pk, fields in users.iteritems(): if pk != 1: if fields['email'] != '': existing = User.objects.filter(email = fields['email']) if existing.count() > 0: ou = existing[0] if ou.is_active == False and fields['is_active'] == True: replace_users[ou.pk] = pk for k,v in replace_users.iteritems(): if v == ou.pk: replace_users[k] = pk ou.delete() elif ou.is_active == True and fields['is_active'] == False: replace_users[pk] = ou.pk for k,v in replace_users.iteritems(): if v == pk: replace_users[k] = ou.pk continue else: replace_users[ou.pk] = pk for k,v in replace_users.iteritems(): if v == ou.pk: replace_users[k] = pk ou.delete() #print "email:", fields['email'] nu = User(pk=pk) nu.username = fields['username'] if fields['email']: nu.email = fields['email'] nu.status = 1 nu.password = fields['password'] nu.full_name = fields['profile']['full_name'] nu.message = fields['profile']['message'] nu.is_active = fields['is_active'] nu.is_staff = fields['is_staff'] nu.is_superuser = fields['is_superuser'] nu.comment_count = fields['profile']['comment_count'] nu.dateo_count = fields['profile']['item_count'] nu.vote_count = fields['profile']['vote_count'] nu.client_domain = datea nu.save() joined = date_parser(fields['date_joined']) lastlog = date_parser(fields['last_login']) User.objects.filter(pk=nu.pk).update(date_joined=joined, created=joined, last_login=lastlog) for pk, fields in usersSocial.iteritems(): if fields['user'] != 1: nusoc = UserSocialAuth(pk=pk) nusoc.provider = fields['provider'] nusoc.uid = fields['uid'] nusoc.user_id = get_user(int(fields['user'])) nusoc.extra_data = fields['extra_data'] nusoc.save()
def setUp(self): user = User.objects.create_user(username='******', email='*****@*****.**', password='******') user_social_auth = UserSocialAuth() user_social_auth.provider = 'evernote-sandbox' user_social_auth.uid = '596560' user_social_auth.extra_data = '{"access_token": {"edam_webApiUrlPrefix": "https://sandbox.evernote.com/shard/s1/", "edam_shard": "s1", "oauth_token": "S=s1:U=91a50:E=158f7ee9efa:C=151a03d7140:P=185:A=koichi-ezato-3816:V=2:H=1a4e5efcc8f63951e17852d0c8019cab", "edam_expires": "1481628360442", "edam_userId": "596560", "edam_noteStoreUrl": "https://sandbox.evernote.com/shard/s1/notestore"}, "expires": 1481628360, "store_url": "https://sandbox.evernote.com/shard/s1/notestore", "oauth_token": "S=s1:U=91a50:E=158f7ee9efa:C=151a03d7140:P=185:A=koichi-ezato-3816:V=2:H=1a4e5efcc8f63951e17852d0c8019cab"}' user_social_auth.user = user user_social_auth.save()
def get_user_id(auth_data): provider = auth_data['provider'] uid = auth_data['uid'] user = UserSocialAuth.get_social_auth(provider, uid) if user: return user.id user = YMUser() if 'email' in auth_data: user.email = auth_data['email'] if 'username' in auth_data: user.username = auth_data['username'] if 'first_name' in auth_data: user.first_name = auth_data['first_name'] if 'last_name' in auth_data: user.last_name = auth_data['last_name'] user.save() user_social_auth = UserSocialAuth(user_id = user.id, provider = provider, uid = uid, extra_data = auth_data) user_social_auth.save() return user.id
def create_links(self): """ Create all needed links to Django and/or UserSocialAuth. """ extra_data = json.loads(self.extra_data) username = extra_data.get( 'lis_person_name_full', extra_data.get('lis_person_sourcedid', self.user_id) ) first_name = extra_data.get('lis_person_name_given', '') last_name = extra_data.get('lis_person_name_family', '') email = extra_data.get('lis_person_contact_email_primary', '').lower() defaults = { 'first_name': first_name, 'last_name': last_name, } if email: defaults['email'] = email social = UserSocialAuth.objects.filter( provider='email', uid=email ).first() if social: django_user = social.user else: django_user = User.objects.filter(email=email).first() if not django_user: django_user, created = User.objects.get_or_create( username=username, defaults=defaults ) social = UserSocialAuth( user=django_user, provider='email', uid=email, extra_data=extra_data ) social.save() else: django_user, created = User.objects.get_or_create( username=username, defaults=defaults ) self.django_user = django_user self.save()
def test__email(self): job = running_jobs.pop(0) test_project = Project(collab=job["collab_id"], context=uuid4()) test_project.save() test_quota = Quota(project=test_project, platform=job["hardware_platform"], usage=0, limit=1000, units="foo-hours") test_quota.save() if USE_MOCKS: user = User(username="******", email="*****@*****.**") user.save() sa = UserSocialAuth(user=user, uid=job['user_id']) sa.save() log = "\n".join(str(x) for x in range(105)) log_response = self.client.put("/api/v2/log/{}".format(job["id"]), data=json.dumps({"content": log}), content_type="application/json") self.assertEqual(log_response.status_code, 201) job['timestamp_submission'] = job['timestamp_submission'].isoformat() job['status'] = "finished" job["provenance"]["version"] = 123 job["resource_usage"] = 23 job['hardware_config']["resource_allocation_id"] = test_quota.pk resource_uri = "/api/v2/queue/{}".format(job["id"]) response = self.client.put(resource_uri, data=json.dumps(job), content_type="application/json") self.assertEqual(response.status_code, 204) message = mail.outbox[0] self.assertEqual(message.to, ["*****@*****.**"]) self.assertEqual(message.subject, "[HBP Neuromorphic] job {} finished".format(job["id"])) self.assertIn("Job {} finished".format(job["id"]), message.body) self.assertIn("0\n1\n2\n3\n4\n5\n6\n7\n8\n9\n", message.body) self.assertIn("27\n28\n29\n\n. . .\n\n35\n36\n37", # cut at :30 and -70: message.body) self.assertIn("95\n96\n97\n98\n99\n100\n101\n102\n103\n104", message.body) self.assertIn("https://collab.humanbrainproject.eu/#/collab/{}/nav/{}?state=job.{}".format(job["collab_id"], job["provenance"]["collaboratory"]["nav_item"], job["id"]), message.body)
def create_links(self): """ Create all needed links to Django and/or UserSocialAuth. """ extra_data = json.loads(self.extra_data) username = extra_data.get( 'lis_person_name_full', extra_data.get('lis_person_sourcedid', self.user_id)) first_name = extra_data.get('lis_person_name_given', '') last_name = extra_data.get('lis_person_name_family', '') email = extra_data.get('lis_person_contact_email_primary', '').lower() defaults = { 'first_name': first_name, 'last_name': last_name, } if email: defaults['email'] = email social = UserSocialAuth.objects.filter(provider='email', uid=email).first() if social: django_user = social.user else: django_user = User.objects.filter(email=email).first() if not django_user: django_user, created = User.objects.get_or_create( username=username, defaults=defaults) social = UserSocialAuth(user=django_user, provider='email', uid=email, extra_data=extra_data) social.save() else: django_user, created = User.objects.get_or_create( username=username, defaults=defaults) self.django_user = django_user self.save()
class UserResourceTest(ResourceTestCase): def setUp(self): provider = 'facebook' self.user = User.objects.create_user(email='*****@*****.**', password='******', username="******") self.user = User.objects.get(pk=self.user.pk) uid = '662706953856122' extra_data = '{"expires": "5108950", "id": "662706953856122", "access_token": "CAAH4lDiSMqkBAJWOEsle5ISozhx5xkPIF2ZA2sCpHsn4tIbR9WdYyw9ZAIBQN4XVMddWoXwvFNDrUZB8RSJcNJulE4byJn2Vnxffz9qyLPmz0lVakSZCqbPN2U6BzV3WPGZBl1ro5DvkKJzhRIOtyFy3Oi1yyvJjEk4f4bFIVCTN7VoJ2t1EdCHZBBG6uNZBnqiUj1vhIwOepnEHWkT2rZBZA"}' social_auth = UserSocialAuth(user=self.user, provider=provider, uid=uid, extra_data=extra_data) social_auth.save() self.user_friend = User.objects.create_user(email='*****@*****.**', password='******', username="******") self.user_friend = User.objects.get(pk=self.user_friend.pk) uid = '10206250137793732' extra_data = '{"expires": "5183999", "id": "10206250137793732", "access_token": "CAAH4lDiSMqkBAJ4rz1HutjMkUv7gg3Blc3CR7caKWPTXwWQwoVvaleg4CWnJopnxRwoXl83JkbOZACRNeenEasyIrHOKKwQTieL9s9SaxZCbEqRZBwsC9StEn686dgshAqqtIly1ojrZBR7PSxXb9klwm0qg09qSqal98ZCZBkyGpdihlSzjfPqf7MpYR2IgejdEK9ScDzQiyeKpyQQ6ZBS"}' self.social_auth_friend = UserSocialAuth(user=self.user_friend, provider=provider, uid=uid, extra_data=extra_data) self.social_auth_friend.save() self.user_no_friend = User.objects.create_user(email='*****@*****.**', password='******', username="******") self.user_no_friend = User.objects.get(pk=self.user_no_friend.pk) uid = '10153139013369780' extra_data = '{"expires": "5183999", "id": "10153139013369780", "access_token": "CAAH4lDiSMqkBACz9b3PYRoSgsxRUx19cdxxR8U5BWGRgVHlRwdHIL5HtMsCvlNaZBbZBK4qgr8AUPZAZBZCjIjPfjapLbyBDcelLi3rRAbGeImR8tuiK8naRQVW6sqTwP5GgZAX5BqIwFKZAlTgcCD2PzUsymZByJqld1UuSQVzMugM5V5yc9mKCgXJqhRy62MNULbZAQ0ZB543mOZAryBbZB0sn"}' social_auth = UserSocialAuth(user=self.user_no_friend, provider=provider, uid=uid, extra_data=extra_data) social_auth.save() self.url = '/api/facebook/friend/' def test_post(self): response = self.client.post(self.url) self.assertEqual(405, response.status_code) def test_get_without_parameters(self): response = self.client.get(self.url, format='json') self.assertEqual(404, response.status_code) def test_get_only_email_parameter(self): response = self.client.get(self.url, {'email': '*****@*****.**'}, format='json') self.assertEqual(404, response.status_code) def test_get_only_email_friend_parameter(self): response = self.client.get(self.url, {'email_friend': '*****@*****.**'}, format='json') self.assertEqual(404, response.status_code) def test_get_with_both_parameters_user_no_exist(self): response = self.client.get(self.url, {'email': '*****@*****.**', 'email_friend': '*****@*****.**'}, format='json') self.assertEqual(404, response.status_code) def test_get_with_both_parameter_user_exist(self): response = self.client.get(self.url, {'email': self.user.email, 'email_friend': self.user_friend.email}, format='json') self.assertEqual(200, response.status_code) content = response.content expected = {'objects': [{'resource_uri': '', 'value': True}]} self.assertEqual(expected, json.loads(content)) def test_get_with_both_parameter_user_no_friend(self): response = self.client.get(self.url, {'email': self.user.email, 'email_friend': self.user_no_friend.email}, format='json') self.assertEqual(200, response.status_code) content = response.content expected = {'objects': [{'resource_uri': '', 'value': False}]} self.assertEqual(expected, json.loads(content)) def test_get_with_both_parameter_friend_no_facebook(self): self.social_auth_friend.delete() response = self.client.get(self.url, {'email': self.user.email, 'email_friend': self.user_friend.email}, format='json') self.assertEqual(404, response.status_code)