def sync_user(user, userdata):
    """Overwrite user details with data from the remote auth server"""

    for k in ['email', 'first_name', 'last_name']:
        if getattr(user, k) != userdata[k]:
            setattr(user, k, userdata[k])

    user.save()

    try:
        from allauth.account.models import EmailAddress
    except ImportError:
        return

    # Sync email address list
    for e in user.emailaddress_set.all():
        if e.email not in userdata['email_addresses']:
            e.delete()

    for e in userdata['email_addresses']:
        if user.emailaddress_set.filter(email=e).exists():
            continue
        emailaddress = EmailAddress(email=e)
        emailaddress.save()
        user.emailaddress_set.add(emailaddress)
 def _add_fake_data_to_courses(self, num):
     # create a pool of instructors
     instructor_data = [
         {'first_name': 'first', 'last_name': 'user', 'username': '******', 'email': '*****@*****.**'},
         {'first_name': 'second', 'last_name': 'user', 'username': '******', 'email': '*****@*****.**'},
         {'first_name': 'third', 'last_name': 'user', 'username': '******', 'email': '*****@*****.**'},
         {'first_name': 'fourth', 'last_name': 'user', 'username': '******', 'email': '*****@*****.**'},
         {'first_name': 'fifth', 'last_name': 'user', 'username': '******', 'email': '*****@*****.**'},
     ]
     instructors = []
     for instructor_datum in instructor_data:
         user = User.objects.create_user(instructor_datum['username'], email=instructor_datum['email'], password="******")
         email_address = EmailAddress(user=user, email=instructor_datum['email'], verified=True, primary=True)
         user.first_name = instructor_datum['first_name']
         user.last_name = instructor_datum['last_name']
         user.save()
         email_address.save()
         instructors.append(user)
         
     for idx in xrange(num):
         course = Course(
             instructor=instructors[idx % len(instructor_data)], 
             title='sample title ' + str(idx),
             slug='sample-title-' + str(idx),
             description=('sample description ' + str(idx) + '\t') * 25,
             is_public = True if idx % 2 == 0 else False,
             popularity=0
         )
         course.save()
         self._generate_course_pages(course)
Exemple #3
0
    def _add_user(self, userdata):
        email = userdata['Email']
        username = userdata['Username']

        user_exists = User.objects.filter(
            models.Q(email=email)
            | models.Q(username=username))

        email_exists = EmailAddress.objects.filter(email=email)

        if user_exists or email_exists:
            print('Skipping user {} <{}>'.format(username, email))
        else:
            user = User(
                username=username,
                email=email,
                date_joined=userdata['Creation date'],
                password="******" + userdata['Password hash'],
            )
            user.save()
            email = EmailAddress(
                user=user,
                email=userdata['Email'],
                verified=True,
                primary=True,
            )
            email.save()
Exemple #4
0
def email(save=False, **kwargs):
    if "user" not in kwargs:
        kwargs["user"] = user(save=True)
    if "email" not in kwargs:
        kwargs["email"] = "%s@%s.com" % (get_random_string(), get_random_string())
    email = EmailAddress(**kwargs)
    if save:
        email.save()
    return email
Exemple #5
0
def email(save=False, **kwargs):
    if 'user' not in kwargs:
        kwargs['user'] = user(save=True)
    if 'email' not in kwargs:
        kwargs['email'] = '%s@%s.com' % (random_str(), random_str())
    email = EmailAddress(**kwargs)
    if save:
        email.save()
    return email
Exemple #6
0
 def test_valid_form(self):
     email = EmailAddress(user=self.user, email=self.user.email,
                          verified=True, primary=True)
     email.save()
     form = {
         'login': self.user.email,
         'password': '******',
     }
     response = self.client.post(
         reverse('account_login'),
         form, follow=True
     )
     self.assertRedirects(response, reverse('dashboard'))
Exemple #7
0
 def test_form_with_valid_username(self):
     # Should error as we only accept email addresses now
     email = EmailAddress(user=self.user, email=self.user.email,
                          verified=True, primary=True)
     email.save()
     form = {
         'login': self.user.username,
         'password': '******',
     }
     response = self.client.post(
         reverse('account_login'), form, follow=True
     )
     self.assertEqual(response.status_code, 200)
     self.assertIn('Enter a valid email address', response.content)
Exemple #8
0
 def extract_email_addresses(self, data):
     ret = []
     email = data.get('email')
     if email and data.get('verified_email'):
         ret.append(EmailAddress(email=email,
                    verified=True,
                    primary=True))
     return ret
Exemple #9
0
    def extract_email_addresses(self, data):
        email_addresses = []
        email = data.get("email")

        if email and data.get("email_verified"):
            email_addresses.append(
                EmailAddress(email=email, verified=True, primary=True))
        return email_addresses
Exemple #10
0
 def extract_email_addresses(self, data):
     # a salesforce user must have an email, but it might not be verified
     email = EmailAddress(
         email=data.get("email"),
         primary=True,
         verified=data.get("email_verified"),
     )
     return [email]
Exemple #11
0
    def handle(self, *args, **options):
        john = get_user_model().objects.create_user(
            username='******',
            email='*****@*****.**',
            first_name='john',
            last_name='wick',
            fiscal_code='1111111111111111',
            registration_number='111111',
            password='******')
        john.save()

        EmailAddress(verified=True,
                     primary=True,
                     user_id=john.id,
                     email=john.email).save()

        tony = get_user_model().objects.create_user(
            username='******',
            email='*****@*****.**',
            first_name='tony',
            last_name='stark',
            fiscal_code='2222222222222222',
            registration_number='222222',
            password='******')
        tony.save()
        EmailAddress(verified=True,
                     primary=True,
                     user_id=tony.id,
                     email=tony.email).save()

        luke = get_user_model().objects.create_user(
            username='******',
            email='*****@*****.**',
            first_name='luke',
            last_name='skywalker',
            fiscal_code='3333333333333333',
            registration_number='333333',
            password='******')
        luke.save()
        EmailAddress(verified=True,
                     primary=True,
                     user_id=luke.id,
                     email=luke.email).save()

        self.stdout.write(
            self.style.SUCCESS('College students accounts created'))
Exemple #12
0
 def handle(self, *args, **options):
     EmailAddress.objects.all().delete()
     users = get_user_model().objects.exclude(email__isnull=True, emailaddress__isnull=False)
     emails = []
     for user in users:
         emails.append(EmailAddress(user=user, email=user.email, verified=True, primary=True))
     EmailAddress.objects.bulk_create(emails, batch_size=200)
     self.stdout.write("Verified %i email addresses.\n" % len(emails))
Exemple #13
0
def create_user_profile(sender, instance, created, **kwargs):
    if created:
        Perfil.objects.create(user=instance)
        if not EmailAddress.objects.filter(email=instance.email):
            address = EmailAddress(user=instance,
                                   email=instance.email,
                                   verified=True,
                                   primary=True)
Exemple #14
0
 def extract_email_addresses(self, data):
     ret = []
     email = data.get('email')
     if email:
         # If there's an email address, facebook has verified it.
         # https://stackoverflow.com/questions/14280535/is-it-possible-to-check-if-an-email-is-confirmed-on-facebook
         ret.append(EmailAddress(email=email, verified=True, primary=True))
     return ret
Exemple #15
0
 def extract_email_addresses(self, data):
     ret = []
     email = data.get('email')
     if email:
         # data['verified'] does not imply the email address is
         # verified.
         ret.append(EmailAddress(email=email, verified=False, primary=True))
     return ret
Exemple #16
0
 def extract_email_addresses(self, data):
     ret = []
     email = data.get("kaccount_email")
     verified = data.get("kaccount_email_verified")
     # data["kaccount_email_verified"] imply the email address is
     # verified
     ret.append(EmailAddress(email=email, verified=verified, primary=True))
     return ret
 def extract_email_addresses(self, data):
     ret = [
         EmailAddress(
             email=data['response']['user']['settings']['email_address'],
             verified=True,
             primary=True)
     ]
     return ret
Exemple #18
0
 def verify_user(self):
     """Verify instance user account using django-allauth constructs"""
     account_emailaddresse = EmailAddress()
     account_emailaddresse.email = '*****@*****.**'
     account_emailaddresse.verified = True
     account_emailaddresse.user_id = self.user.id
     account_emailaddresse.save()
def new_user(email, username=''):
    User = get_user_model()
    if username:
        assert is_username_unique(username)
    else:
        basename = email.split('@')[0]
        username = make_unique_username(basename)
    if User.objects.filter(email=email):
        raise ValueError('Email "{}" not unique.'.format(email))
    user = User(username=username, email=email)
    user.save()

    # Set up email for allauth.
    ea = EmailAddress(user=user, email=email, primary=True, verified=False)
    ea.user = user
    ea.save()

    return user
def update_user_email(sender: Type[EmailAddress], request: HttpRequest,
                      email_address: EmailAddress, **kwargs):
    """
    Receive a signal when an email address is updated and confirmed.

    When the signal is received, the new ``email_address``
    is made primary and the old email addresses are deleted.

    :param sender: The model class that sent the signal.
    :param request: The original request.
    :param email_address: The new email address.
    """
    email_address.user.is_active = True
    # Make new email_address primary
    email_address.set_as_primary()
    # Get rid of old email addresses
    EmailAddress.objects.filter(user=email_address.user,
                                primary=False).delete()
Exemple #21
0
 def extract_email_addresses(self, data):
     ret = [
         EmailAddress(
             email=data["response"]["user"]["settings"]["email_address"],
             verified=True,
             primary=True,
         )
     ]
     return ret
Exemple #22
0
    def extract_email_addresses(self, data):
        addresses = []
        for email in data.get("emails", []):
            addresses.append(
                EmailAddress(email=email.get("email"),
                             verified=email.get("verfified"),
                             primary=email.get("primary")))

        return addresses
 def test_same_email_unverified_2(self):
     # A social login with an unverified email matching an existing
     # verified email does nothing (no auto-signup is allowed).
     self._create_user(email="*****@*****.**", verified=True)
     emails = [
         EmailAddress(email="*****@*****.**", verified=False, primary=True)
     ]
     self._create_social_user(emails, "google", "10001")
     self.assertEqual(SocialAccount.objects.count(), 0)
     self.assertEqual(User.objects.count(), 1)
Exemple #24
0
 def extract_email_addresses(self, data, user=None):
     # Force verification of email addresses because SurfConext will only transmit verified emails
     if data.get('email'):
         return [
             EmailAddress(email=data['email'].strip().lower(),
                          verified=True,
                          primary=True)
         ]
     else:
         return []
 def extract_email_addresses(self, data):
     ret = []
     email = data.get('email')
     if email:
         settings = self.get_settings()
         verified_email = settings.get('VERIFIED_EMAIL')
         verified = bool(data.get('verified') and verified_email)
         ret.append(
             EmailAddress(email=email, verified=verified, primary=True))
     return ret
Exemple #26
0
 def extract_email_addresses(self, data):
     """Extract only the verified emails from GitHub."""
     email_addresses = []
     for email_address in data.get('email_addresses', []):
         if email_address.get('verified', False):
             email_addresses.append(EmailAddress(email=email_address['email'],
                                                 verified=True,
                                                 primary=email_address['primary'],
                                                 user=User()))
     return email_addresses
Exemple #27
0
 def cleanup_email_addresses(self, email, addresses):
     # Move user.email over to EmailAddress
     if email and email.lower() not in [a.email.lower() for a in addresses]:
         addresses.append(EmailAddress(email=email, verified=False, primary=True))
     # Force verified emails
     settings = self.get_settings()
     verified_email = settings.get("VERIFIED_EMAIL", False)
     if verified_email:
         for address in addresses:
             address.verified = True
Exemple #28
0
def test_email_changed(user_factory, mocker, mailoutbox):
    mocked_cache_inv = mocker.patch(
        "squarelet.users.signals.send_cache_invalidations")
    mocked_customer = mocker.patch(
        "squarelet.organizations.models.Organization.customer",
        new_callable=PropertyMock,
    )
    user = user_factory(email_failed=True)
    user.individual_organization.customer = mocked_customer
    old_email = EmailAddress(email="*****@*****.**")
    new_email = EmailAddress(email="*****@*****.**", user=user)
    signals.email_changed(None, user, old_email, new_email)
    assert mocked_customer().email == new_email.email
    mocked_customer().save.assert_called_once()
    assert not user.email_failed
    mocked_cache_inv.assert_called_with("user", user.uuid)
    mail = mailoutbox[0]
    assert mail.subject == "Changed email address"
    assert mail.to == [old_email.email]
Exemple #29
0
 def extract_email_addresses(self, data):
     ret = []
     email = data.get("Email")
     if email:
         ret.append(
             EmailAddress(
                 email=email,
                 verified=False,
                 primary=True,
             ))
     return ret
 def test_different_email(self):
     # Base case: social login with an unknown email creates a new
     # user
     user = self._create_user(email="*****@*****.**", verified=True)
     emails = [
         EmailAddress(email="*****@*****.**", verified=True, primary=True)
     ]
     self._create_social_user(emails, "google", "10001")
     self.assertEqual(User.objects.count(), 2)
     socialaccount = SocialAccount.objects.get(uid="10001")
     self.assertTrue(socialaccount.user.id != user.id)
Exemple #31
0
 def extract_email_addresses(self, data):
     result = []
     for email_address in data.get("email_addresses", ()):
         # Ignore all email addresses that have not been verified by GitHub.
         email = email_address.get("email", "").strip()
         if email and email_address.get("verified"):
             result.append(
                 EmailAddress(email=email,
                              verified=True,
                              primary=email_address["primary"]))
     return result
Exemple #32
0
    def extract_email_addresses(self, data: dict) -> List[EmailAddress]:
        emails = [email for email in data.get('emails', []) if 'handle' in email]
        emails.sort(key=lambda e: e.get('primary', False), reverse=True)

        return [
            EmailAddress(
                email=email['handle'],
                verified=True,
                primary=True
            ) for email in emails if email.get('primary', False)
        ]
Exemple #33
0
def test_download_email_verification_links(settings, superuser_client):
    user = UserFactory.create()
    EmailAddress(user=user, email=user.email).save()

    data = {
        'action': 'download_email_verification_links',
        '_selected_action': User.objects.all().values_list('pk', flat=True),
    }
    response = superuser_client.post(reverse('admin:user_user_changelist'), data, follow=True)

    assert '/accounts/confirm-email/' in str(response.content)
 def test_github_unverified_match(self, mock_get):
     # A github login with an unverified email should match an
     # existing user with the same verified email.
     user = self._create_user(email="*****@*****.**", verified=True)
     emails = [
         EmailAddress(email="*****@*****.**", verified=False, primary=True)
     ]
     self._create_social_user(emails, "github", "10001", "(bad token)")
     self.assertEqual(User.objects.count(), 1)
     socialaccount = SocialAccount.objects.get(uid="10001")
     self.assertEqual(socialaccount.user.id, user.id)
Exemple #35
0
    def extract_email_addresses(self, data):
        email = data.get("email")
        verified = convert_to_python_bool_if_value_is_json_string_bool(
            data.get("email_verified", False)
        )

        return (
            [EmailAddress(email=email, verified=verified, primary=True)]
            if email
            else []
        )
Exemple #36
0
 def extract_email_addresses(self, data):
     result = []
     for email_address in data.get('email_addresses', ()):
         # Ignore all email addresses that have not been verified by GitHub.
         email = email_address.get('email', '').strip()
         if email and email_address.get('verified'):
             result.append(
                 EmailAddress(email=email,
                              verified=True,
                              primary=email_address['primary']))
     return result
 def test_same_email_verified(self):
     # A social login matching an existing verified email attaches
     # to the existing user
     user = self._create_user(email="*****@*****.**", verified=True)
     emails = [
         EmailAddress(email="*****@*****.**", verified=True, primary=True)
     ]
     self._create_social_user(emails, "google", "10001")
     self.assertEqual(User.objects.count(), 1)
     socialaccount = SocialAccount.objects.get(uid="10001")
     self.assertEqual(socialaccount.user.id, user.id)
Exemple #38
0
    def test_expired_email_verify_link(self):
        verified_count = EmailAddress.objects.filter(verified=True).count()

        # create a user
        user = self.create_user('username', '*****@*****.**', 'password')

        # create an unverified email address
        email = EmailAddress(user=user, email=user.email,
                             verified=False, primary=True)
        email.save()

        # create and email confirmation object
        confirmation = self._create_confirmation(
            email, datetime.now(tz) - timedelta(days=10)
        )

        response = self.client.post(reverse('account_confirm_email',
                                            args=(confirmation.key,)))
        self.assertEqual(response.status_code, 404)
        new_verified_count = EmailAddress.objects.filter(verified=True).count()
        self.assertEqual(verified_count, new_verified_count)
Exemple #39
0
 def extract_email_addresses(self, data):
     ret = []
     email = data.get('email')
     if email:
         settings = self.get_settings()
         # data['verified'] does not imply the email address is
         # verified.
         verified_email = settings.get('VERIFIED_EMAIL', False)
         ret.append(EmailAddress(email=email,
                                 verified=verified_email,
                                 primary=True))
     return ret
Exemple #40
0
 def verify_user(self):
     """Verify instance user account using django-allauth constructs"""
     account_emailaddresse = EmailAddress()
     account_emailaddresse.email = '*****@*****.**'
     account_emailaddresse.verified = True
     account_emailaddresse.user_id = self.user.id
     account_emailaddresse.save()
    def handle(self, *args, **options):
        passwd = getpass.getpass("Enter password:"******"User with such email/username already exists.")

        u = user_model.objects.create_superuser(
            options['name'], options['email'], passwd
        )

        u.save()

        email_entity = EmailAddress(
            email=options['email'], verified=True,
            primary=True, user=u
        )
        email_entity.save()

        email_confirmation_entity = EmailConfirmation(
            email_address=email_entity,
            created=timezone.now() - datetime.timedelta(days=1),
            sent=timezone.now() - datetime.timedelta(hours=12),
            key=str(uuid.uuid4()).replace('-', '')
        )

        email_confirmation_entity.save()

        self.stdout.write(
            'Successfully created superuser {0} with confirmed email address {1}'.format(
                options['name'], options['email']
            )
        )
Exemple #42
0
	def obj_create(self, bundle, request = None, **kwargs):
		password = bundle.data['password']
		email = bundle.data['email']

		try:
			username = email
			bundle.obj = User.objects.create_user(username, email, password)

			email_address = EmailAddress(user = bundle.obj, email = email, verified = True, primary = True)
			email_address.save()


			#print "Success"
			#student = Student(user = bundle.obj)
			#print student 
			#student.save()

			#try:
			#	student.gpa = bundle.data['gpa']
			#	student.save()
			#except ValueError:
			#	pass

			#try:
			#	student.zip_code = bundle.data['zip_code']
			#	student.save()
			#except ValueError:
			#	pass

			#bundle.obj = User(username = username, email = email, password = password)
			#bundle.obj.save()
		except IntegrityError:
			raise BadRequest('That username already exists')
		

		return bundle 
Exemple #43
0
    def _save_email_addresses(self, request):
        adapter = get_adapter()
        # user.email may not be listed as an EmailAddress ...
        user = self.account.user
        try:
            primary_email_address = EmailAddress.objects.get(user=user,
                                                             primary=True)
        except EmailAddress.DoesNotExist:
            primary_email_address = None


        if (user.email 
            and (user.email.lower() not in [e.email.lower() 
                                            for e in self.email_addresses])):
            # ... so let's append it
            email_address \
                = EmailAddress(user=user,
                               email=user.email,
                               verified=adapter.is_email_verified(request, 
                                                                  user.email),
                               primary=(not primary_email_address))
            if not primary_email_address:
                primary_email_address = email_address
            self.email_addresses.append(email_address)

        for email_address in self.email_addresses:
            # Pick up only valid ones...
            email = valid_email_or_none(email_address.email)
            if not email:
                continue
            # ... and non-conflicting ones...
            if (account_settings.UNIQUE_EMAIL 
                and EmailAddress.objects.filter(email__iexact=email).exists()):
                continue
            if email_address.primary:
                if not primary_email_address:
                    primary_email_address = email_address
                else:
                    email_address.primary = False
            email_address.user = user
            email_address.verified \
                = (email_address.verified 
                   or adapter.is_email_verified(request, 
                                                email_address.email))
            email_address.save()

        if primary_email_address and (not user.email or primary_email_address.email.lower() != user.email.lower()):
            user.email = primary_email_address.email
            user.save()
        adapter.stash_email_verified(request, None)
import os
import sys

#SCRIPT TO CREATE PROFILES, AFTER CREATING USERS
#FOR CREATING USERS UNCOMMENT THE CODE COMMENTRD AND VICEVERSA

os.environ['DJANGO_SETTINGS_MODULE'] = 'pichrr.settings'

import django
from django.contrib.auth.models import User
from allauth.account.models import EmailAddress


if __name__ == '__main__':
    django.setup()

usernames = ['theHulk', 'tonyStark', 'capt_America', 'Thor', 'blackWidow', 'hawkEye', 'loki', 'deadPool']
passwords = ['theHulk', 'tonyStark', 'capt_America', 'Thor', 'blackWidow', 'hawkEye', 'loki', 'deadPool']

for i in range(len(usernames)):
    email = usernames[i]+'@gmail.com'
    user = User.objects.create_user(username = usernames[i], password = passwords[i], email = email)
    user.save()
    email_address = EmailAddress(user=user,email=email, verified=True, primary=True)
    email_address.save()