Exemple #1
0
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()
Exemple #2
0
 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()
Exemple #3
0
 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()
Exemple #4
0
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()