update

parent e77142b8
File deleted
File deleted
No preview for this file type
File added
No preview for this file type
File added
No preview for this file type
No preview for this file type
No preview for this file type
File deleted
File deleted
File deleted
......@@ -8,12 +8,11 @@ from django.contrib.admin.widgets import FilteredSelectMultiple
import os
from django.conf import settings
from django.urls import reverse
#-------------------------------------------------------------------------------
class SearchForm(forms.ModelForm):
class Meta:
model = Search
exclude = ["user"]
# fields = '__all__'
widgets = {'startDate': forms.DateInput(attrs={'type':'date', 'class':"form-control"}),
'endDate': forms.DateInput(attrs={'type':'date', 'class':"form-control"}),
......@@ -28,7 +27,7 @@ class SearchForm(forms.ModelForm):
form.user = user
form.save()
#-------------------------------------------------------------------------------
class ProfileForm(forms.Form):
subscriptions = forms.ModelMultipleChoiceField(queryset=Publisher.objects.all(), widget=FilteredSelectMultiple("Publishers", is_stacked=False), required=False)
class Media:
......@@ -38,7 +37,7 @@ class ProfileForm(forms.Form):
# in the temple
css = {'all': (os.path.join(settings.BASE_DIR, '/static/admin/css/widgets.css'),),}
js = ('/catalog/js/jsi18n',)
#-------------------------------------------------------------------------------
class SubscriptionsForm(forms.ModelForm):
# def __init__(self, *args, **kwargs):
......@@ -53,7 +52,7 @@ class SubscriptionsForm(forms.ModelForm):
fields = ('subscriptions',)
# field_classes = {'subscriptions': forms.ModelMultipleChoiceField,}
widgets = {'subscriptions': FilteredSelectMultiple("Publishers", is_stacked=False),}
class Media:
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>
......@@ -61,7 +60,4 @@ class SubscriptionsForm(forms.ModelForm):
css = {'all': (os.path.join(settings.BASE_DIR, '/static/admin/css/widgets.css'),),}
js = ('/catalog/js/jsi18n')
#forms.MultipleChoiceField(label="Fuentes", widget=forms.SelectMultiple(attrs={'class':"form-control"}), choices=choice, required=False)
File deleted
File added
File added
File added
......@@ -10,127 +10,97 @@ import itertools
from datetime import date
class Command(BaseCommand):
help = 'Update database'
def add_arguments(self, parser):
parser.add_argument('basedir', nargs=1, type=str)
def handle(self, *args, **options):
#update radio stations recotding time
print("Recording Time:")
recordingsDir = "/home/mario/virtualHDD/m3/recordings/"
audioTime.objects.all().delete()
publishers = Publisher.objects.all().filter(type="audio")
for p in publishers:
files = [files for r, d, files in os.walk(recordingsDir+p.shortName)]
files = list(itertools.chain.from_iterable(files))
minutes = len(files)
sortedFiles = sorted([(f[:f.find(".flac")]) for f in files if f.find(".flac")>0 and f.count(".")==1])
print(p.shortName+": "+ str(minutes))
if len(sortedFiles)>2:
print("timestamp: " + sortedFiles[0])
print("len timestamp: " + str(len(sortedFiles[0])))
#print (files)
#print (sortedFiles)
since = datetime.datetime.utcfromtimestamp(int(sortedFiles[0]))
audioTime.objects.update_or_create(publisher=p, defaults={'minutes': minutes, "startDate": since},)
#load news
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)
help = 'Update database'
def add_arguments(self, parser):
parser.add_argument('basedir', nargs=1, type=str)
def handle(self, *args, **options):
if True:
#update radio stations recotding time
print("Recording Time:")
recordingsDir = "/home/mario/virtualHDD/m3/recordings/"
audioTime.objects.all().delete()
publishers = Publisher.objects.all().filter(type="audio")
for p in publishers:
files = [files for r, d, files in os.walk(recordingsDir+p.shortName)]
files = list(itertools.chain.from_iterable(files))
minutes = len(files)
sortedFiles = sorted([(f[:f.find(".flac")]) for f in files if f.find(".flac")>0 and f.count(".")==1])
print(p.shortName+": "+ str(minutes))
if len(sortedFiles)>2:
print("timestamp: " + sortedFiles[0])
print("len timestamp: " + str(len(sortedFiles[0])))
since = datetime.datetime.utcfromtimestamp(int(sortedFiles[0]))
audioTime.objects.update_or_create(publisher=p, defaults={'minutes': minutes, "startDate": since},)
#load news
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")
minYear = 0
lastDate = datetime.datetime(1950,1,1)
if news.count()>0:
minYear = news[0].date.year
lastDate = news[0].date
yearList = [ int(y) for y in os.listdir('.')]
print (yearList)
for y in yearList:
if y >=minYear:
os.chdir(str(y))
print (os.getcwd())
filesList = os.listdir(".")
for f in filesList:
fileDate = datetime.datetime.strptime(f[:f.find(".")], "%Y-%m-%d").date()
if fileDate >= lastDate.date():
with open(f) as data_file:
try:
data = json.load(data_file)
for d in data:
newsDate = dateutil.parser.parse(d['date'])
if News.objects.all().filter(Q(publisher=publisher.id)&Q(title=d['title'])&Q(date__gte=newsDate)).count() == 0:
if d['title'] == None:
d['title'] = "Sin Titulo"
if len(d['title']) >= 512:
d['title'] = d['title'][:500]
print (p + " "+ str(newsDate) + ": " + d['title'])
news = News()
news.publisher = publisher
news.title = d['title']
news.text = d['text']
news.url = d['url']
news.date = newsDate
news.save()
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)
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("..")
except ValueError as e:
print (e)
print ("Error: " + os.getcwd()+"/"+f)
print (type(d['topic']))
data_file.close()
os.chdir("..")
os.chdir("..")
......@@ -10,8 +10,8 @@ class AuthRequiredMiddleware(object):
# the view (and later middleware) are called.
response = self.get_response(request)
print request.path_info
print reverse('login')
print (request.path_info)
print (reverse('login'))
if request.path_info == reverse('ws-news-list2'):
return response
......
File deleted
# -*- coding: utf-8 -*-
# Generated by Django 1.10.7 on 2017-08-15 20:59
# Generated by Django 1.11.10 on 2018-02-14 15:48
from __future__ import unicode_literals
from django.db import migrations, models
......@@ -18,15 +18,15 @@ class Migration(migrations.Migration):
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=128)),
('shortName', models.CharField(default=b'', max_length=32)),
('crawler', models.CharField(default=b'', max_length=32)),
('type', models.CharField(default=b'', max_length=32)),
('url', models.URLField(default=b'')),
('shortName', models.CharField(default='', max_length=32)),
('crawler', models.CharField(default='', max_length=64)),
('type', models.CharField(default='', max_length=32)),
('url', models.URLField(default='')),
],
options={
'ordering': ('name',),
'verbose_name': 'Medio',
'verbose_name_plural': 'Medios',
'ordering': ('name',),
},
),
]
No preview for this file type
# -*- coding: utf-8 -*-
# Generated by Django 1.10.7 on 2017-08-15 20:59
# Generated by Django 1.11.10 on 2018-02-14 15:49
from __future__ import unicode_literals
from django.db import migrations, models
......@@ -16,12 +16,12 @@ class Migration(migrations.Migration):
name='Topic',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=256, verbose_name=b'Tema')),
('name', models.CharField(max_length=256, verbose_name='Tema')),
],
options={
'ordering': ('name',),
'verbose_name': 'Tema',
'verbose_name_plural': 'Temas',
'ordering': ('name',),
},
),
]
No preview for this file type
# -*- coding: utf-8 -*-
# Generated by Django 1.10.7 on 2017-08-15 20:59
# Generated by Django 1.11.10 on 2018-02-14 15:49
from __future__ import unicode_literals
import django.contrib.postgres.indexes
import django.contrib.postgres.search
from django.db import migrations, models
import django.db.models.deletion
......@@ -18,16 +20,21 @@ class Migration(migrations.Migration):
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('title', models.CharField(max_length=512)),
('date', models.DateTimeField(verbose_name=b'Publication Date')),
('text', models.TextField(blank=True, default=b'', verbose_name=b'News Text')),
('url', models.URLField(max_length=512, verbose_name=b'URL')),
('publisher', models.ForeignKey(default=b'', on_delete=django.db.models.deletion.CASCADE, to='catalog.Publisher')),
('topic', models.ManyToManyField(blank=True, to='catalog.Topic', verbose_name=b'Topic(s)')),
('date', models.DateTimeField(verbose_name='Publication Date')),
('text', models.TextField(blank=True, default='', verbose_name='News Text')),
('url', models.URLField(max_length=512, verbose_name='URL')),
('search_vector', django.contrib.postgres.search.SearchVectorField(null=True)),
('publisher', models.ForeignKey(default='', on_delete=django.db.models.deletion.CASCADE, to='catalog.Publisher')),
('topic', models.ManyToManyField(blank=True, to='catalog.Topic', verbose_name='Topic(s)')),
],
options={
'ordering': ('date',),
'verbose_name': 'Noticia',
'verbose_name_plural': 'Noticias',
'ordering': ('date',),
},
),
migrations.AddIndex(
model_name='news',
index=django.contrib.postgres.indexes.GinIndex(fields=['search_vector'], name='catalog_new_search__62ed1c_gin'),
),
]
File added
File deleted
# -*- coding: utf-8 -*-
# Generated by Django 1.10.7 on 2017-08-16 03:52
from __future__ import unicode_literals
import django.contrib.postgres.search
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('catalog', '0003_news'),
]
operations = [
migrations.AddField(
model_name='news',
name='search_vector',
field=django.contrib.postgres.search.SearchVectorField(null=True),
),
]
File deleted
# -*- coding: utf-8 -*-
# Generated by Django 1.11.7 on 2017-12-14 18:25
# Generated by Django 1.11.10 on 2018-02-14 15:49
from __future__ import unicode_literals
from django.conf import settings
......@@ -11,7 +11,7 @@ class Migration(migrations.Migration):
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('catalog', '0008_profile_subscriptions'),
('catalog', '0003_auto_20180214_1549'),
]
operations = [
......@@ -19,10 +19,10 @@ class Migration(migrations.Migration):
name='Search',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('startDate', models.DateTimeField(verbose_name=b'Start Date')),
('endDate', models.DateTimeField(verbose_name=b'End Date')),
('text', models.CharField(max_length=128)),
('publishers', models.ManyToManyField(to='catalog.Publisher')),
('startDate', models.DateTimeField(verbose_name='Start Date')),
('endDate', models.DateTimeField(verbose_name='End Date')),
('text', models.CharField(blank=True, max_length=128)),
('publishers', models.ManyToManyField(blank=True, to='catalog.Publisher')),
('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
],
),
......
No preview for this file type
# -*- coding: utf-8 -*-
# Generated by Django 1.11.4 on 2017-08-19 20:50
from __future__ import unicode_literals
import django.contrib.postgres.indexes
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('catalog', '0004_news_search_vector'),
]
operations = [
migrations.AddIndex(
model_name='news',
index=django.contrib.postgres.indexes.GinIndex(fields=[b'search_vector'], name='catalog_new_search__62ed1c_gin'),
),
]
File deleted
# -*- coding: utf-8 -*-
# Generated by Django 1.11.7 on 2017-12-13 00:06
# Generated by Django 1.11.10 on 2018-02-14 15:50
from __future__ import unicode_literals
from django.conf import settings
......@@ -11,7 +11,7 @@ class Migration(migrations.Migration):
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('catalog', '0006_auto_20171126_0109'),
('catalog', '0004_search'),
]
operations = [
......@@ -19,6 +19,7 @@ class Migration(migrations.Migration):
name='Profile',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('subscriptions', models.ManyToManyField(to='catalog.Publisher')),
('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
],
),
......
No preview for this file type
# -*- coding: utf-8 -*-
# Generated by Django 1.11.9 on 2018-01-31 20:50
# Generated by Django 1.11.10 on 2018-02-14 15:50
from __future__ import unicode_literals
from django.db import migrations, models
......@@ -9,7 +9,7 @@ import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('catalog', '0014_auto_20171221_1820'),
('catalog', '0005_profile'),
]
operations = [
......@@ -17,8 +17,8 @@ class Migration(migrations.Migration):
name='audioTime',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('startDate', models.DateTimeField(verbose_name=b'Start Date')),
('seconds', models.BigIntegerField(default=0)),
('startDate', models.DateTimeField(verbose_name='Start Date')),
('minutes', models.BigIntegerField(default=0)),
('publisher', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='catalog.Publisher')),
],
),
......
No preview for this file type
# -*- coding: utf-8 -*-
# Generated by Django 1.11.7 on 2017-11-26 01:09
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('catalog', '0005_auto_20170819_2050'),
]
operations = [
migrations.AlterField(
model_name='publisher',
name='crawler',
field=models.CharField(default=b'', max_length=64),
),
]
File deleted
# -*- 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'),
),
]
File deleted
# -*- coding: utf-8 -*-
# Generated by Django 1.11.7 on 2017-12-14 18:52
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('catalog', '0009_search'),
]
operations = [
migrations.AlterField(
model_name='search',
name='publishers',
field=models.ManyToManyField(blank=True, to='catalog.Publisher'),
),
]
File deleted
# -*- coding: utf-8 -*-
# Generated by Django 1.11.7 on 2017-12-18 18:43
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('catalog', '0010_auto_20171214_1852'),
]
operations = [
migrations.AlterField(
model_name='search',
name='text',
field=models.CharField(blank=True, max_length=128),
),
]
File deleted
# -*- coding: utf-8 -*-
# Generated by Django 1.11.7 on 2017-12-21 16:47
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('catalog', '0011_auto_20171218_1843'),
]
operations = [
migrations.AlterField(
model_name='search',
name='endDate',
field=models.DateTimeField(blank=True, verbose_name=b'End Date'),
),
migrations.AlterField(
model_name='search',
name='startDate',
field=models.DateTimeField(blank=True, verbose_name=b'Start Date'),
),
]
File deleted
# -*- coding: utf-8 -*-
# Generated by Django 1.11.7 on 2017-12-21 17:28
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('catalog', '0012_auto_20171221_1647'),
]
operations = [
migrations.AlterField(
model_name='search',
name='endDate',
field=models.DateTimeField(blank=True, null=True, verbose_name=b'End Date'),
),
migrations.AlterField(
model_name='search',
name='startDate',
field=models.DateTimeField(blank=True, null=True, verbose_name=b'Start Date'),
),
]
File deleted
# -*- coding: utf-8 -*-
# Generated by Django 1.11.7 on 2017-12-21 18:20
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('catalog', '0013_auto_20171221_1728'),
]
operations = [
migrations.AlterField(
model_name='search',
name='endDate',
field=models.DateTimeField(verbose_name=b'End Date'),
),
migrations.AlterField(
model_name='search',
name='startDate',
field=models.DateTimeField(verbose_name=b'Start Date'),
),
]
File deleted
# -*- coding: utf-8 -*-
# Generated by Django 1.11.9 on 2018-01-31 21:05
from __future__ import unicode_literals
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('catalog', '0015_audiotime'),
]
operations = [
migrations.RenameField(
model_name='audiotime',
old_name='seconds',
new_name='minutes',
),
]
File deleted
File added
File added
File added
File deleted
File added
File deleted
File added
File added
File deleted
......@@ -79,14 +79,12 @@ class Search(models.Model):
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
subscriptions = models.ManyToManyField(Publisher)
# def __init__(self, *args, **kwargs):
# self.subscriptions = Publisher.objects.all()
# super().__init__(*args, **kwargs)
@receiver(post_save, sender=User)
def create_user_profile(sender, instance, created, **kwargs):
if created:
Profile.objects.create(user=instance)#, subscriptions=Publisher.objects.all())
if created:
Profile.objects.create(user=instance)#, subscriptions=Publisher.objects.all())
print ("profile created")
@receiver(post_save, sender=User)
......
File deleted
File deleted
......@@ -31,7 +31,10 @@
<div class="panel-body">
<div id="audioCalendar"></div>
<div id="audioDiv">audio tag</div>
<div id="audioDiv">
<audio id="audioPlay" controls>
</audio>
</div>
<!-- /.table-responsive -->
</div>
......@@ -57,6 +60,8 @@
<script>
function getAudioList(publisher, startdate, enddate)
{
url = "/catalog/ws/playlist/?startdate="+startdate+"&enddate="+enddate+"&publisher="+publisher;
console.log(url);
var xmlhttp;
if (window.XMLHttpRequest)
{//IE7+, Firefox, Chrome, Opera, Safari
......@@ -74,10 +79,11 @@ function getAudioList(publisher, startdate, enddate)
var jsonObj = JSON.parse(xmlhttp.responseText);
console.log(jsonObj);
var audioDiv = document.getElementById("audioDiv");
audioDiv.appendChild(document.createElement("audio"));
}
}
xmlhttp.open("GET", "/catalog/ws/playlist/?startdate="+startdate+"&enddate="+enddate+"&publisher="+publisher,true);
xmlhttp.open("GET", url ,true);
xmlhttp.send();
};
$(document).ready(function () {
......@@ -110,16 +116,16 @@ $(document).ready(function () {
function rangeChanged(target, range) {
console.log(range);
var audioDiv = document.getElementById("audioDiv");
while (audioDiv.firstChild)
audioDiv.removeChild(audioDiv.firstChild);
var sound = document.createElement('audio');
sound.id = 'audio-player';
sound.controls = 'controls';
sound.src = 'media/Blue Browne.mp3';
sound.type = 'audio/mpeg';
audioDiv.appendChild(sound);
//var audioDiv = document.getElementById("audioDiv");
// while (audioDiv.firstChild)
// audioDiv.removeChild(audioDiv.firstChild);
// var sound = document.createElement('audio');
// sound.id = 'audio-player';
// sound.controls = 'controls';
// sound.src = 'media/Blue Browne.mp3';
// sound.type = 'audio/mpeg';
// audioDiv.appendChild(sound);
getAudioList("{{publisher.shortName}}",range.start,range.end);
}
......
......@@ -23,10 +23,10 @@ urlpatterns = [
url(r'^audio/$', views.audioList, 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'),
url(r'^settings/$', views.settingsView, name='settings'),
url(r'^settings/profile$', views.settingsView, name='settings-profile'),
url(r'^settings/subscriptions$', views.settingsView, name='settings-subscriptions'),
url(r'^settings/password$', views.settingsView, name='settings-password'),
url(r'^settings/searches$', views.settingsSearches, name='settings-search'),
]
......
File deleted
......@@ -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 django.core.exceptions import ObjectDoesNotExist
from django.shortcuts import redirect
......@@ -27,20 +27,38 @@ import dateutil.parser
import urllib
import json
import StringIO
#import StringIO #python2
from io import StringIO #python3
import time
import zipfile
import csv
from quantiphy import Quantity
from .audioList import getAudioList
#from .audioList import getAudioList
from numpy import array_equal
import os
import shutil
#-------------------------------------------------------------------------------
def getAudiosList2Convert(streamPublisher, initTimestamp, endTimestamp, days):
def getAudiosList2Convert(request, streamPublisher, initTimestamp, endTimestamp, days):
if not request.session.session_key:
request.session.save()
session_id = request.session.session_key
cwd = settings.BASE_DIR
print ("CDW: " + cwd)
directory = cwd+"/catalog/static/audioPlayList/sessions/"+session_id+"/"
if not os.path.exists(directory):
os.mkdir(directory)
else:
shutil.rmtree(directory)
os.mkdir(directory)
recordingsPath = '/home/mario/virtualHDD/m3/recordings/'
initialDate = datetime.fromtimestamp(initTimestamp) #+ timedelta(hours=6)
endDate = datetime.fromtimestamp(endTimestamp) #+ timedelta(hours=6)
initialDate = datetime.datetime.fromtimestamp(initTimestamp) #+ timedelta(hours=6)
endDate = datetime.datetime.fromtimestamp(endTimestamp) #+ timedelta(hours=6)
audiosList = []
......@@ -58,19 +76,20 @@ def getAudiosList2Convert(streamPublisher, initTimestamp, endTimestamp, days):
for file in os.listdir(recordingsPath+audiosPath):
audioTimestamp = int(file.split(".")[0])
if audioTimestamp >= initTimestamp and audioTimestamp <= endTimestamp:
audiosList.append(recordingsPath+audiosPath+file)
#audiosList.append((recordingsPath+audiosPath, file))
audiosList.append(audiosPath+file)
os.symlink(recordingsPath+audiosPath+file, directory+file)
# Next day dir
initialDate += timedelta(days=1)
initialDate += datetime.timedelta(days=1)
return audiosList
#-------------------------------------------------------------------------------
def getRecordingDays(initTimestamp, endTimestamp):
initialDate = datetime.fromtimestamp(initTimestamp) #+ timedelta(hours=6)
endDate = datetime.fromtimestamp(endTimestamp) #+ timedelta(hours=6)
initialDate = datetime.datetime.fromtimestamp(initTimestamp) #+ timedelta(hours=6)
endDate = datetime.datetime.fromtimestamp(endTimestamp) #+ timedelta(hours=6)
print(initialDate)
print(endDate)
......@@ -85,18 +104,18 @@ def getRecordingDays(initTimestamp, endTimestamp):
else:
while not array_equal(iDate, eDate):
days += 1
initialDate += timedelta(days=1)
initialDate += datetime.timedelta(days=1)
iDate = [initialDate.day, initialDate.month, initialDate.year]
return days
#-------------------------------------------------------------------------------
def getAudiosList(streamPublisher, initTimestamp, endTimestamp):
def getAudiosList(request, streamPublisher, initTimestamp, endTimestamp):
initTimestamp = float(initTimestamp)
endTimestamp = float(endTimestamp)
days = getRecordingDays(initTimestamp, endTimestamp)
print('Recording days: {0}'.format(days))
audiosList = getAudiosList2Convert(streamPublisher, initTimestamp, endTimestamp, days)
audiosList = getAudiosList2Convert(request, streamPublisher, initTimestamp, endTimestamp, days)
return audiosList
#-------------------------------------------------------------------------------
......@@ -112,7 +131,7 @@ def news2JSON(news):
data.append(item)
return data
#-------------------------------------------------------------------------------
def settings(request):
def settingsView(request):
# form = ProfileForm( initial={'subscriptions':[ v for v in request.user.profile.subscriptions.all().values_list('id', flat=True)]})
print ("subS",[ v for v in request.user.profile.subscriptions.all().values_list('id', flat=True)])
......@@ -124,15 +143,15 @@ def settings(request):
if form.is_valid():
request.user.profile.subscriptions=form.cleaned_data['subscriptions']
else:
form = ProfileForm( initial={'subscriptions':[ v for v in request.user.profile.subscriptions.all().values_list('id', flat=True)]})
form = ProfileForm( initial={'subscriptions':[ v for v in request.user.profile.subscriptions.all().values_list('id', flat=True)]})
news = News.objects.all()
publishersList = Publisher.objects.all().filter( Q(id__in = news.values('publisher').distinct()))
choice = [ (r.id,r.name) for r in publishersList ]
publishersList = Publisher.objects.all().filter( Q(id__in = news.values('publisher').distinct()))
choice = [ (r.id,r.name) for r in publishersList ]
form.fields['subscriptions'].choices=choice
print( request.user.profile.subscriptions.all() )
print( request.user.profile.subscriptions.all() )
return render(request,'userprofile.html',{"form":form})
return render(request,'userprofile.html',{"form":form})
#-------------------------------------------------------------------------------
def settingsSearches(request):
return render(request,'searches.html',{})
......@@ -205,7 +224,7 @@ def index(request):
for q in queryset:
myRequest = request.GET.copy()
myRequest.update({"publishers":q['publisher']})
urlDict[q['publisher']] = urllib.urlencode(myRequest)
urlDict[q['publisher']] = urllib.parse.urlencode(myRequest)
# print (urlDict)
donutChart = [{"label": Publisher.objects.get(id=q['publisher']).name, "value":q["count"], "url":urlDict[q['publisher']]} for q in queryset]
......@@ -250,7 +269,7 @@ def publisherList(request, type="all"):
if 'publishers' in myRequest:
del myRequest['publishers']
return render(request,'publisherList.html',{"form":form, "publishers":publishers, "queryurl":urllib.urlencode(myRequest)})
return render(request,'publisherList.html',{"form":form, "publishers":publishers, "queryurl":urllib.parse.urlencode(myRequest)})
#-------------------------------------------------------------------------------
def newsList(request, publisherShortName="all"):
......@@ -262,14 +281,15 @@ def wsAudioList(request):
data = dict()
print("wsAudioList", request.GET)
startDate = dateutil.parser.parse(request.GET['startdate']).strftime('%s')
endDate = dateutil.parser.parse(request.GET['enddate']).strftime('%s')
print ("STARTDATE", startDate)
audioList = getAudioList(request.GET['publisher'], startDate, endDate)
# audioList = getAudioList('RadioFormula1041', '1512158400', '1512396000')
audioList = getAudiosList(request, request.GET['publisher'], startDate, endDate)
# audioList = getAudiosList(request, 'RadioFormula1041', '1512158400', '1512396000')
print ("audioList", audioList)
return HttpResponse(json.dumps(data), content_type="application/json")
return HttpResponse(json.dumps(audioList), content_type="application/json")
#-------------------------------------------------------------------------------
def wsSearchList(request):
......@@ -277,19 +297,17 @@ def wsSearchList(request):
searches = Search.objects.all().filter(user=request.user)
data = dict()
data['data']=[[s.text, "*" if s is None else s.startDate.strftime('%Y-%m-%d'), "*" if s is None else s.endDate.strftime('%Y-%m-%d'), ','.join([ sub.shortName for sub in s.publishers.all()])] for s in searches]
data['recordsTotal'] = searches.count()
data['recordsFiltered'] = searches.count()
data['data']=[[s.text, "*" if s is None else s.startDate.strftime('%Y-%m-%d'), "*" if s is None else s.endDate.strftime('%Y-%m-%d'), ','.join([ sub.shortName for sub in s.publishers.all()])] for s in searches]
data['recordsTotal'] = searches.count()
data['recordsFiltered'] = searches.count()
return HttpResponse(json.dumps(data), content_type="application/json")
return HttpResponse(json.dumps(data), content_type="application/json")
#-------------------------------------------------------------------------------
def wsNewsList2(request):
news = getNewsByRequest(request)
data = [{"id":n.id, "text":n.text, "date":n.date.strftime('%Y-%m-%d')} for n in news]
data = [{"id":n.id, "publisher":n.publisher.name, "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"):
......
This diff is collapsed.
File deleted
No preview for this file type
No preview for this file type
File added
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