Ejemplo n.º 1
0
    def save(self):
        email = self.cleaned_data['email']
        active_users = User.objects.filter(email__iexact=email, is_active=True)
        for user in active_users:
            if not user.has_usable_password():
                continue

            context = {
                'receiver': user,
                'reset_link': reverse('users:reset_password_confirm', args=(generate_uid(user), generate_token(user))),
            }

            sender_address = settings.DEFAULT_ACCOUNTS_SENDER
            receiver_address = format_address(user.profile.name, user.email)
            send_template_mail(sender_address, receiver_address, 'mail/user_reset_password.html', context)
Ejemplo n.º 2
0
	def save(self):
		email = self.cleaned_data['email']
		active_users = User.objects.filter(email__iexact=email, is_active=True)
		for user in active_users:
			if not user.has_usable_password():
				continue

			context = {
				'receiver': user,
				'reset_link': reverse('users:reset_password_confirm', args=(generate_uid(user), generate_token(user))),
			}

			sender_address = get_mail_setting('sender', 'account')
			receiver_address = format_address(user.profile.name(), user.email)
			send_template_mail(sender_address, receiver_address, 'mail/user_reset_password.html', context)
Ejemplo n.º 3
0
def send_mail(sender, receiver, template_name, context):
    context['sender'] = sender
    context['receiver'] = receiver
    sender = settings.USER_ISSUE_SENDER.format(sender.profile.name)
    if isinstance(receiver, User):
        receiver = format_address(receiver.profile.name, receiver.email)
    return send_template_mail(sender, receiver, template_name, context)
Ejemplo n.º 4
0
def send_mail(sender, receiver, template_name, context):
    context['sender'] = sender
    context['receiver'] = receiver
    sender = settings.USER_ISSUE_SENDER.format(sender.profile.name)
    if isinstance(receiver, User):
        receiver = format_address(receiver.profile.name, receiver.email)
    return send_template_mail(sender, receiver, template_name, context)
Ejemplo n.º 5
0
def reg_add_token(request):
    if not request.user.profile.is_authorized(
    ) and not request.user.profile.is_trusted():
        return redirect('index')
    status = ''

    if 'submit' in request.POST:
        pad = lambda l, n: l + [('', '', '')] * (n - len(l))
        padt = lambda l: l + ('', ) * (3 - len(l))

        number = request.POST.get('number')
        data = request.POST.get('data').splitlines()
        number = int(number) if number else len(data)
        data = pad([padt(tuple(re.split(r'[,|;"\t]', x))) for x in data],
                   number)
        title = request.POST.get('title')

        for tn in data:
            token = RegisterToken()
            token.title = title
            token.username = tn[2]
            token.email = tn[0]
            token.display_name = tn[1]
            token.save()

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

            if request.POST.get('send_email'):
                send_template_mail(settings.DEFAULT_ACCOUNTS_SENDER,
                                   format_address(token.name, token.email),
                                   'mail/reg_invitation.html',
                                   {'receiver': token})

    return render(request, 'users/reg_add_token.html', {
        'categories': sorted_categories,
        'status': status,
    })
Ejemplo n.º 6
0
def create(request):
	context = {}

	if request.POST.get('submit'):

		if request.POST.get('method') == 'sms':
			pass

		sender = ''
		receivers = {}

		if request.POST.get('sender_email'):
			sender = format_address(request.POST.get('sender_name'), request.POST.get('sender_email'))

		receiver_target = request.POST.get('receiver', '').split(',')
		if 'staff' in receiver_target:
			for user in User.objects.exclude(email='', is_active=False):
				receivers[user.email] = user.profile.name()

		if request.POST.get('receivers'):
			additional_receivers = request.POST.get('receivers').strip().split('\n')
			for entry in additional_receivers:
				if ':' in entry:
					name, addr = parse_address(entry)
					receivers[addr] = name
				else:
					receivers[entry] = ''

		# TODO: Reimplement batch sending
		for email, name in receivers.iteritems():
			send_template_mail(
				sender,
				format_address(name, email),
				'mail/notification_general.html',
				{
					'subject': request.POST.get('subject'),
					'content': request.POST.get('content'),
					'reply_to': request.POST.get('reply_address'),
				}
			)

		context['status'] = 'success'

	return render(request, 'notifications/create.html', context)
Ejemplo n.º 7
0
def create(request):
    context = {}

    if request.POST.get('submit'):

        if request.POST.get('method') == 'sms':
            pass

        sender = ''
        receivers = {}

        if request.POST.get('sender_email'):
            sender = format_address(request.POST.get('sender_name'),
                                    request.POST.get('sender_email'))

        receiver_target = request.POST.get('receiver', '').split(',')
        if 'staff' in receiver_target:
            for user in User.objects.exclude(email='', is_active=False):
                receivers[user.email] = user.profile.name

        if request.POST.get('receivers'):
            additional_receivers = request.POST.get('receivers').strip().split(
                '\n')
            for entry in additional_receivers:
                if ':' in entry:
                    name, addr = parse_address(entry)
                    receivers[addr] = name
                else:
                    receivers[entry] = ''

        # TODO: Reimplement batch sending
        for email, name in receivers.items():
            send_template_mail(
                sender, format_address(name, email),
                'mail/notification_general.html', {
                    'subject': request.POST.get('subject'),
                    'content': request.POST.get('content'),
                    'reply_to': request.POST.get('reply_address'),
                })

        context['status'] = 'success'

    return render(request, 'notifications/create.html', context)
Ejemplo n.º 8
0
def reg_add_token(request):
    if not request.user.profile.is_authorized(
    ) and not request.user.profile.is_trusted():
        return redirect('index')
    status = ''

    if 'submit' in request.POST:
        pad = lambda l, n: l + [''] * (n - len(l))

        number = int(request.POST.get('number'))
        title = request.POST.get('title')
        usernames = pad(request.POST.get('usernames').split(","), number)
        emails = pad(request.POST.get('emails').split(","), number)
        display_names = pad(
            request.POST.get('display_names').split(","), number)
        for tn in range(0, number):
            token = RegisterToken()
            token.title = title
            token.username = usernames[tn]
            token.email = emails[tn]
            token.display_name = display_names[tn]
            token.save()

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

            if request.POST.get('send_email'):
                send_template_mail(settings.DEFAULT_ACCOUNTS_SENDER,
                                   format_address(token.name, token.email),
                                   'mail/reg_invitation.html',
                                   {'receiver': token})

    return render(request, 'users/reg_add_token.html', {
        'categories': sorted_categories,
        'status': status,
    })
Ejemplo n.º 9
0
def reg_add_token(request):
    if not request.user.profile.is_authorized() and not request.user.profile.is_trusted():
        return redirect('index')
    status = ''

    if 'submit' in request.POST:
        pad = lambda l, n: l + [('', '', '')] * (n - len(l))
        padt = lambda l: l + ('',) * (3 - len(l))

        number = request.POST.get('number')
        data = request.POST.get('data').splitlines()
        number = int(number) if number else len(data)
        data = pad([padt(tuple(re.split(r'[,|;"\t]', x))) for x in data], number)
        title = request.POST.get('title')

        for tn in data:
            token = RegisterToken()
            token.title = title
            token.username = tn[2]
            token.email = tn[0]
            token.display_name = tn[1]
            token.save()

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

            if request.POST.get('send_email'):
                send_template_mail(settings.DEFAULT_ACCOUNTS_SENDER,
                                   format_address(token.name, token.email),
                                   'mail/reg_invitation.html', {'receiver': token})

    return render(request, 'users/reg_add_token.html', {
        'categories': sorted_categories,
        'status': status,
    })
Ejemplo n.º 10
0
    def handle_noargs(self, **options):
        time_delta = settings.ISSUE_EXPIRE_TIMEDELTA
        time_range = (timezone.now() - time_delta, timezone.now())

        issues = Issue.objects.filter(is_open=True, due_time__range=time_range)
        for issue in issues:
            for watcher in issue.starring.all():
                send_template_mail(
                    settings.DEFAULT_ISSUE_SENDER,
                    format_address(watcher.profile.name, watcher.email),
                    'mail/issue_expired.html', {
                        'issue': issue,
                        'receiver': watcher,
                    })

            if is_issue_urgent(issue):
                receiver = issue.assignee
                if receiver and receiver.profile.phone:
                    send_template_sms('', receiver.profile.phone,
                                      'sms/issue_expired.txt', {
                                          'issue': issue,
                                          'receiver': receiver,
                                      })
Ejemplo n.º 11
0
def reg_add_token(request):
    if not request.user.profile.is_authorized() and not request.user.profile.is_trusted():
        return redirect('index')
    status = ''

    if 'submit' in request.POST:
        pad = lambda l, n: l + [''] * (n - len(l))

        number = int(request.POST.get('number'))
        title = request.POST.get('title')
        usernames = pad(request.POST.get('usernames').split(","), number)
        emails = pad(request.POST.get('emails').split(","), number)
        display_names = pad(request.POST.get('display_names').split(","), number)
        for tn in range(0, number):
            token = RegisterToken()
            token.title = title
            token.username = usernames[tn]
            token.email = emails[tn]
            token.display_name = display_names[tn]
            token.save()

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

            if request.POST.get('send_email'):
                send_template_mail(settings.DEFAULT_ACCOUNTS_SENDER, format_address(token.name, token.email), 'mail/reg_invitation.html', {'receiver': token})

    return render(request, 'users/reg_add_token.html', {
        'categories': sorted_categories,
        'status': status,
    })
Ejemplo n.º 12
0
	def handle_noargs(self, **options):
		time_delta = settings.ISSUE_EXPIRE_TIMEDELTA
		time_range = (timezone.now() - time_delta, timezone.now())

		issues = Issue.objects.filter(is_open=True, due_time__range=time_range)
		for issue in issues:
			for watcher in issue.starring.all():
				send_template_mail(
					settings.DEFAULT_ISSUE_SENDER,
					format_address(watcher.profile.name(), watcher.email),
					'mail/issue_expired.html',
					{
						'issue': issue,
						'receiver': watcher,
					}
				)

			if is_issue_urgent(issue):
				receiver = issue.assignee
				if receiver and receiver.profile.phone:
					send_template_sms('', receiver.profile.phone, 'sms/issue_expired.txt', {
						'issue': issue,
						'receiver': receiver,
					})
Ejemplo n.º 13
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,
    })
Ejemplo n.º 14
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.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()],
				}

				from notifications.utils import send_template_mail, format_address

				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,
	})
Ejemplo n.º 15
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()

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

			user.save()

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

			from notifications.utils import send_template_mail, format_address

			sender_address = format_address('SITCON', '*****@*****.**')
			receiver_address = format_address(user.username, user.email)
			send_template_mail(sender_address, receiver_address, 'mail/submitter_welcome.html', context)

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

	return render(request, 'users/submitter_create.html', {
		'categories': sorted_categories(),
		'errors': errors,
		'status': status,
	})
Ejemplo n.º 16
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,
		})
Ejemplo n.º 17
0
def send_mail(sender, receiver, template_name, context):
	context['sender'] = sender
	context['receiver'] = receiver
	sender = get_mail_setting('sender', 'issues') % sender.profile.name()
	receiver = format_address(receiver.profile.name(), receiver.email)
	return send_template_mail(sender, receiver, template_name, context)