Commit beef9215 authored by Mario Chirinos Colunga's avatar Mario Chirinos Colunga 💬

mario

parent fe43e886
...@@ -2,8 +2,13 @@ ...@@ -2,8 +2,13 @@
from django import forms from django import forms
#from django.contrib.auth.forms import UserCreationForm #from django.contrib.auth.forms import UserCreationForm
#from django.contrib.auth.models import User #from django.contrib.auth.models import User
from catalog.models import Publisher, News from catalog.models import Publisher, News, Profile
from django.db.models import Q from django.db.models import Q
from django.contrib.admin.widgets import FilteredSelectMultiple
import os
from django.conf import settings
from django.urls import reverse
class SearchForm(forms.Form): class SearchForm(forms.Form):
startDate = forms.DateField(label="Fecha de Inicio", widget=forms.DateInput(attrs={'type':'date', 'class':"form-control"}), required=False) startDate = forms.DateField(label="Fecha de Inicio", widget=forms.DateInput(attrs={'type':'date', 'class':"form-control"}), required=False)
...@@ -19,11 +24,18 @@ class SearchForm(forms.Form): ...@@ -19,11 +24,18 @@ class SearchForm(forms.Form):
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
super(SearchForm, self).__init__(*args, **kwargs) super(SearchForm, self).__init__(*args, **kwargs)
news = News.objects.all() news = News.objects.all()
publishersList = Publisher.objects.all().filter( Q(id__in = news.values('publisher').distinct())) publishersList = Publisher.objects.all().filter( Q(id__in = news.values('publisher').distinct()))
choice = [ (r.id,r.name) for r in publishersList ] choice = [ (r.id,r.name) for r in publishersList ]
self.fields['publishers'] = forms.MultipleChoiceField(label="Fuentes", widget=forms.SelectMultiple(attrs={'class':"form-control"}), choices=choice, required=False) self.fields['publishers'] = forms.MultipleChoiceField(label="Fuentes", widget=forms.SelectMultiple(attrs={'class':"form-control"}), choices=choice, required=False)
class ProfileForm(forms.Form):
subscriptions = forms.ModelMultipleChoiceField(queryset=Publisher.objects.all(), widget=FilteredSelectMultiple("Publishers", is_stacked=False), required=False)
class Media:
# Django also includes a few javascript files necessary
# for the operation of this form element. You need to
# include <script src="/admin/jsi18n"></script>
# in the temple
css = {'all': (os.path.join(settings.BASE_DIR, '/static/admin/css/widgets.css'),),}
js = ('/catalog/js/jsi18n',)
No preview for this file type
from django.core.management.base import BaseCommand, CommandError
from catalog.models import News, Publisher, Topic
from django.db.models import Q
import os
import json
import datetime
from django.utils import timezone
import dateutil.parser
class Command(BaseCommand):
help = 'Update database'
def add_arguments(self, parser):
parser.add_argument('basedir', nargs=1, type=str)
def handle(self, *args, **options):
os.chdir(options['basedir'][0])
publisherList = os.listdir(options['basedir'][0])
for p in publisherList:
print p
os.chdir(p)
publisher = Publisher.objects.all().filter(shortName=p)[0]
news = News.objects.all().filter(publisher=publisher.id).order_by("-date")
# print publisher.id
minYear = 0
lastDate = datetime.datetime(1950,1,1)
# print news.count()
if news.count()>0:
minYear = news[0].date.year
lastDate = news[0].date
yearList = [ int(y) for y in os.listdir('.')]
# print "LastDate"+str(lastDate)
print yearList
for y in yearList:
if y >=minYear:
os.chdir(str(y))
print os.getcwd()
filesList = os.listdir(".")
for f in filesList:
# print "file: " + f
fileDate = datetime.datetime.strptime(f[:f.find(".")], "%Y-%m-%d").date()
if fileDate >= lastDate.date():
# print "fileDate: " + str(fileDate)
with open(f) as data_file:
try:
data = json.load(data_file)
for d in data:
# if d['date'].find("+") >=0:
# date =d['date'][:d['date'].find("+")].replace("T", " ")
# newsDate = datetime.datetime.strptime(date, "%Y-%m-%d %H:%M:%S")
# else:
# date = d['date']
# newsDate = datetime.datetime.strptime(date, "%Y-%m-%d")
# print d['date']
# print d['title']
newsDate = dateutil.parser.parse(d['date'])
# newsDate = timezone.make_aware(newsDate, timezone.get_current_timezone())
# print "newsDate:"
# print newsDate
if News.objects.all().filter(Q(publisher=publisher.id)&Q(title=d['title'])&Q(date__gte=newsDate)).count() == 0:
# print "no news match"
if d['title'] == None:
d['title'] = "Sin Titulo"
if len(d['title']) >= 512:
d['title'] = d['title'][:500]
print p + " "+ str(newsDate) + ": " + d['title']
# print type(d['topic'])
news = News()
news.publisher = publisher
# print "title"
news.title = d['title']
# print "text"
news.text = d['text']
# print "url"
news.url = d['url']
# print "date"
news.date = newsDate
news.save()
# print "TOPIC: " + str(d['topic'])
# print type(d['topic'])
if d['topic'] == "" or d['topic'] == None or d['topic'] ==[]:
d['topic'] = "Sin Tema"
if type(d['topic'])=="list":
for t in d['topic']:
topic, created = Topic.objects.all().get_or_create(name=t)
news.topic.add(topic)
else:
topic, created = Topic.objects.all().get_or_create(name=d['topic'])
news.topic.add(topic)
# print news.date
# print d['date']
# #news.save()
# except (RuntimeError, TypeError, NameError, ValueError) as e:
except ValueError as e:
print e
# print e.NameError
print "Error: " + os.getcwd()+"/"+f
print type(d['topic'])
# print "TOPIC: " + str(d['topic'])
data_file.close()
os.chdir("..")
os.chdir("..")
...@@ -12,6 +12,10 @@ class AuthRequiredMiddleware(object): ...@@ -12,6 +12,10 @@ class AuthRequiredMiddleware(object):
response = self.get_response(request) response = self.get_response(request)
print request.path_info print request.path_info
print reverse('login') print reverse('login')
if request.path_info == reverse('ws-news-list2'):
return response
if not request.user.is_authenticated() and request.path_info != reverse('login'): if not request.user.is_authenticated() and request.path_info != reverse('login'):
return HttpResponseRedirect(reverse('login')) return HttpResponseRedirect(reverse('login'))
......
No preview for this file type
# -*- coding: utf-8 -*-
# Generated by Django 1.11.7 on 2017-12-13 00:06
from __future__ import unicode_literals
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('catalog', '0006_auto_20171126_0109'),
]
operations = [
migrations.CreateModel(
name='Profile',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
],
),
]
# -*- coding: utf-8 -*-
# Generated by Django 1.11.7 on 2017-12-13 01:57
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('catalog', '0007_profile'),
]
operations = [
migrations.AddField(
model_name='profile',
name='subscriptions',
field=models.ManyToManyField(to='catalog.Publisher'),
),
]
...@@ -2,8 +2,12 @@ from django.db import models ...@@ -2,8 +2,12 @@ from django.db import models
from django.db.models.fields import TextField from django.db.models.fields import TextField
from django.contrib.postgres.search import SearchVectorField, SearchVector from django.contrib.postgres.search import SearchVectorField, SearchVector
from django.contrib.postgres.indexes import GinIndex from django.contrib.postgres.indexes import GinIndex
from django.contrib.auth.models import User
from django.db.models.signals import post_save
from django.dispatch import receiver
# Create your models here. # Create your models here.
class Publisher(models.Model): class Publisher(models.Model):
name = models.CharField(max_length=128) name = models.CharField(max_length=128)
shortName = models.CharField(max_length=32, default="") shortName = models.CharField(max_length=32, default="")
...@@ -12,7 +16,7 @@ class Publisher(models.Model): ...@@ -12,7 +16,7 @@ class Publisher(models.Model):
url = models.URLField(default="") url = models.URLField(default="")
def __str__(self): def __str__(self):
return self.name return self.shortName
class Meta: class Meta:
verbose_name = 'Medio' verbose_name = 'Medio'
...@@ -61,3 +65,19 @@ class News(models.Model): ...@@ -61,3 +65,19 @@ class News(models.Model):
verbose_name_plural = 'Noticias' verbose_name_plural = 'Noticias'
ordering = ('date',) ordering = ('date',)
indexes = [ GinIndex(fields=['search_vector']) ] indexes = [ GinIndex(fields=['search_vector']) ]
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
subscriptions = models.ManyToManyField(Publisher)
@receiver(post_save, sender=User)
def create_user_profile(sender, instance, created, **kwargs):
if created:
Profile.objects.create(user=instance)
@receiver(post_save, sender=User)
def save_user_profile(sender, instance, **kwargs):
instance.profile.save()
No preview for this file type
...@@ -19,47 +19,44 @@ ...@@ -19,47 +19,44 @@
<!-- /.navbar-header --> <!-- /.navbar-header -->
<ul class="nav navbar-top-links navbar-right"> <ul class="nav navbar-top-links navbar-right">
<li class="dropdown">
<a class="dropdown-toggle" data-toggle="dropdown" href="#">
<i class="fa fa-envelope fa-fw"></i> <i class="fa fa-caret-down"></i>
</a>
<ul class="dropdown-menu dropdown-messages">
{% block dropdown-messages %}{% endblock %}
</ul>
<!-- /.dropdown-messages --> <!-- /.dropdown-messages -->
</li> <!-- <li class="dropdown">-->
<!-- /.dropdown --> <!-- <a class="dropdown-toggle" data-toggle="dropdown" href="#">-->
<li class="dropdown"> <!-- <i class="fa fa-envelope fa-fw"></i> <i class="fa fa-caret-down"></i>-->
<a class="dropdown-toggle" data-toggle="dropdown" href="#"> <!-- </a>-->
<i class="fa fa-tasks fa-fw"></i> <i class="fa fa-caret-down"></i> <!-- <ul class="dropdown-menu dropdown-messages">-->
</a> <!-- {% block dropdown-messages %}{% endblock %} -->
<ul class="dropdown-menu dropdown-tasks"> <!-- </ul>-->
{% block dropdown-tasks %}{% endblock %} <!-- </li>-->
</ul>
<!-- /.dropdown-tasks --> <!-- /.dropdown-tasks -->
</li> <!-- <li class="dropdown">-->
<!-- /.dropdown --> <!-- <a class="dropdown-toggle" data-toggle="dropdown" href="#">-->
<li class="dropdown"> <!-- <i class="fa fa-tasks fa-fw"></i> <i class="fa fa-caret-down"></i>-->
<a class="dropdown-toggle" data-toggle="dropdown" href="#"> <!-- </a>-->
<i class="fa fa-bell fa-fw"></i> <i class="fa fa-caret-down"></i> <!-- <ul class="dropdown-menu dropdown-tasks">-->
</a> <!-- {% block dropdown-tasks %}{% endblock %} -->
<ul class="dropdown-menu dropdown-alerts"> <!-- </ul>-->
{% block dropdown-alerts %}{% endblock %} <!-- </li>-->
</ul>
<!-- /.dropdown-alerts --> <!-- /.dropdown-alerts -->
</li> <!-- <li class="dropdown">-->
<!-- <a class="dropdown-toggle" data-toggle="dropdown" href="#">-->
<!-- <i class="fa fa-bell fa-fw"></i> <i class="fa fa-caret-down"></i>-->
<!-- </a>-->
<!-- <ul class="dropdown-menu dropdown-alerts">-->
<!-- {% block dropdown-alerts %}{% endblock %} -->
<!-- </ul>-->
<!-- </li>-->
<!-- /.dropdown --> <!-- /.dropdown -->
<li class="dropdown"> <li class="dropdown">
<a class="dropdown-toggle" data-toggle="dropdown" href="#"> <a class="dropdown-toggle" data-toggle="dropdown" href="#">
<i class="fa fa-user fa-fw"></i> <i class="fa fa-caret-down"></i> <i class="fa fa-user fa-fw"></i> <i class="fa fa-caret-down"></i>
</a> </a>
<ul class="dropdown-menu dropdown-user"> <ul class="dropdown-menu dropdown-user">
<li><a href="#"><i class="fa fa-user fa-fw"></i> {{ user.get_username }}</a> <li><a href="{% url 'settings-profile' %}"><i class="fa fa-user fa-fw"></i> {{ user.get_username }}</a>
</li> </li>
<li><a href="#"><i class="fa fa-gear fa-fw"></i> Settings</a> <li><a href="{% url 'settings' %}"><i class="fa fa-gear fa-fw"></i> Settings</a>
</li> </li>
<li class="divider"></li> <li class="divider"></li>
<li><a href="{% url 'logout'%}?next={{request.path}}"><i class="fa fa-sign-out fa-fw"></i> Logout</a> <li><a href="{% url 'logout'%}?next={{request.path}}"><i class="fa fa-sign-out fa-fw"></i> Logout</a>
...@@ -70,9 +67,10 @@ ...@@ -70,9 +67,10 @@
<!-- /.dropdown --> <!-- /.dropdown -->
</ul> </ul>
<!-- /.navbar-top-links --> <!-- /.navbar-top-links -->
{% include "leftMenuBar.html" %}
<div class="navbar-default sidebar" role="navigation">
{% block lefPanel %}{% endblock %}
</div>
<!-- /.navbar-static-side --> <!-- /.navbar-static-side -->
</nav> </nav>
......
...@@ -12,6 +12,10 @@ ...@@ -12,6 +12,10 @@
<link rel="icon" href="{% static 'images/m3.png' %}"> <link rel="icon" href="{% static 'images/m3.png' %}">
<title>Monitoreo de Multiples Medios</title> <title>Monitoreo de Multiples Medios</title>
{% load staticfiles %}
<script type="text/javascript" src="{% static 'static_jquery/js/jquery.js' %}" ></script>
<script type="text/javascript" src="{% static 'admin/js/jquery.init.js' %}" ></script>
<!-- Custom CSS --> <!-- Custom CSS -->
<!-- Bootstrap Core CSS --> <!-- Bootstrap Core CSS -->
...@@ -43,13 +47,14 @@ ...@@ -43,13 +47,14 @@
<![endif]--> <![endif]-->
<!-- /#wrapper --> <!-- /#wrapper -->
{% block headMedia %}{% endblock %}
</head> </head>
<body> <body>
{% block budy %}{% endblock %} {% block budy %}{% endblock %}
<!-- jQuery --> <!-- jQuery -->
<script src="{% static 'vendor/jquery/jquery.min.js' %}"></script> <script src="{% static 'vendor/jquery/jquery.min.js' %}"></script>
<!-- Bootstrap Core JavaScript --> <!-- Bootstrap Core JavaScript -->
...@@ -69,6 +74,8 @@ ...@@ -69,6 +74,8 @@
<!-- Custom Theme JavaScript --> <!-- Custom Theme JavaScript -->
<script src="{% static 'dist/js/sb-admin-2.js' %}"></script> <script src="{% static 'dist/js/sb-admin-2.js' %}"></script>
{% block scripts %}{% endblock %} {% block scripts %}{% endblock %}
</body> </body>
......
{% extends "base_generic.html" %} {% extends "base_generic.html" %}
{% block lefPanel %}{% include "leftMenuBar.html" %}{% endblock %}
{% block dash %} {% block dash %}
<!-- /.row --> <!-- /.row -->
<div class="row"> <div class="row">
{% block infoPanels %}{% endblock %} {% block infoPanels %}{% endblock %}
......
{% extends "base_index.html" %} {% extends "base_index.html" %}
{% block dash-title %} {% block dash-title %}
<b>{{form.text.value|default:"Tablero"|capfirst}}</b> <b>{{form.text.value|default:"Tablero"|capfirst}}</b>
...@@ -66,7 +67,7 @@ ...@@ -66,7 +67,7 @@
<i class="fa fa-database fa-5x"></i> <i class="fa fa-database fa-5x"></i>
</div> </div>
<div class="col-xs-9 text-right"> <div class="col-xs-9 text-right">
<div class="huge">{{info.nNews|intcomma}}</div> <div class="huge">{{info.nNewsText}}</div>
<div>Noticias</div> <div>Noticias</div>
</div> </div>
</div> </div>
......
<div class="navbar-default sidebar" role="navigation">
<div class="sidebar-nav navbar-collapse"> <div class="sidebar-nav navbar-collapse">
<ul class="nav" id="side-menu"> <ul class="nav" id="side-menu">
...@@ -66,6 +66,6 @@ ...@@ -66,6 +66,6 @@
</li> </li>
</ul> </ul>
</div>
<!-- /.sidebar-collapse -->
</div> </div>
<!-- /.sidebar-collapse -->
{% extends "base_generic.html" %} {% extends "base_generic.html" %}
{% block lefPanel %}{% include "leftMenuBar.html" %}{% endblock %}
{% load app_filters %} {% load app_filters %}
{% block dash-title %}<a href="{{news.publisher.url}}" target="blank">{{news.publisher.name}}</a>{% endblock %} {% block dash-title %}<a href="{{news.publisher.url}}" target="blank">{{news.publisher.name}}</a>{% endblock %}
......
{% extends "base_generic.html" %} {% extends "base_generic.html" %}
{% block lefPanel %}{% include "leftMenuBar.html" %}{% endblock %}
{% block dash-title %} {% block dash-title %}
<b>{{form.text.value|default:"Noticias"|capfirst}}</b> <b>{{form.text.value|default:"Noticias"|capfirst}}</b>
......
{% extends "base_generic.html" %} {% extends "base_generic.html" %}
{% block lefPanel %}{% include "leftMenuBar.html" %}{% endblock %}
{% load humanize %} {% load humanize %}
{% block dash-title %} {% block dash-title %}
......
{% extends "base_generic.html" %}
{% block lefPanel %}
<div class="sidebar-nav navbar-collapse">
<ul class="nav" id="side-menu">
<li>
<a href="{% url 'settings-profile' %}"><i class="fa fa-user fa-fw"></i>Perfil</a>
</li>
<li>
<a href="{% url 'settings-password' %}"><i class="fa fa-lock fa-fw"></i>Contraseña</a>
</li>
<li>
<a href="{% url 'settings-subscriptions' %}"><i class="fa fa-rss fa-fw"></i>Subscripciones</a>
</li>
<!-- <li>-->
<!-- <a href=""><i class="fa fa-user fa-rss"></i>Subscripciones</a>-->
<!-- </li>-->
</ul>
</div>
{% endblock %}
{% block dash %}
<!-- /.row -->
<div class="row">
{% block infoPanels %}{% endblock %}
</div>
<!-- /.row -->
<div class="row">
{% block graphs1 %}{% endblock %}
</div>
{% endblock %}
{% extends "settings_base.html" %}
{% block headMedia %}
{{ form.media }}
{% endblock %}
{% block dash-title %}
<b>{{form.text.value|default:"Perfi de usuario"|capfirst}}</b>
{% endblock %}
{% block infoPanels %}
<form method="post">
{% csrf_token %}
<div>{{ form }}</div>
<div><button type="submit">Save changes</button></div>
</form>
{% endblock %}
{% block scripts %}
<script>
</script>
{% endblock %}
from django.conf.urls import url from django.conf.urls import url
from . import views from . import views
from django.views.i18n import javascript_catalog
urlpatterns = [ urlpatterns = [
url(r'^$', views.index, name='index'), url(r'^$', views.index, name='index'),
url(r'^js/jsi18n/$', javascript_catalog, name='jsi18n'),
url(r'^publishers/$', views.publisherList, name='publishers-list'), url(r'^publishers/$', views.publisherList, name='publishers-list'),
url(r'^publishers/(?P<type>\w+)$', views.publisherList, name='publishers-list'), url(r'^publishers/(?P<type>\w+)$', views.publisherList, name='publishers-list'),
url(r'^news/details/(?P<newsId>\w+)/$', views.newsDetails, name='news-details'), url(r'^news/details/(?P<newsId>\w+)/$', views.newsDetails, name='news-details'),
url(r'^news/$', views.newsList, name='news-list'), url(r'^news/$', views.newsList, name='news-list'),
url(r'^ws/news/$', views.wsNewsList, name='ws-news-list'), url(r'^ws/news/$', views.wsNewsList, name='ws-news-list'),
url(r'^ws/jsonnews/$', views.wsNewsList2, name='ws-news-list2'),
url(r'^ws/graphs/$', views.wsGraphs, name='ws-graphs'), url(r'^ws/graphs/$', views.wsGraphs, name='ws-graphs'),
url(r'^ws/download/$', views.wsDownloadNews, name='ws-download-news'), url(r'^ws/download/$', views.wsDownloadNews, name='ws-download-news'),
url(r'^audio/$', views.audioList, name='audio'), url(r'^audio/$', views.audioList, name='audio'),
url(r'^audio/(?P<publisher>\w+)$', views.audioPublisher, name='audio'), url(r'^audio/(?P<publisher>\w+)$', views.audioPublisher, name='audio'),
url(r'^settings/$', views.settings, name='settings'),
url(r'^settings/profile$', views.settings, name='settings-profile'),
url(r'^settings/subscriptions$', views.settings, name='settings-subscriptions'),
url(r'^settings/password$', views.settings, name='settings-password'),
] ]
No preview for this file type
...@@ -13,17 +13,21 @@ from django.http import HttpResponse ...@@ -13,17 +13,21 @@ from django.http import HttpResponse
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
import json import json
import datetime import datetime
from dateutil.relativedelta import relativedelta
from django.db.models import Q from django.db.models import Q
from .forms import SearchForm from .forms import SearchForm, ProfileForm
import urllib import urllib
from django.db.models import Count from django.db.models import Count
from django.core.urlresolvers import reverse from django.core.urlresolvers import reverse
import json import json
import StringIO import StringIO
#from io import StringIO
import time import time
import zipfile import zipfile
import csv import csv
from django.db.models.functions import TruncMonth, TruncYear from django.db.models.functions import TruncMonth, TruncYear
from quantiphy import Quantity
#------------------------------------------------------------------------------- #-------------------------------------------------------------------------------
def news2JSON(news): def news2JSON(news):
data = list() data = list()
...@@ -37,18 +41,34 @@ def news2JSON(news): ...@@ -37,18 +41,34 @@ def news2JSON(news):
data.append(item) data.append(item)
return data return data
#------------------------------------------------------------------------------- #-------------------------------------------------------------------------------
def settings(request):
form = ProfileForm(request.POST.copy())
print(request.POST)
#User.objects.get(username=)
print( request.user.profile.subscriptions )
if 'subscriptions' in request.POST:
request.user.profile.subscriptions = Publisher.objects.all().filter(id__in=request.POST['subscriptions'])
request.user.save()
print( request.user.profile.subscriptions )
return render(request,'userprofile.html',{"form":form})
#-------------------------------------------------------------------------------
def getNewsByRequest(request): def getNewsByRequest(request):
print "getNewsByRequest\n\n\n" print ("getNewsByRequest\n\n\n")
form = SearchForm(request.GET) form = SearchForm(request.GET)
myQuery = ~Q() myQuery = ~Q()
if 'publishers' in request.GET and request.GET['publishers']!="None" and request.GET['publishers']!="" and request.GET['publishers']!="[]": if 'publishers' in request.GET and request.GET['publishers']!="None" and request.GET['publishers']!="" and request.GET['publishers']!="[]":
myQuery &= Q(publisher_id__in=form['publishers'].value()) myQuery &= Q(publisher_id__in=form['publishers'].value())
if 'startDate' in request.GET and request.GET['startDate']!="None" and request.GET['startDate']!="": if 'startDate' in request.GET and request.GET['startDate']!="None" and request.GET['startDate']!="":
myQuery &= Q(date__gte=request.GET['startDate']) myQuery &= Q(date__gte=request.GET['startDate'])
else:
myQuery &= Q(date__gte=(datetime.date.today()- relativedelta(years=1)).strftime("%Y-%m-%d"))
if 'endDate' in request.GET and request.GET['endDate']!="None" and request.GET['endDate']!="": if 'endDate' in request.GET and request.GET['endDate']!="None" and request.GET['endDate']!="":
myQuery &= Q(date__lte=request.GET['endDate']) myQuery &= Q(date__lte=request.GET['endDate'])
...@@ -57,7 +77,7 @@ def getNewsByRequest(request): ...@@ -57,7 +77,7 @@ def getNewsByRequest(request):
# myQuery &= Q(text__search=request.GET['text']) # myQuery &= Q(text__search=request.GET['text'])
myQuery &= Q(search_vector=request.GET['text']) myQuery &= Q(search_vector=request.GET['text'])
print myQuery print (myQuery)
return News.objects.all().filter(myQuery) return News.objects.all().filter(myQuery)
...@@ -79,6 +99,7 @@ def index(request): ...@@ -79,6 +99,7 @@ def index(request):
info = dict() info = dict()
info['nPublishers'] = news.values('publisher').distinct().count() info['nPublishers'] = news.values('publisher').distinct().count()
info['nNews'] = news.count() info['nNews'] = news.count()
info['nNewsText'] = Quantity(news.count()).render(prec=3)
info['nAudio'] = Publisher.objects.all().filter(type="audio").count() info['nAudio'] = Publisher.objects.all().filter(type="audio").count()
queryset = news.values("publisher").order_by("publisher").annotate(count = Count('publisher') ) queryset = news.values("publisher").order_by("publisher").annotate(count = Count('publisher') )
...@@ -88,7 +109,7 @@ def index(request): ...@@ -88,7 +109,7 @@ def index(request):
myRequest = request.GET.copy() myRequest = request.GET.copy()
myRequest.update({"publishers":q['publisher']}) myRequest.update({"publishers":q['publisher']})
urlDict[q['publisher']] = urllib.urlencode(myRequest) urlDict[q['publisher']] = urllib.urlencode(myRequest)
print urlDict print (urlDict)
donutChart = [{"label": Publisher.objects.get(id=q['publisher']).name, "value":q["count"], "url":urlDict[q['publisher']]} for q in queryset] donutChart = [{"label": Publisher.objects.get(id=q['publisher']).name, "value":q["count"], "url":urlDict[q['publisher']]} for q in queryset]
...@@ -141,9 +162,15 @@ def newsList(request, publisherShortName="all"): ...@@ -141,9 +162,15 @@ def newsList(request, publisherShortName="all"):
return render(request,'newsList.html',{"form":form}) return render(request,'newsList.html',{"form":form})
#------------------------------------------------------------------------------- #-------------------------------------------------------------------------------
def wsNewsList2(request):
news = getNewsByRequest(request)
data = [{"id":n.id, "text":n.text, "date":n.date.strftime('%Y-%m-%d')} for n in news]
return HttpResponse(json.dumps(data), content_type="application/json")
#-------------------------------------------------------------------------------
def wsNewsList(request):#, publisherShortName="all"): def wsNewsList(request):#, publisherShortName="all"):
print request.GET print (request.GET)
columns = ['title', 'url', 'date'] columns = ['title', 'url', 'date']
order = dict() order = dict()
order["asc"]="" order["asc"]=""
......
No preview for this file type
...@@ -40,6 +40,7 @@ INSTALLED_APPS = [ ...@@ -40,6 +40,7 @@ INSTALLED_APPS = [
'django.contrib.humanize', 'django.contrib.humanize',
'catalog.apps.CatalogConfig', 'catalog.apps.CatalogConfig',
'django.contrib.postgres', 'django.contrib.postgres',
'django_static_jquery',
] ]
......
...@@ -19,6 +19,7 @@ from django.conf.urls import include ...@@ -19,6 +19,7 @@ from django.conf.urls import include
from django.views.generic import RedirectView from django.views.generic import RedirectView
from django.conf.urls.static import static from django.conf.urls.static import static
from django.conf import settings from django.conf import settings
from django.views.i18n import javascript_catalog
urlpatterns = [ urlpatterns = [
url(r'^admin/', admin.site.urls), url(r'^admin/', admin.site.urls),
......
No preview for this file type
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