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

admin

parent 8732738a
...@@ -5,5 +5,9 @@ from django.contrib import admin ...@@ -5,5 +5,9 @@ from django.contrib import admin
from catalog.models import Publisher from catalog.models import Publisher
admin.site.register(Publisher) #admin.site.register(Publisher)
class PublisherAdmin(admin.ModelAdmin):
list_display = ('name', 'shortName', 'type', 'url')
admin.site.register(Publisher, PublisherAdmin)
No preview for this file type
...@@ -53,11 +53,11 @@ ...@@ -53,11 +53,11 @@
<ul class="nav nav-second-level" aria-expanded="true"> <ul class="nav nav-second-level" aria-expanded="true">
<form role="form"> <form role="form">
<li> <li>
<a href="#">JSON</a> <a href="{% url 'ws-download-news' %}?{{ request.GET.urlencode }}&format=JSON" target="blank">JSON</a>
</li> </li>
<li> <li>
<a href="#">CSV</a> <a href="{% url 'ws-download-news' %}?{{ request.GET.urlencode }}&format=CSV" target="blank">CSV</a>
</li> </li>
......
...@@ -19,9 +19,24 @@ import urllib ...@@ -19,9 +19,24 @@ 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 time
import zipfile
import csv
from django.db.models.functions import TruncMonth, TruncYear from django.db.models.functions import TruncMonth, TruncYear
#------------------------------------------------------------------------------- #-------------------------------------------------------------------------------
def news2JSON(news):
data = list()
for n in news:
item = dict()
item['date'] = n.date.strftime('%Y-%m-%d')
item['publisher'] = n.publisher.name
item['title'] = n.title
item['text'] = n.text
item['url'] = n.url
data.append(item)
return data
#-------------------------------------------------------------------------------
def getNewsByRequest(request): def getNewsByRequest(request):
print "getNewsByRequest\n\n\n" print "getNewsByRequest\n\n\n"
...@@ -54,11 +69,12 @@ def index(request): ...@@ -54,11 +69,12 @@ def index(request):
news = getNewsByRequest(request) news = getNewsByRequest(request)
form = SearchForm(request.GET.copy()) form = SearchForm(request.GET.copy())
if 'startDate' not in form or ('startDate' in form and form['startDate'].value == ""): if len(news)>0:
form.data.update({'startDate':news.earliest('date').date.strftime("%Y-%m-%d")}) if 'startDate' not in form or ('startDate' in form and form['startDate'].value == ""):
form.data.update({'startDate':news.earliest('date').date.strftime("%Y-%m-%d")})
if 'endDate' not in form or ('endDate' in form and form['endDate'].value == ""): if 'endDate' not in form or ('endDate' in form and form['endDate'].value == ""):
form.data.update({'endDate':news.latest('date').date.strftime("%Y-%m-%d")}) form.data.update({'endDate':news.latest('date').date.strftime("%Y-%m-%d")})
info = dict() info = dict()
info['nPublishers'] = news.values('publisher').distinct().count() info['nPublishers'] = news.values('publisher').distinct().count()
...@@ -188,8 +204,28 @@ def wsGraphs(request): ...@@ -188,8 +204,28 @@ def wsGraphs(request):
return HttpResponse(json.dumps(data), content_type="application/json") return HttpResponse(json.dumps(data), content_type="application/json")
#------------------------------------------------------------------------------- #-------------------------------------------------------------------------------
def wsDownloadNews(request): def wsDownloadNews(request):
data=dict() news = getNewsByRequest(request)
s = StringIO.StringIO() # Open StringIO to grab in-memory ZIP contents
zf = zipfile.ZipFile(s, "w") # The zip compressor
zf.writestr("setting.txt", json.dumps(request.GET))
data = news2JSON(news);
if request.GET['format']=="JSON": if request.GET['format']=="JSON":
data = 0; zf.writestr("data.json", json.dumps(data))
return HttpResponse(json.dumps(data), content_type="application/json")
if request.GET['format']=="CSV":
csvString = StringIO.StringIO()
writer = csv.writer(csvString,quoting=csv.QUOTE_ALL)#, fieldnames=[k for k in data[0]])
# writer.writeheader()
for d in data:
row = [ d[k].encode('utf-8') for k in d ]
writer.writerow( row )
zf.writestr("data.csv", csvString.getvalue())
zf.close()
response = HttpResponse(s.getvalue(), content_type="application/x-zip-compressed")
response['Content-Disposition'] = 'attachment; filename="news_'+ str(int(time.time()))+'.zip"'
return response
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