views.py 4.14 KB
Newer Older
Vasyl Bodnaruk's avatar
Vasyl Bodnaruk committed
1 2
import json
from django.shortcuts import render, redirect, reverse, HttpResponseRedirect, HttpResponse
3
from django.views.generic import ListView, DetailView, CreateView
4
from django.db.models import Q
Vasyl Bodnaruk's avatar
Vasyl Bodnaruk committed
5
from django.http import JsonResponse
6
import json
Vasyl Bodnaruk's avatar
Vasyl Bodnaruk committed
7
from django.db.models import Max, Min
8

Vasyl Bodnaruk's avatar
Vasyl Bodnaruk committed
9
from .models import News, WpEsiNews, WpEsiNewsEntity, WpEsiMedia, WpEsiEntity
Vasyl Bodnaruk's avatar
Vasyl Bodnaruk committed
10 11 12 13 14 15


class ListNewsView(ListView):
    template_name = 'list_news.html'

    def get(self, request, *args, **kwargs):
Vasyl Bodnaruk's avatar
Vasyl Bodnaruk committed
16
        media = request.GET.get('media')
Vasyl Bodnaruk's avatar
Vasyl Bodnaruk committed
17 18
        from_date = request.GET.get('from_date')
        to_date = request.GET.get('to_date')
19
        search = request.GET.get('search')
Vasyl Bodnaruk's avatar
Vasyl Bodnaruk committed
20
        print(from_date, to_date)
Vasyl Bodnaruk's avatar
Vasyl Bodnaruk committed
21
        news = News.objects.filter(is_accepted=False).order_by('-id')#.order_by('record_date')
22 23
        if search:
            news = news.filter(Q(title__icontains=search) | Q(description__icontains=search))
Vasyl Bodnaruk's avatar
Vasyl Bodnaruk committed
24 25 26 27
        if from_date:
            news = news.filter(record_date__gte=from_date)
        if to_date:
            news = news.filter(record_date__lte=to_date)
Vasyl Bodnaruk's avatar
Vasyl Bodnaruk committed
28 29 30
        if media:
            news = self._filter_by_media(news, media)
        media = WpEsiMedia.objects.all()
Vasyl Bodnaruk's avatar
Vasyl Bodnaruk committed
31 32 33
        min_max_date = News.objects.aggregate(Min('record_date'), Max('record_date'))
        min_max_date['record_date__min'] = str(min_max_date['record_date__min'].date())
        min_max_date['record_date__max'] = str(min_max_date['record_date__max'].date())
Vasyl Bodnaruk's avatar
Vasyl Bodnaruk committed
34
        return render(request, self.template_name, {'news': news,
Vasyl Bodnaruk's avatar
Vasyl Bodnaruk committed
35 36
                                                    'media': media,
                                                    'date': min_max_date})
Vasyl Bodnaruk's avatar
Vasyl Bodnaruk committed
37

Vasyl Bodnaruk's avatar
Vasyl Bodnaruk committed
38 39 40
    def post(self, request, *args, **kwargs):
        if request.is_ajax():
            data = json.loads(request.body.decode('utf-8'))
41
            print(data)
Vasyl Bodnaruk's avatar
Vasyl Bodnaruk committed
42 43 44 45 46
            type_request = data['type']
            ids = data['id']
            if type_request in ['delete', 'deleteAll']:
                self._delete(ids)
            if type_request == 'edit':
Vasyl Bodnaruk's avatar
Vasyl Bodnaruk committed
47
                return HttpResponse({'ids': ids})
Vasyl Bodnaruk's avatar
Vasyl Bodnaruk committed
48 49 50 51

            if type_request == 'exportAll':
                for i in News.objects.filter(pk__in=ids):
                    i.export_news()
Vasyl Bodnaruk's avatar
Vasyl Bodnaruk committed
52
        return HttpResponse(200)
Vasyl Bodnaruk's avatar
Vasyl Bodnaruk committed
53 54 55 56 57 58 59

    def _delete(self, id):
        if isinstance(id, list):
            News.objects.filter(id__in=id).update(is_accepted=True)
        else:
            News.objects.filter(id=id).update(is_accepted=True)

Vasyl Bodnaruk's avatar
Vasyl Bodnaruk committed
60 61 62 63 64 65 66 67 68
    def _filter_by_media(self, news, media):
        if media == 'All':
            return news
        else:
            m = WpEsiMedia.objects.get(name=media)
            news = news.filter(media_id=m.pk)
            return news


69 70
class EditNewsView(DetailView):
    template_name = 'edit_news.html'
Vasyl Bodnaruk's avatar
Vasyl Bodnaruk committed
71 72

    def get(self, request, *args, **kwargs):
73 74
        news = News.objects.get(id=kwargs.get('id'))
        media = WpEsiMedia.objects.all()
Vasyl Bodnaruk's avatar
Vasyl Bodnaruk committed
75
        return render(request, self.template_name, {'news': news,
76 77 78 79 80 81 82
                                                    'media': media})

    def post(self, request, *args, **kwargs):
        radar = request.POST.get('radar')
        print(radar)

        return HttpResponseRedirect('/news')
83 84


Vasyl Bodnaruk's avatar
Vasyl Bodnaruk committed
85 86 87 88 89 90 91 92
class ViewNewsView(DetailView):
    template_name = 'view_news.html'

    def get(self, request, *args, **kwargs):
        news_id = kwargs.get('id')
        news = News.objects.get(id=news_id)

        return render(request, self.template_name, {'news': news})
93

94 95 96 97 98 99 100 101 102 103
    def post(self, request, *args, **kwargs):
        delete_news = request.POST.get('delete')
        export_news = request.POST.get('export')

        if delete_news:
            News.objects.filter(id=delete_news).update(is_accepted=True)
            return HttpResponseRedirect(reverse('view_news', kwargs={'id': delete_news}))

        if export_news:
            news = News.objects.get(id=export_news)
Vasyl Bodnaruk's avatar
Vasyl Bodnaruk committed
104
            news.export_news()
105 106 107 108 109 110 111 112 113 114
            return HttpResponseRedirect(reverse('view_news', kwargs={'id': export_news}))


def radar(request, id):
    d = [{"text": "Algeria", "value" : "Algeria"},
  {"text": "Angola", "value" : "Angola"},
  {"text": "Angola", "value" : "as"},
  {"text": "Angola", "value" : "dsda"},
  {"text": "Angola", "value" : "aasdadsd"}]
    return JsonResponse(d, safe=False)