Browse Source
Merge pull request #30 from Kevin-Mok/in-progress
Merge pull request #30 from Kevin-Mok/in-progress
- pass data from database to D3 JS - deleted migration history - modified `views.py, utils.py` to be more directed toward using database vs. `library_stats`master
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 145 additions and 224 deletions
-
79spotifyvis/migrations/0001_initial.py
-
53spotifyvis/migrations/0002_auto_20180606_0523.py
-
23spotifyvis/migrations/0003_auto_20180606_0525.py
-
18spotifyvis/models.py
-
1spotifyvis/templates/spotifyvis/index.html
-
32spotifyvis/templates/spotifyvis/test_db.html
-
3spotifyvis/templates/spotifyvis/user_data.html
-
16spotifyvis/urls.py
-
111spotifyvis/utils.py
-
33spotifyvis/views.py
@ -1,79 +0,0 @@ |
|||||
# Generated by Django 2.0.5 on 2018-06-06 07:26 |
|
||||
|
|
||||
from django.db import migrations, models |
|
||||
import django.db.models.deletion |
|
||||
|
|
||||
|
|
||||
class Migration(migrations.Migration): |
|
||||
|
|
||||
initial = True |
|
||||
|
|
||||
dependencies = [ |
|
||||
] |
|
||||
|
|
||||
operations = [ |
|
||||
migrations.CreateModel( |
|
||||
name='Artist', |
|
||||
fields=[ |
|
||||
('artist_id', models.CharField(max_length=30, primary_key=True, serialize=False)), |
|
||||
('name', models.CharField(max_length=50, unique=True)), |
|
||||
('genre', models.CharField(max_length=20)), |
|
||||
], |
|
||||
options={ |
|
||||
'verbose_name_plural': 'Artists', |
|
||||
'verbose_name': 'Artist', |
|
||||
}, |
|
||||
), |
|
||||
migrations.CreateModel( |
|
||||
name='Track', |
|
||||
fields=[ |
|
||||
('track_id', models.CharField(max_length=30, primary_key=True, serialize=False)), |
|
||||
('year', models.PositiveSmallIntegerField()), |
|
||||
('popularity', models.PositiveSmallIntegerField()), |
|
||||
('runtime', models.PositiveSmallIntegerField()), |
|
||||
('name', models.CharField(max_length=75)), |
|
||||
], |
|
||||
options={ |
|
||||
'verbose_name_plural': 'Tracks', |
|
||||
'verbose_name': 'Track', |
|
||||
}, |
|
||||
), |
|
||||
migrations.CreateModel( |
|
||||
name='User', |
|
||||
fields=[ |
|
||||
('user_id', models.CharField(max_length=30, primary_key=True, serialize=False)), |
|
||||
], |
|
||||
options={ |
|
||||
'verbose_name_plural': 'Users', |
|
||||
'verbose_name': 'User', |
|
||||
}, |
|
||||
), |
|
||||
migrations.CreateModel( |
|
||||
name='AudioFeatures', |
|
||||
fields=[ |
|
||||
('track', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, primary_key=True, serialize=False, to='spotifyvis.Track')), |
|
||||
('danceability', models.DecimalField(decimal_places=2, max_digits=2)), |
|
||||
('energy', models.DecimalField(decimal_places=2, max_digits=2)), |
|
||||
('loudness', models.DecimalField(decimal_places=2, max_digits=2)), |
|
||||
('speechiness', models.DecimalField(decimal_places=2, max_digits=2)), |
|
||||
('acousticness', models.DecimalField(decimal_places=2, max_digits=2)), |
|
||||
('instrumentalness', models.DecimalField(decimal_places=2, max_digits=2)), |
|
||||
('valence', models.DecimalField(decimal_places=2, max_digits=2)), |
|
||||
('tempo', models.DecimalField(decimal_places=2, max_digits=2)), |
|
||||
], |
|
||||
options={ |
|
||||
'verbose_name_plural': 'AudioFeatures', |
|
||||
'verbose_name': 'AudioFeatures', |
|
||||
}, |
|
||||
), |
|
||||
migrations.AddField( |
|
||||
model_name='track', |
|
||||
name='artists', |
|
||||
field=models.ManyToManyField(blank=True, to='spotifyvis.Artist'), |
|
||||
), |
|
||||
migrations.AddField( |
|
||||
model_name='track', |
|
||||
name='users', |
|
||||
field=models.ManyToManyField(blank=True, to='spotifyvis.User'), |
|
||||
), |
|
||||
] |
|
@ -1,53 +0,0 @@ |
|||||
# Generated by Django 2.0.5 on 2018-06-06 09:23 |
|
||||
|
|
||||
from django.db import migrations, models |
|
||||
|
|
||||
|
|
||||
class Migration(migrations.Migration): |
|
||||
|
|
||||
dependencies = [ |
|
||||
('spotifyvis', '0001_initial'), |
|
||||
] |
|
||||
|
|
||||
operations = [ |
|
||||
migrations.AlterField( |
|
||||
model_name='audiofeatures', |
|
||||
name='acousticness', |
|
||||
field=models.DecimalField(decimal_places=3, max_digits=3), |
|
||||
), |
|
||||
migrations.AlterField( |
|
||||
model_name='audiofeatures', |
|
||||
name='danceability', |
|
||||
field=models.DecimalField(decimal_places=3, max_digits=3), |
|
||||
), |
|
||||
migrations.AlterField( |
|
||||
model_name='audiofeatures', |
|
||||
name='energy', |
|
||||
field=models.DecimalField(decimal_places=3, max_digits=3), |
|
||||
), |
|
||||
migrations.AlterField( |
|
||||
model_name='audiofeatures', |
|
||||
name='instrumentalness', |
|
||||
field=models.DecimalField(decimal_places=3, max_digits=3), |
|
||||
), |
|
||||
migrations.AlterField( |
|
||||
model_name='audiofeatures', |
|
||||
name='loudness', |
|
||||
field=models.DecimalField(decimal_places=3, max_digits=3), |
|
||||
), |
|
||||
migrations.AlterField( |
|
||||
model_name='audiofeatures', |
|
||||
name='speechiness', |
|
||||
field=models.DecimalField(decimal_places=3, max_digits=3), |
|
||||
), |
|
||||
migrations.AlterField( |
|
||||
model_name='audiofeatures', |
|
||||
name='tempo', |
|
||||
field=models.DecimalField(decimal_places=3, max_digits=3), |
|
||||
), |
|
||||
migrations.AlterField( |
|
||||
model_name='audiofeatures', |
|
||||
name='valence', |
|
||||
field=models.DecimalField(decimal_places=3, max_digits=3), |
|
||||
), |
|
||||
] |
|
@ -1,23 +0,0 @@ |
|||||
# Generated by Django 2.0.5 on 2018-06-06 09:25 |
|
||||
|
|
||||
from django.db import migrations, models |
|
||||
|
|
||||
|
|
||||
class Migration(migrations.Migration): |
|
||||
|
|
||||
dependencies = [ |
|
||||
('spotifyvis', '0002_auto_20180606_0523'), |
|
||||
] |
|
||||
|
|
||||
operations = [ |
|
||||
migrations.AlterField( |
|
||||
model_name='audiofeatures', |
|
||||
name='loudness', |
|
||||
field=models.DecimalField(decimal_places=3, max_digits=6), |
|
||||
), |
|
||||
migrations.AlterField( |
|
||||
model_name='audiofeatures', |
|
||||
name='tempo', |
|
||||
field=models.DecimalField(decimal_places=3, max_digits=6), |
|
||||
), |
|
||||
] |
|
@ -0,0 +1,32 @@ |
|||||
|
<!DOCTYPE html> |
||||
|
<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]--> |
||||
|
<!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8"> <![endif]--> |
||||
|
<!--[if IE 8]> <html class="no-js lt-ie9"> <![endif]--> |
||||
|
<!--[if gt IE 8]><!--> <html class="no-js"> <!--<![endif]--> |
||||
|
<head> |
||||
|
<meta charset="utf-8"> |
||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge"> |
||||
|
<title>Test DB Page</title> |
||||
|
<meta name="description" content=""> |
||||
|
<meta name="viewport" content="width=device-width, initial-scale=1"> |
||||
|
</head> |
||||
|
<body> |
||||
|
<!--[if lt IE 7]> |
||||
|
<p class="browsehappy">You are using an <strong>outdated</strong> browser. Please <a href="#">upgrade your browser</a> to improve your experience.</p> |
||||
|
<![endif]--> |
||||
|
<ul> |
||||
|
{% for artist in artist_data %} |
||||
|
<li>{{ artist.name }} - {{ artist.num_songs }}</li> |
||||
|
{% endfor %} |
||||
|
</ul> |
||||
|
<pre> {% filter force_escape %} {% debug %} {% endfilter %} </pre> |
||||
|
<script src="https://d3js.org/d3.v5.min.js"></script> |
||||
|
<script> |
||||
|
d3.json("{% url "get_artist_data" user_id %}").then(function(data) { |
||||
|
data.forEach(function(d) { |
||||
|
console.log(d.name, d.num_songs); |
||||
|
}); |
||||
|
}); |
||||
|
</script> |
||||
|
</body> |
||||
|
</html> |
@ -1,9 +1,13 @@ |
|||||
from django.urls import path, include |
from django.urls import path, include |
||||
from . import views |
|
||||
|
from django.conf.urls import url |
||||
|
|
||||
|
from .views import * |
||||
|
|
||||
urlpatterns = [ |
urlpatterns = [ |
||||
path('', views.index, name='index'), |
|
||||
path('login', views.login, name='login'), |
|
||||
path('callback', views.callback, name='callback'), |
|
||||
path('user_data', views.user_data, name='user_data'), |
|
||||
] |
|
||||
|
path('', index, name='index'), |
||||
|
path('login', login, name='login'), |
||||
|
path('callback', callback, name='callback'), |
||||
|
path('user_data', user_data, name='user_data'), |
||||
|
path('test_db', test_db, name='test_db'), |
||||
|
path('user_artists/<str:user_id>', get_artist_data, name='get_artist_data'), |
||||
|
] |
Write
Preview
Loading…
Cancel
Save
Reference in new issue