Changeset 0e077ef for music


Ignore:
Timestamp:
04/26/25 08:25:45 (3 weeks ago)
Author:
ManuelTrajcev <manueltrajcev7@…>
Branches:
master
Children:
bfca48b
Parents:
d7662b5
Message:

2 views wtih controllers and templates added

Location:
music
Files:
2 added
7 edited

Legend:

Unmodified
Added
Removed
  • music/models.py

    rd7662b5 r0e077ef  
    163163    def __str__(self):
    164164        return f"{self.playlist} - {self.track}"
    165 
    166 
    167 #VIEWS
    168 
    169 class tracks_count_per_genre(models.Model):
    170     genre = models.CharField(max_length=20, blank=True, null=True)
    171     count = models.IntegerField(blank=True, null=True)
    172 
    173     class Meta:
    174         db_table = 'tracks_count_per_genre'
    175         managed = False
    176 
    177     def __str__(self):
    178         return f"{self.genre} - {self.count}"
  • music/tests.py

    rd7662b5 r0e077ef  
    88django.setup()
    99
    10 from music.models import Artist
    11 artists = Artist.objects.raw('SELECT * FROM music_artist')
    12 for artist in artists:
    13     print(artist.name)
  • music/urls.py

    rd7662b5 r0e077ef  
    55    path('album/', views.album_list, name='album_list'),
    66    path('artist/', views.artist_list, name='artist_list'),
     7    path('artist/avg_track_duration', views.avg_track_duration, name='avg_track_duration'),
    78    path('track/', views.track_list, name='track_list'),
    89    path('track/per_genre', views.tracks_count_per_genre, name='track_count_per_genre'),
     10    path('customer/rank_list', views.rank_list_most_active_customers, name='rank_list_most_active_customers'),
    911]
  • music/views.py

    rd7662b5 r0e077ef  
    1515    heading = request.GET.get('model', 'All Albums')
    1616    data = Album.objects.values_list('title', flat=True)
    17     return render(request, 'album_list.html', {'data': data, 'heading': heading})
     17    return render(request, 'list.html', {'data': data, 'heading': heading})
    1818
    1919
     
    2121    heading = request.GET.get('model', 'All Tracks')
    2222    data = Track.objects.values_list('name', flat=True)
    23     return render(request, 'album_list.html', {'data': data, 'heading': heading})
     23    return render(request, 'list.html', {'data': data, 'heading': heading})
    2424
    2525
     26def artist_list(request):
     27    heading = request.GET.get('model', 'All Artists')
     28    data = Artist.objects.values_list('name', flat=True)
     29    print(data)
     30    return render(request, 'list.html', {'data': data, 'heading': heading})
     31
     32
     33# VIEWS
    2634def tracks_count_per_genre(request):
    2735    with connection.cursor() as cursor:
     
    3543
    3644
    37 def artist_list(request):
    38     heading = request.GET.get('model', 'All Artists')
    39     data = Artist.objects.values_list('name', flat=True)
     45def avg_track_duration(request):
     46    with connection.cursor() as cursor:
     47        cursor.execute("SELECT * FROM avg_track_duration_per_artist;")
     48        rows = cursor.fetchall()
     49
     50    data = [{'artist': row[0], 'avg': row[1]} for row in rows]
    4051    print(data)
    41     return render(request, 'album_list.html', {'data': data, 'heading': heading})
     52
     53    return render(request, 'avg_track_duration.html', {'data': data})
     54
     55
     56def rank_list_most_active_customers(request):
     57    with connection.cursor() as cursor:
     58        cursor.execute("SELECT * FROM rank_list_most_active_customers_view;")
     59        rows = cursor.fetchall()
     60
     61    data = [{'name': row[0], 'total_orders': row[1], 'total_money_spent': row[2]} for row in rows]
     62
     63    return render(request, 'rank_list_most_active_customers.html', {'data': data})
Note: See TracChangeset for help on using the changeset viewer.