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)
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)
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)
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)
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)
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, })
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, })
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, })
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, })
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, })
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, })
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, })
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, })
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, })
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)
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, })