Commit 5d3bfe77 authored by Vasyl Bodnaruk's avatar Vasyl Bodnaruk

Merge branch 'dev' of gitlab.com:amarynets/exa into dev

parents 16a0551b 158717ee
......@@ -172,12 +172,19 @@ $('.text-white').on('click', function(e) {
if (media){res += 'media=' + media + '&'}
if (word){res += 'search=' + word + '&'}
var orderName = $(this).attr('href').replace("?order_by=", "")
if (order == orderName){res +='order_by=' + orderName + '&' + 'reverse=' + '1&'} else
var orderName = $(this).attr('href').replace("?order_by=", "");
if (order == orderName){
res +='order_by=' + orderName;
if (!reverse){
res += '&reverse=1';
}
}
else
{
res += 'order_by=' + orderName + '&'
res += 'order_by=' + orderName
}
console.log(res);
window.location.href = res;
})
......
......@@ -29,6 +29,7 @@
<select class="form-control actions-select" name="media">
{% if request.GET.media %}
<option>{{ request.GET.media }}</option>
<option>All</option>
{% for i in media %}
<option>{{ i.name }}</option>
{% endfor %}
......@@ -62,7 +63,6 @@
</div>
</nav>
{% paginate news %}
<form class="form">
<table class="table table-hover">
......
from django.conf.urls import url
from .views import ListNewsView, EditNewsView, ViewNewsView, AddNewsView
from .views import ListNewsView, EditNewsView, ViewNewsView, AddNewsView, Test
from .autocomplete import *
......@@ -8,5 +8,6 @@ urlpatterns = [
url(r'^(?P<id>[0-9]+)$', EditNewsView.as_view(), name='edit_news'),
url(r'^view/(?P<id>[0-9]+)$', ViewNewsView.as_view(), name='view_news'),
url(r'^auto/(?P<slug>\w+)$', auto, name='auto'),
url(r'^add/$', AddNewsView.as_view(), name='add_news')
url(r'^add/$', AddNewsView.as_view(), name='add_news'),
# url(r'^test/$', Test.as_view(), name='test')
]
\ No newline at end of file
......@@ -12,84 +12,6 @@ from .models import News, WpEsiMedia, WpEsiTag
from .forms import NewsForm
@method_decorator(login_required, name='post')
class ListNewsView(ListView):
template_name = 'list_news.html'
def get(self, request, *args, **kwargs):
media = request.GET.get('media')
from_date = request.GET.get('from_date')
to_date = request.GET.get('to_date')
search = request.GET.get('search')
news = News.objects.filter(is_accepted=False).order_by('-id')#.order_by
tag = request.GET.get('tag')
if tag:
tag = WpEsiTag.objects.get(name=tag)
news = news.filter(tags_id__contains='{},'.format(tag.id))
order_by = request.GET.get('order_by')
if order_by in ('media_id', 'type_id', 'region_id', 'publish_date', 'title'):
news = news.order_by('-' + order_by)
if request.GET.get('reverse') == '1':
news = news.reverse()
if search:
news = news.filter(Q(title__icontains=search) | Q(description__icontains=search))
if from_date:
news = news.filter(publish_date__gte=from_date)
if to_date:
news = news.filter(publish_date__lte=to_date)
if media:
news = self._filter_by_media(news, media)
media = WpEsiMedia.objects.all()
min_max_date = News.objects.aggregate(Min('publish_date'), Max('publish_date'))
min_max_date['publish_date__min'] = str(min_max_date['publish_date__min'].date())
min_max_date['publish_date__max'] = str(min_max_date['publish_date__max'].date())
return render(request, self.template_name, {'news': news,
'media': media,
'date': min_max_date})
def post(self, request, *args, **kwargs):
if request.is_ajax():
data = json.loads(request.body.decode('utf-8'))
type_request = data['type']
ids = data['id']
if type_request in ['delete', 'deleteAll']:
self._delete(ids)
if type_request == 'edit':
return HttpResponse({'ids': ids})
if type_request == 'exportAll':
for i in News.objects.filter(pk__in=ids):
i.export_news()
return HttpResponse(200)
return HttpResponse(200)
def paginate(self, query, page):
paginator = Paginator(query, 25)
try:
return paginator.page(page)
except PageNotAnInteger:
return paginator.page(1)
except EmptyPage:
return paginator.page(paginator.num_pages)
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)
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
@method_decorator(login_required, name='dispatch')
class EditNewsView(DetailView):
template_name = 'edit_news.html'
......@@ -145,3 +67,69 @@ class AddNewsView(CreateView):
form.create()
return HttpResponseRedirect(reverse('list_news'))
@method_decorator(login_required, name='post')
class ListNewsView(ListView):
context_object_name = 'news'
queryset = News.objects.filter(is_accepted=False).order_by('-id')
template_name = 'list_news.html'
sort_fields = ('media_id', 'type_id', 'region_id', 'publish_date', 'title')
def post(self, request, *args, **kwargs):
if request.is_ajax():
data = json.loads(request.body.decode('utf-8'))
type_request = data['type']
ids = data['id']
if type_request in ['delete', 'deleteAll']:
self._delete(ids)
if type_request == 'edit':
return HttpResponse({'ids': ids})
if type_request == 'exportAll':
for i in News.objects.filter(pk__in=ids):
i.export_news()
return HttpResponse(200)
return HttpResponse(200)
def get_queryset(self):
data = self.request.GET
media = data.get('media')
from_date = data.get('from_date')
to_date = data.get('to_date')
tag = data.get('tag')
search = data.get('search')
order_by = data.get('order_by')
if tag:
self.queryset = self.queryset.filter(tags_id__contains='{},'.format(WpEsiTag.objects.get(name=tag).id))
if data.get('reverse'):
self.queryset = self.queryset.reverse()
if order_by in self.sort_fields:
self.queryset = self.queryset.order_by(order_by)
if search:
self.queryset = self.queryset.filter(Q(title__icontains=search) | Q(description__icontains=search))
if from_date:
self.queryset = self.queryset.filter(publish_date__gte=from_date)
if to_date:
self.queryset = self.queryset.filter(publish_date__lte=to_date)
if media and media != 'All':
self.queryset = self.queryset.filter(media_id=WpEsiMedia.objects.get(name=media).pk)
return self.queryset
def get_context_data(self, **kwargs):
context = super(ListNewsView, self).get_context_data(**kwargs)
context['media'] = WpEsiMedia.objects.all()
min_max_date = News.objects.aggregate(Min('publish_date'), Max('publish_date'))
min_max_date['publish_date__min'] = str(min_max_date['publish_date__min'].date())
min_max_date['publish_date__max'] = str(min_max_date['publish_date__max'].date())
context['date'] = min_max_date
return context
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)
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment