Changeset 611686e


Ignore:
Timestamp:
05/01/25 11:33:45 (2 weeks ago)
Author:
ManuelTrajcev <manueltrajcev7@…>
Branches:
master
Children:
4abe330
Parents:
17ed1da
Message:

Querry - Invoice Created by Customer after a given date

Files:
1 added
5 edited

Legend:

Unmodified
Added
Removed
  • music/urls.py

    r17ed1da r611686e  
    1010    path('track/', views.track_list, name='track_list'),
    1111    path('customer/genres-per-customer', views.genres_per_customer, name='genres_per_customer'),
     12    path('customer/invoices-per-customer', views.invoice_per_customer_after_date, name='invoice_per_customer_after_date'),
    1213    path('customer/most-popular-genre-per-customer', views.most_listened_genre_per_customer, name='most_listened_genre_per_customer'),
    1314    path('media-type/percentage', views.media_type_percentage, name='media_type_percentage'),
  • music/views.py

    r17ed1da r611686e  
    127127            data = [{'first_name': row[0], 'last_name': row[1], 'genre': row[2], 'track_count': row[3]} for row in rows]
    128128
    129 
    130129    return render(request, 'genres_per_customer.html', {
    131130        'customers': customers,
     
    133132        'selected_customer_id': selected_customer_id,
    134133    })
     134
     135
     136def invoice_per_customer_after_date(request):
     137    customers = Customer.objects.all()
     138    selected_customer_id = request.GET.get('customer_id')
     139    selected_date = request.GET.get('invoice_date', '2000-01-01')
     140    data = []
     141    sum = 0
     142
     143    if selected_customer_id:
     144        if selected_date:
     145            query = """
     146                SELECT c.first_name, c.last_name, i.invoice_date::date, i.total
     147                FROM customer c
     148                JOIN invoice i ON c.customer_id = i.customer_id
     149                WHERE c.customer_id = %s AND i.invoice_date > %s
     150                ORDER BY i.invoice_date
     151            """
     152            with connection.cursor() as cursor:
     153                cursor.execute(query, [selected_customer_id, selected_date])
     154                rows = cursor.fetchall()
     155                for r in rows:
     156                    sum += r[3]
     157
     158                data = [{'first_name': row[0], 'last_name': row[1], 'invoice_date': row[2], 'total': row[3]} for row in
     159                        rows]
     160        else:
     161            query = """
     162                            SELECT c.first_name, c.last_name, i.invoice_date::date, i.total
     163                            FROM customer c
     164                            JOIN invoice i ON c.customer_id = i.customer_id
     165                            WHERE c.customer_id = %s
     166                            ORDER BY i.invoice_date
     167                        """
     168            with connection.cursor() as cursor:
     169                cursor.execute(query, [selected_customer_id])
     170                rows = cursor.fetchall()
     171                for r in rows:
     172                    sum += r[3]
     173
     174                data = [{'first_name': row[0], 'last_name': row[1], 'invoice_date': row[2], 'total': row[3]}
     175                        for row in
     176                        rows]
     177
     178    return render(request, 'invoices_per_customer_after_date.html', {
     179        'customers': customers,
     180        'total_sum': sum,
     181        'data': data,
     182        'selected_customer_id': selected_customer_id,
     183    })
  • templates/genres_per_customer.html

    r17ed1da r611686e  
    2121</form>
    2222
    23 <h4>First Name&nbsp;&nbsp;Last Name&nbsp;&nbsp;-&nbsp;&nbsp;Genre - Num of Tracks</h4>
    2423
    2524<ol>
     25    <h4>First Name&nbsp;&nbsp;Last Name&nbsp;&nbsp;-&nbsp;&nbsp;Genre - Num of Tracks</h4>
    2626    {% for row in data %}
    2727        <li>
Note: See TracChangeset for help on using the changeset viewer.