Changeset - a445eed23988
[Not reviewed]
Merge
0 3 0
Christopher Neugebauer - 8 years ago 2016-09-20 09:41:47
chrisjrn@gmail.com
Merge branch 'chrisjrn/reports_20160919'
3 files changed with 56 insertions and 1 deletions:
0 comments (0 inline, 0 general)
registrasion/reporting/forms.py
Show inline comments
...
 
@@ -3,2 +3,4 @@ from registrasion.models import inventory
 

	
 
from symposion.proposals import models as proposals_models
 

	
 
from django import forms
...
 
@@ -33,2 +35,10 @@ class UserIdForm(forms.Form):
 

	
 
class ProposalKindForm(forms.Form):
 
    kind = forms.ModelMultipleChoiceField(
 
        queryset=proposals_models.ProposalKind.objects.all(),
 
        required=False,
 
    )
 

	
 

	
 

	
 
def model_fields_form_factory(model):
registrasion/reporting/views.py
Show inline comments
...
 
@@ -7,2 +7,3 @@ from django.conf import settings
 
from django.contrib.auth.decorators import user_passes_test
 
from django.contrib.auth.models import User
 
from django.core.urlresolvers import reverse
...
 
@@ -20,2 +21,4 @@ from registrasion import views
 

	
 
from symposion.schedule import models as schedule_models
 

	
 
from reports import get_all_reports
...
 
@@ -583,3 +586,3 @@ def attendee_data(request, form, user_id=None):
 

	
 
    headings = ["User ID", "Name", "Product", "Item Status"] + field_names
 
    headings = ["User ID", "Name", "Email", "Product", "Item Status"] + field_names
 
    data = []
...
 
@@ -590,2 +593,3 @@ def attendee_data(request, form, user_id=None):
 
            getattr(profile, name_field),
 
            profile.attendee.user.email,
 
            item.product,
...
 
@@ -601 +605,37 @@ def attendee_data(request, form, user_id=None):
 
    return output
 

	
 

	
 
@report_view(
 
    "Speaker Registration Status",
 
    form_type=forms.ProposalKindForm,
 
)
 
def speaker_registrations(request, form):
 
    ''' Shows registration status for speakers with a given proposal kind. '''
 

	
 
    kinds = form.cleaned_data["kind"]
 

	
 
    presentations = schedule_models.Presentation.objects.filter(
 
        proposal_base__kind=kinds,
 
    ).exclude(
 
        cancelled=True,
 
    )
 

	
 
    users = User.objects.filter(
 
        Q(speaker_profile__presentations__in=presentations) |
 
        Q(speaker_profile__copresentations__in=presentations)
 
    )
 

	
 
    paid_carts = commerce.Cart.objects.filter(status=commerce.Cart.STATUS_PAID)
 

	
 
    paid_carts = Case(When(cart__in=paid_carts, then=Value(1)), default=Value(0), output_field=models.IntegerField())
 
    users = users.annotate(paid_carts=Sum(paid_carts))
 
    users=users.order_by("paid_carts")
 

	
 
    return QuerysetReport(
 
        "Speaker Registration Status",
 
        ["id", "speaker_profile__name", "email", "paid_carts",],
 
        users,
 
        link_view=attendee,
 
    )
 

	
 
    return []
registrasion/urls.py
Show inline comments
...
 
@@ -56,2 +56,7 @@ reports = [
 
    url(r"^reconciliation/?$", rv.reconciliation, name="reconciliation"),
 
    url(
 
        r"^speaker_registrations/?$",
 
        rv.speaker_registrations,
 
        name="speaker_registrations",
 
    ),
 
]
0 comments (0 inline, 0 general)