Commit b34d29ff authored by Mario Chirinos's avatar Mario Chirinos

api

parent 60cd6644
......@@ -22,7 +22,7 @@ class AuthRequiredMiddleware(object):
if request.path_info == reverse('ws-news-list2') or request.path_info == reverse('signup'):
if request.path_info == reverse('api-download-news') reverse('ws-news-list2') or request.path_info == reverse('signup'):
return response
if not request.user.is_authenticated and request.path_info != reverse('login'):
......
......@@ -24,7 +24,7 @@ urlpatterns = [
url(r'^ws/playlist/(?P<publisher>\w+)/(?P<start>\w+)/(?P<end>\w+)/$', views.wsAudioList, name='ws-audio-list'),
url(r'^ws/wordcloud/(?P<newsId>\w+)/$', views.wsWordCloud, name='ws-wordcloud'),
url(r'^ws/suggestions/(?P<newsId>\w+)/$', views.wsSuggestions, name='ws-suggestions'),
url(r'^api/download/$', views.apiDownloadNews, name='api-download-news'),
url(r'^audio/$', views.audioList, name='audio'),
url(r'^audio/(?P<publisher>\w+)$', views.audioPublisher, name='audio'),
......
......@@ -5,7 +5,7 @@ from django.shortcuts import render
# Create your views here.
from django.conf import settings
from catalog.models import Publisher, News, Search, audioTime
from catalog.models import Publisher, News, Search, audioTime, Apikey
from django.core.exceptions import ObjectDoesNotExist
from django.shortcuts import redirect
from django.http import HttpResponse
......@@ -381,7 +381,7 @@ def wsNewsList(request):#, publisherShortName="all"):
except PageNotAnInteger:
news = paginator.page(1)
except EmptyPage:
news = paginator.page(paginator.num_pages)
news = paginator.page(paginator.num_pages)
for n in news:
row = list()
......@@ -426,6 +426,38 @@ def wsDownloadNews(request):
response = HttpResponse(s.getvalue(), content_type="application/x-zip-compressed")
response['Content-Disposition'] = 'attachment; filename="news_'+ str(int(time.time()))+'.zip"'
return response
#-------------------------------------------------------------------------------
def apiDownloadNews(request):
apiuser = Apikey.objects.get(key=request.GET["key"]]).user
if apiuser is None:
return HttpResponse(json.dumps("{}"), content_type="application/json")
else:
request.user=apiuser
news = getNewsByRequest(request)
s = BytesIO()
zf = zipfile.ZipFile(s, "w")
zf.writestr("setting.txt", json.dumps(request.GET))
data = news2JSON(news);
if request.GET['format']=="JSON":
zf.writestr("data.json", json.dumps(data))
if request.GET['format']=="CSV":
csvString = StringIO()
writer = csv.writer(csvString,quoting=csv.QUOTE_ALL)
for d in data:
row = [ d[k] 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
#-------------------------------------------------------------------------------
def wsWordCloud(request, newsId):
text = News.objects.filter(id=newsId)[0].text
......
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