52 lines
1.9 KiB
Python
52 lines
1.9 KiB
Python
from urllib.parse import unquote
|
|
from django.views.generic import TemplateView
|
|
from django.views.generic.list import ListView
|
|
from django.http import JsonResponse, HttpResponseRedirect
|
|
from django.contrib.auth.mixins import LoginRequiredMixin
|
|
from django.urls import reverse
|
|
from django.shortcuts import get_object_or_404
|
|
from logtracker.mail.models import Mail, Sender, Recipient
|
|
import json
|
|
|
|
|
|
def check(val):
|
|
return val == 'true'
|
|
|
|
|
|
class EmailsList(LoginRequiredMixin, ListView):
|
|
def get_queryset(self):
|
|
if self.request.GET.get('from'):
|
|
sender = get_object_or_404(Sender, email=unquote(self.request.GET.get('from')))
|
|
qs = sender.mail_set.all()
|
|
elif self.request.GET.get('to'):
|
|
recipient = get_object_or_404(Recipient, email=unquote(self.request.GET.get('to')))
|
|
qs = recipient.mail_set.all()
|
|
else:
|
|
qs = Mail.objects.all()
|
|
if self.request.GET.get('has_error'):
|
|
qs = qs.filter(has_error=check(self.request.GET.get('has_error')))
|
|
if self.request.GET.get('has_completed'):
|
|
qs = qs.filter(has_completed=check(self.request.GET.get('has_completed')))
|
|
return qs[:100]
|
|
|
|
def get(self, request, *args, **kwargs):
|
|
queryset = self.get_queryset()
|
|
#data = {m.identifier: [str(e) for e in json.dumps(m.entries_list)] for m in queryset}
|
|
data = {m.identifier: [json.loads(e.data).get('MESSAGE') for e in m.entries_list] for m in queryset}
|
|
#data = {m.identifier: 'a' for m in queryset}
|
|
return JsonResponse({'data': data})
|
|
|
|
|
|
class MailHome(LoginRequiredMixin, TemplateView):
|
|
template_name = 'entries/home.html'
|
|
form_class = Recipient
|
|
|
|
def post(self, request, *args, **kwargs):
|
|
url = '%s?%s' % (reverse('emails'), '%s=%s' % (request.POST['field'], request.POST['address']))
|
|
return HttpResponseRedirect(url)
|
|
|
|
|
|
class SendersList(LoginRequiredMixin, ListView):
|
|
|
|
model = Sender
|