Adds the attendee list and stubs the attendee manifest reports
This commit is contained in:
		
							parent
							
								
									48a036204d
								
							
						
					
					
						commit
						e27e322c41
					
				
					 2 changed files with 76 additions and 1 deletions
				
			
		|  | @ -13,3 +13,10 @@ class ProductAndCategoryForm(forms.Form): | ||||||
|         queryset=inventory.Category.objects.all(), |         queryset=inventory.Category.objects.all(), | ||||||
|         required=False, |         required=False, | ||||||
|     ) |     ) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | class UserIdForm(forms.Form): | ||||||
|  |     user = forms.IntegerField( | ||||||
|  |         label="User ID", | ||||||
|  |         required=False, | ||||||
|  |     ) | ||||||
|  |  | ||||||
|  | @ -4,11 +4,12 @@ from django.contrib.auth.decorators import user_passes_test | ||||||
| from django.core.urlresolvers import reverse | from django.core.urlresolvers import reverse | ||||||
| from django.db import models | from django.db import models | ||||||
| from django.db.models import F, Q | 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 | from django.db.models import Case, When, Value | ||||||
| from django.shortcuts import render | from django.shortcuts import render | ||||||
| 
 | 
 | ||||||
| from registrasion.models import commerce | from registrasion.models import commerce | ||||||
|  | from registrasion.models import people | ||||||
| from registrasion import views | from registrasion import views | ||||||
| 
 | 
 | ||||||
| from reports import get_all_reports | from reports import get_all_reports | ||||||
|  | @ -195,3 +196,70 @@ def credit_notes(request, form): | ||||||
|         ]) |         ]) | ||||||
| 
 | 
 | ||||||
|     return Report("Credit Notes", headings, data, link_view="credit_note") |     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") | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 Christopher Neugebauer
						Christopher Neugebauer