Changeset - e27e322c4156
[Not reviewed]
0 2 0
Christopher Neugebauer - 8 years ago 2016-09-02 05:15:15
chrisjrn@gmail.com
Adds the attendee list and stubs the attendee manifest reports
2 files changed with 76 insertions and 1 deletions:
0 comments (0 inline, 0 general)
registrasion/reporting/forms.py
Show inline comments
...
 
@@ -15 +15,8 @@ class ProductAndCategoryForm(forms.Form):
 
    )
 

	
 

	
 
class UserIdForm(forms.Form):
 
    user = forms.IntegerField(
 
        label="User ID",
 
        required=False,
 
    )
registrasion/reporting/views.py
Show inline comments
...
 
@@ -6,3 +6,3 @@ from django.db import models
 
from django.db.models import F, Q
 
from django.db.models import Sum
 
from django.db.models import Count, Sum
 
from django.db.models import Case, When, Value
...
 
@@ -11,2 +11,3 @@ from django.shortcuts import render
 
from registrasion.models import commerce
 
from registrasion.models import people
 
from registrasion import views
...
 
@@ -197 +198,68 @@ def credit_notes(request, form):
 
    return Report("Credit Notes", headings, data, link_view="credit_note")
 

	
 

	
 
@report_view("Attendee", form_type=forms.UserIdForm)
 
def attendee(request, form, attendee_id=None):
 
    ''' Returns a list of all manifested attendees if no attendee is specified,
 
    else displays the attendee manifest. '''
 

	
 
    if attendee_id is None and not form.has_changed():
 
        return attendee_list(request)
 

	
 
    reports = []
 

	
 
    # TODO: METADATA.
 

	
 

	
 
    # Paid products
 
    headings = ["Product", "Quantity"]
 
    data = []
 
    reports.append(Report("Paid Products", headings, data))
 

	
 
    # Unpaid products
 
    headings = ["Product", "Quantity"]
 
    data = []
 
    reports.append( Report("Unpaid Products", headings, data))
 

	
 
    # Invoices
 
    headings = ["Invoice ID", "Status", "Amount"]
 
    data = []
 
    reports.append( Report("Invoices", headings, data))
 

	
 
    # Credit Notes
 
    headings = ["Note ID", "Status", "Value"]
 
    data = []
 
    reports.append( Report("Credit Notes", headings, data))
 

	
 
    return reports
 

	
 

	
 
def attendee_list(request):
 
    ''' Returns a list of all attendees. '''
 

	
 
    attendees = people.Attendee.objects.all().select_related(
 
        "attendeeprofilebase",
 
    )
 
    attendees = attendees.annotate(
 
        has_registered=Count(
 
            Q(user__invoice__status=commerce.Invoice.STATUS_PAID)
 
        ),
 
    )
 

	
 
    headings = [
 
        "User ID", "Email", "Has registered",
 
    ]
 

	
 
    data = []
 

	
 
    for attendee in attendees:
 
        data.append([
 
            attendee.user.id,
 
            attendee.user.email,
 
            attendee.has_registered > 0,
 
        ])
 

	
 
    # Sort by whether they've registered, then ID.
 
    data.sort(key=lambda attendee: (-attendee[2], attendee[0]))
 

	
 
    return Report("Attendees", headings, data, link_view="attendee")
0 comments (0 inline, 0 general)