def notify(request, instance=None): if request.user.is_superuser or request.user.has_perm( 'ganeti.view_instances'): if instance: try: instance = Instance.objects.get(name=instance) except ObjectDoesNotExist: raise Http404 users = [] if request.method == 'POST': form = MessageForm(request.POST) if form.is_valid(): rl = form.cleaned_data['recipient_list'] rlist = rl.split(',') mail_list = get_mails(rlist) email = form.cleaned_data['message'] if len(mail_list) > 0: send_emails( "%s%s" % (settings.EMAIL_SUBJECT_PREFIX, form.cleaned_data['subject']), email, mail_list, ) if request.is_ajax(): ret = {'result': 'success'} return HttpResponse(json.dumps(ret), content_type='application/json') messages.add_message(request, messages.SUCCESS, "Mail sent to %s" % ','.join(mail_list)) form.add_to_archive(request.user) return HttpResponseRedirect(reverse('user-instances')) else: if instance: for user in instance.users: userd = {} userd['text'] = user.username userd['id'] = "u_%s" % user.pk userd['type'] = "user" users.append(userd) for group in instance.groups: groupd = {} groupd['text'] = group.name groupd['id'] = "u_%s" % group.pk groupd['type'] = "group" users.append(groupd) form = MessageForm() if request.is_ajax(): return render(request, 'notifications/create_ajax.html', { 'form': form, 'users': users, 'ajax': 'true', }) return render( request, 'notifications/create.html', { 'form': form, 'users': users, 'archive': NotificationArchive.objects.all() }) else: raise PermissionDenied()
def add_to_archive(self, user): if self.is_valid(): notification = NotificationArchive( subject=self.cleaned_data["subject"], message=self.cleaned_data["message"], sender=user ) notification.save() mail_list = get_mails(self.cleaned_data["recipient_list"].split(",")) for user in User.objects.filter(email__in=mail_list): notification.recipients.add(user) notification.save()
def add_to_archive(self, user): if self.is_valid(): notification = NotificationArchive( subject=self.cleaned_data['subject'], message=self.cleaned_data['message'], sender=user) notification.save() mail_list = get_mails( self.cleaned_data['recipient_list'].split(',')) for user in User.objects.filter(email__in=mail_list): notification.recipients.add(user) notification.save()
def notify(request, instance=None): if request.user.is_superuser or request.user.has_perm('ganeti.view_instances'): if instance: try: instance = Instance.objects.get(name=instance) except ObjectDoesNotExist: raise Http404 users = [] if request.method == 'POST': form = MessageForm(request.POST) if form.is_valid(): rl = form.cleaned_data['recipient_list'] rlist = rl.split(',') mail_list = get_mails(rlist) email = form.cleaned_data['message'] if len(mail_list) > 0: send_emails( "%s%s" % ( settings.EMAIL_SUBJECT_PREFIX, form.cleaned_data['subject'] ), email, mail_list, ) if request.is_ajax(): ret = {'result': 'success'} return HttpResponse( json.dumps(ret), mimetype='application/json' ) messages.add_message( request, messages.SUCCESS, "Mail sent to %s" % ','.join(mail_list) ) form.add_to_archive(request.user) return HttpResponseRedirect(reverse('user-instances')) else: if instance: for user in instance.users: userd = {} userd['text'] = user.username userd['id'] = "u_%s" % user.pk userd['type'] = "user" users.append(userd) for group in instance.groups: groupd = {} groupd['text'] = group.name groupd['id'] = "u_%s" % group.pk groupd['type'] = "group" users.append(groupd) form = MessageForm() if request.is_ajax(): return render( request, 'notifications/create_ajax.html', { 'form': form, 'users': users, 'ajax': 'true', } ) return render( request, 'notifications/create.html', { 'form': form, 'users': users, 'archive': NotificationArchive.objects.all() } ) else: raise PermissionDenied()