def save(self):
     email = self.initial_data.get('email')
     user = User.objects.get(email=email)
     new_password = generate_password()
     user.set_password(new_password)
     send_mail(RESET_PASSWORD_SUBJECT, RESET_PASSWORD_BODY + new_password, DEFAULT_FROM_EMAIL, [email], fail_silently=True)
     user.save()
Example #2
0
def submitter_create(request):
	errors = []
	status = ''

	if 'submit' in request.POST:
		user = User()

		username = request.POST.get('username')
		if username:
			if User.objects.filter(username=username).count() < 1:
				user.username = username
			else:
				errors += ['username', 'username_already_taken']
		else:
			errors += ['username', 'invalid_username']

		from django.core.validators import validate_email
		from django.core.exceptions import ValidationError
		email = request.POST.get('email')
		try:
			validate_email(email)

			if User.objects.filter(email=email).count() < 1:
				user.email = email
			else:
				errors += ['email', 'email_already_taken']

		except ValidationError:
			errors += ['email', 'invalid_email']

		user.first_name = request.POST.get('first_name')
		user.last_name = request.POST.get('last_name')

		password = generate_password()
		user.set_password(password)

		if len(errors) < 1:
			user.save()

			try:
				profile = CommiterProfileForm(request.POST, request.FILES)
				profile = profile.save(commit=False)
				profile.user = user
				profile.title = u'投稿講者'
				profile.save()
			except:
				errors += ['invalid_profile']
				user.delete()
				status = 'error'

				return render(request, 'users/submitter_create.html', {
					'errors': errors,
					'status': status,
					'saved': request.POST,
				})

			user.groups.add(Group.objects.get(id=settings.SUBMITTER_GROUP_ID))

			context = {
				'sender': request.user,
				'receiver': user,
				'password': password,
			}

			sender_address = settings.SUBMITTER_ACCOUNTS_SENDER
			receiver_address = format_address(user.profile.display_name, user.email)
			send_template_mail(sender_address, receiver_address, 'mail/submitter_welcome.html', context)

			status = 'success'
		else:
			status = 'error'

	if status == 'success':
		return render(request, 'users/login.html', {
			'status': status,
		})
	else:
		return render(request, 'users/submitter_create.html', {
			'errors': errors,
			'status': status,
			'saved': request.POST,
		})
Example #3
0
def create(request):
	errors = []
	status = ''

	if 'submit' in request.POST:
		user = User()

		username = request.POST.get('username')
		if username:
			if User.objects.filter(username=username).count() < 1:
				user.username = username
			else:
				errors += ['username', 'username_already_taken']
		else:
			errors += ['username', 'invalid_username']

		from django.core.validators import validate_email
		from django.core.exceptions import ValidationError
		email = request.POST.get('email')
		try:
			validate_email(email)

			if User.objects.filter(email=email).count() < 1:
				user.email = email
			else:
				errors += ['email', 'email_already_taken']

		except ValidationError:
			errors += ['email', 'invalid_email']

		user.first_name = request.POST.get('first_name')
		user.last_name = request.POST.get('last_name')

		password = generate_password()
		user.set_password(password)

		if len(errors) < 1:
			user.save()		# Save the user first in order to create relational objects

			profile = UserProfile(user=user)
			profile.title = request.POST.get('title')
			profile.display_name = request.POST.get('display_name')
			profile.school = request.POST.get('school')
			profile.bio = request.POST.get('bio')
			profile.grade = request.POST.get('grade')
			profile.phone = request.POST.get('phone')
			profile.comment = request.POST.get('comment')
			profile.save()

			for group_id in request.POST.getlist('groups'):
				try:
					user.groups.add(Group.objects.get(id=group_id))
				except Group.DoesNotExist: pass

			user.save()		# Save the groups information

			if request.POST.get('send_welcome_letter'):
				context = {
					'sender': request.user,
					'receiver': user,
					'password': password,
					'groups': [g.name for g in user.groups.all()],
				}

				sender_address = format_address(request.user.profile.name(), request.user.email)
				receiver_address = format_address(user.profile.name(), user.email)
				send_template_mail(sender_address, receiver_address, 'mail/user_welcome.html', context)

			status = 'success'
		else:
			status = 'error'

	return render(request, 'users/create.html', {
		'categories': sorted_categories(),
		'errors': errors,
		'status': status,
	})
Example #4
0
def create(request):
    errors = []
    status = ''

    if 'submit' in request.POST:
        user = User()

        username = request.POST.get('username')
        if username:
            if User.objects.filter(username=username).count() < 1:
                user.username = username
            else:
                errors += ['username', 'username_already_taken']
        else:
            errors += ['username', 'invalid_username']

        from django.core.validators import validate_email
        from django.core.exceptions import ValidationError
        email = request.POST.get('email')
        try:
            validate_email(email)

            if User.objects.filter(email=email).count() < 1:
                user.email = email
            else:
                errors += ['email', 'email_already_taken']

        except ValidationError:
            errors += ['email', 'invalid_email']

        user.first_name = request.POST.get('first_name')
        user.last_name = request.POST.get('last_name')

        password = generate_password()
        user.set_password(password)

        if len(errors) < 1:
            user.save()

            user.profile.title = request.POST.get('title')
            user.profile.display_name = request.POST.get('display_name')
            user.profile.school = request.POST.get('school')
            user.profile.bio = request.POST.get('bio')
            user.profile.grade = request.POST.get('grade')
            user.profile.phone = request.POST.get('phone')
            user.profile.comment = request.POST.get('comment')
            user.profile.save()

            for group_id in request.POST.getlist('groups'):
                try:
                    user.groups.add(Group.objects.get(id=group_id))
                except Group.DoesNotExist:
                    pass

            user.save()  # Save the groups information

            if request.POST.get('send_welcome_letter'):
                context = {
                    'sender': request.user,
                    'receiver': user,
                    'password': password,
                    'groups': [g.name for g in user.groups.all()],
                }

                sender_address = format_address(request.user.profile.name,
                                                request.user.email)
                receiver_address = format_address(user.profile.name,
                                                  user.email)
                send_template_mail(sender_address, receiver_address,
                                   'mail/user_welcome.html', context)

            status = 'success'
        else:
            status = 'error'

    return render(request, 'users/create.html', {
        'categories': sorted_categories(),
        'errors': errors,
        'status': status,
    })