Commit 3aa8ea79 authored by Vasyl Bodnaruk's avatar Vasyl Bodnaruk

add simple pagination

parent 0e70462a
...@@ -37,6 +37,7 @@ INSTALLED_APPS = [ ...@@ -37,6 +37,7 @@ INSTALLED_APPS = [
'django.contrib.sessions', 'django.contrib.sessions',
'django.contrib.messages', 'django.contrib.messages',
'django.contrib.staticfiles', 'django.contrib.staticfiles',
'el_pagination',
'webapp.apps.WebappConfig', 'webapp.apps.WebappConfig',
] ]
...@@ -64,6 +65,7 @@ TEMPLATES = [ ...@@ -64,6 +65,7 @@ TEMPLATES = [
'django.template.context_processors.request', 'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth', 'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages', 'django.contrib.messages.context_processors.messages',
'django.template.context_processors.request',
], ],
}, },
}, },
......
...@@ -116,7 +116,15 @@ $(document).ready(function() { ...@@ -116,7 +116,15 @@ $(document).ready(function() {
ajaxPost('/news/', data); ajaxPost('/news/', data);
}); });
// $(actionView).on('click', function(e) { $(actionDelete).on('click', function(e) {
// e.preventDefault();
updateCounter();
// var data = actionData(this);
// console.log(data);
// ajaxPost('/news/', data);
});
// $(actionView).on('click', function(e) {
// e.preventDefault(); // e.preventDefault();
// var data = actionData(this); // var data = actionData(this);
// ajaxPost('/news/', data); // ajaxPost('/news/', data);
...@@ -127,13 +135,6 @@ $(document).ready(function() { ...@@ -127,13 +135,6 @@ $(document).ready(function() {
// var data = actionData(this); // var data = actionData(this);
// ajaxPost('/news/', data); // ajaxPost('/news/', data);
// }); // });
$(actionDelete).on('click', function(e) {
e.preventDefault();
var data = actionData(this);
console.log(data);
ajaxPost('/news/', data);
});
}); });
...@@ -143,4 +144,4 @@ $(document).ready(function() { ...@@ -143,4 +144,4 @@ $(document).ready(function() {
$(document).ready(function() { $(document).ready(function() {
$('.multiselect').fastselect(); $('.multiselect').fastselect();
$('#publish-date').datepicker(); $('#publish-date').datepicker();
}); });
\ No newline at end of file
...@@ -210,6 +210,9 @@ ...@@ -210,6 +210,9 @@
</div> </div>
<!-- Submit --> <!-- Submit -->
<div class="form-group row"> <div class="form-group row">
<div class="offset-4 col-2">
<a class="form-control btn btn-danger" href="/news">Cancel</a>
</div>
<div class="offset-7 col-2"> <div class="offset-7 col-2">
<button type="submit" class="form-control btn btn-primary">Update</button> <button type="submit" class="form-control btn btn-primary">Update</button>
</div> </div>
......
{% extends "base.html" %} {% extends "base.html" %}
{% load el_pagination_tags %}
{% block title %} {% block title %}
<title>List news</title> <title>List news</title>
{% endblock %} {% endblock %}
...@@ -13,12 +13,9 @@ ...@@ -13,12 +13,9 @@
<div class="collapse navbar-collapse" id="navbarTogglerDemo01"> <div class="collapse navbar-collapse" id="navbarTogglerDemo01">
<div class="actions mr-auto"> <div class="actions mr-auto">
<form class="actions-form" method="get" action="{% url 'list_news' %}"> <form class="actions-form" method="get" action="{% url 'list_news' %}">
<div style="display: block;">
<label>Date: </label> <label>Date: </label>
<input type="date" name="from_date" value="{{ date.record_date__min }}"> <input type="date" name="from_date" value="{{ date.record_date__min }}">
<input type="date" name="to_date" value="{{ date.record_date__max }}"> <input type="date" name="to_date" value="{{ date.record_date__max }}">
</div>
<div style="display: block;">
<label>Media:</label> <label>Media:</label>
<select class="form-control actions-select" name="media"> <select class="form-control actions-select" name="media">
<option>All</option> <option>All</option>
...@@ -26,13 +23,11 @@ ...@@ -26,13 +23,11 @@
<option>{{ i.name }}</option> <option>{{ i.name }}</option>
{% endfor %} {% endfor %}
</select> </select>
</div> <button type="submit" class="btn btn-success">Filter</button>
<div style="display: block;"> <div style="display: block;">
<input type="text" name="search" placeholder="Enter search ..."> <input type="text" name="search" placeholder="Enter search ...">
</div> </div>
<div>
<button type="submit" class="btn btn-success">Filter</button>
</div>
</form> </form>
</div> </div>
<div> <div>
...@@ -48,6 +43,8 @@ ...@@ -48,6 +43,8 @@
</div> </div>
</nav> </nav>
{% paginate news %}
<form class="form"> <form class="form">
<table class="table table-hover"> <table class="table table-hover">
<thead class="thead-inverse"> <thead class="thead-inverse">
...@@ -66,7 +63,6 @@ ...@@ -66,7 +63,6 @@
{% for i in news %} {% for i in news %}
<tr> <tr>
<td> <td>
<span><input id="{{ i.id }}" class="checkbox" type="checkbox"></span>
<span><a href="{% url 'view_news' i.id %}">{{ i.title }}</a></span> <span><a href="{% url 'view_news' i.id %}">{{ i.title }}</a></span>
<div class="action-block"> <div class="action-block">
<a href="{% url 'view_news' i.id %}" target="_blank" data-type="view" <a href="{% url 'view_news' i.id %}" target="_blank" data-type="view"
...@@ -76,6 +72,8 @@ ...@@ -76,6 +72,8 @@
class="action-block-edit"><strong>Edit</strong></a> class="action-block-edit"><strong>Edit</strong></a>
<span class="divider">|</span> <span class="divider">|</span>
<a href="#" data-type="delete" class="action-block-delete"><strong>Delete</strong></a> <a href="#" data-type="delete" class="action-block-delete"><strong>Delete</strong></a>
<span class="divider">|</span>
<span class="action-block-edit"><input id="{{ i.id }}" class="checkbox" type="checkbox"><strong>Export</strong></span>
</div> </div>
</td> </td>
<td>{{ i.get_media }}</td> <td>{{ i.get_media }}</td>
...@@ -87,5 +85,5 @@ ...@@ -87,5 +85,5 @@
</tbody> </tbody>
</table> </table>
</form> </form>
{% show_pages %}
{% endblock %} {% endblock %}
\ No newline at end of file
from datetime import datetime
from django import forms
from .models import News
class NewsUpdate(forms.Form):
def update(self):
news = News.objects.get(pk=self.data['news_id'])
if self.data['title']:
news.title = self.data['title']
if self.data['description']:
news.description = self.data['description']
if self.data['url']:
news.url = self.data['url']
if self.data['radar']:
news.radar_id = self.data['radar']
if self.data['industry']:
news.industry_id = self.data['industry']
if self.data['function']:
news.function_id = self.data['function']
if self.data['media']:
news.media_id = self.data['media']
if self.data['technology']:
news.technology_id = self.data['technology']
if self.data['type']:
news.type_id = self.data['type']
if self.data['region']:
news.region_id = self.data['region']
if self.data['date']:
print(self.data['date'])
news.publish_date = datetime.strptime(self.data['date'], '%Y-%m-%d')
if self.data['tags']:
news.tags_id = [int(i) for i in self.data['tags'].split(',')]
news.save()
...@@ -5,6 +5,7 @@ from django.db.models import Q ...@@ -5,6 +5,7 @@ from django.db.models import Q
from django.http import JsonResponse from django.http import JsonResponse
import json import json
from django.db.models import Max, Min from django.db.models import Max, Min
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
from .models import News, WpEsiNews, WpEsiNewsEntity, WpEsiMedia, WpEsiEntity from .models import News, WpEsiNews, WpEsiNewsEntity, WpEsiMedia, WpEsiEntity
from .forms import NewsUpdate from .forms import NewsUpdate
...@@ -20,6 +21,7 @@ class ListNewsView(ListView): ...@@ -20,6 +21,7 @@ class ListNewsView(ListView):
search = request.GET.get('search') search = request.GET.get('search')
print(from_date, to_date) print(from_date, to_date)
news = News.objects.filter(is_accepted=False).order_by('-id')#.order_by('record_date') news = News.objects.filter(is_accepted=False).order_by('-id')#.order_by('record_date')
if search: if search:
news = news.filter(Q(title__icontains=search) | Q(description__icontains=search)) news = news.filter(Q(title__icontains=search) | Q(description__icontains=search))
if from_date: if from_date:
...@@ -32,6 +34,9 @@ class ListNewsView(ListView): ...@@ -32,6 +34,9 @@ class ListNewsView(ListView):
min_max_date = News.objects.aggregate(Min('record_date'), Max('record_date')) 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__min'] = str(min_max_date['record_date__min'].date())
min_max_date['record_date__max'] = str(min_max_date['record_date__max'].date()) min_max_date['record_date__max'] = str(min_max_date['record_date__max'].date())
# news = self.paginate(news, request.GET.get('page'))
return render(request, self.template_name, {'news': news, return render(request, self.template_name, {'news': news,
'media': media, 'media': media,
'date': min_max_date}) 'date': min_max_date})
...@@ -52,6 +57,15 @@ class ListNewsView(ListView): ...@@ -52,6 +57,15 @@ class ListNewsView(ListView):
i.export_news() 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): def _delete(self, id):
if isinstance(id, list): if isinstance(id, list):
News.objects.filter(id__in=id).update(is_accepted=True) News.objects.filter(id__in=id).update(is_accepted=True)
...@@ -75,7 +89,8 @@ class EditNewsView(DetailView): ...@@ -75,7 +89,8 @@ class EditNewsView(DetailView):
return render(request, self.template_name, {'news': news}) return render(request, self.template_name, {'news': news})
def post(self, request, *args, **kwargs): def post(self, request, *args, **kwargs):
radar = request.POST.get('news_id') radar = request.POST.get('cancel')
print(radar)
form = NewsUpdate(request.POST) form = NewsUpdate(request.POST)
if form.is_valid(): if form.is_valid():
form.update() form.update()
......
...@@ -3,4 +3,5 @@ selenium==3.4.1 ...@@ -3,4 +3,5 @@ selenium==3.4.1
dateparser==0.6.0 dateparser==0.6.0
Django==1.11.1 Django==1.11.1
mysqlclient==1.3.4 mysqlclient==1.3.4
PyVirtualDisplay==0.2.1 PyVirtualDisplay==0.2.1
\ No newline at end of file django-el-pagination==3.1.0
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