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
-
16spotifyvis/models.py
-
1spotifyvis/templates/spotifyvis/index.html
-
32spotifyvis/templates/spotifyvis/test_db.html
-
3spotifyvis/templates/spotifyvis/user_data.html
-
14spotifyvis/urls.py
-
111spotifyvis/utils.py
-
31spotifyvis/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 . import views |
|||
from django.conf.urls import url |
|||
|
|||
from .views import * |
|||
|
|||
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