This repository has been archived on 2023-02-21. You can view files and clone it, but cannot push or open issues or pull requests.
logtracker/logtracker/mail/views.py

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