project/kiwipycon/registration/views.py
changeset 94 87e77aa18610
parent 93 e86755df35da
child 95 f94e0cd9a862
--- a/project/kiwipycon/registration/views.py	Thu Apr 01 11:59:35 2010 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,336 +0,0 @@
-# -*- coding: utf-8 -*-
-from __future__ import absolute_import
-
-import cStringIO as StringIO
-import csv
-
-# django
-from django.conf import settings
-from django.shortcuts import render_to_response
-from django.template.loader import render_to_string
-from django.shortcuts import get_object_or_404
-from django.template import RequestContext
-from django.core.urlresolvers import reverse
-from django.http import HttpResponse
-
-from django.contrib.auth.decorators import login_required
-from django.contrib.auth.forms import AuthenticationForm
-from django.contrib.auth.models import User
-from django.core.exceptions import ObjectDoesNotExist
-
-#kiwipycon
-from project.kiwipycon.utils import set_message_cookie
-from project.kiwipycon.utils import slugify
-from project.kiwipycon.user.models import UserProfile
-from project.kiwipycon.user.utils import kiwipycon_createregistrant
-from project.kiwipycon.user.forms import RegistrantForm
-from project.kiwipycon.sponsor.models import Sponsor
-from project.kiwipycon.talk.models import Talk
-
-from .models import Registration
-from .models import Wifi
-from .forms import RegistrationSubmitForm
-from .forms import RegistrationEditForm
-from .forms import RegistrationAdminSelectForm
-from .forms import WifiForm
-from .utils import send_confirmation
-
-from .forms import IC
-
-REG_TOTAL = 1000
-
-@login_required
-def download_csv(request,
-        template_name = 'registration/download-csv.html'):
-    """
-    """
-    if not request.user.is_staff:
-        redirect_to = reverse('kiwipycon_login')
-    if request.method == "POST":
-        form = RegistrationAdminSelectForm(request.POST)
-        if form.is_valid():
-            conference = form.cleaned_data['by_conference']
-            tutorial = form.cleaned_data['by_tutorial']
-            sprint = form.cleaned_data['by_sprint']
-            amount = form.cleaned_data['by_amount']
-            tshirt = form.cleaned_data['by_tshirt']
-            order_by = form.cleaned_data['order_by']
-            include = form.cleaned_data['include']
-            q = Registration.objects.all()
-            if conference == 'conference':
-                q = q.filter(conference=True)
-            elif conference == 'no conference':
-                q = q.filter(conference=False)
-            elif tutorial == 'tutorial':
-                q = q.filter(tutorial=True)
-            elif tutorial == 'no tutorial':
-                q = q.filter(tutorial=False)
-            if sprint == 'sprint':
-                q = q.filter(sprint=True)
-            if sprint == 'no sprint':
-                q = q.filter(sprint=False)
-            elif tshirt != 'all':
-                q = q.filter(tshirt=tshirt)
-            q = q.order_by('registrant__email')
-            query = q.query
-            results = list(q)
-            if include == []:
-                # default to include all fields
-                include = [i[0] for i in IC]
-            if results:
-                response = HttpResponse(mimetype='text/csv')
-                response['Content-Disposition'] = 'attachment; filename=registrations.csv'
-                output = csv.writer(response)
-                output.writerow([h for h in include])
-                for row in results:
-                    conference = row.conference == True and 'yes' or 'no'
-                    tutorial = row.tutorial == True and 'yes' or 'no'
-                    sprint = row.sprint == True and 'yes' or 'no'
-                    wrow = []
-                    if 'Name' in include:
-                        wrow.append(
-                            row.registrant.get_full_name().encode('utf-8'))
-                    if 'Email' in include:
-                        wrow.append(row.registrant.email.encode('utf-8'))
-                    if 'Organisation' in include:
-                        wrow.append(row.organisation.encode('utf-8'))
-                    if 'Conference' in include:
-                        wrow.append(conference)
-                    if 'Tutorial' in include:
-                        wrow.append(tutorial)
-                    if 'Sprint' in include:
-                        wrow.append(sprint)
-                    if 'T-size' in include:
-                        wrow.append(row.tshirt)
-                    output.writerow(wrow)
-                return response
-            else:
-                no_results = u'No results found for the query'
-
-    else:
-        form = RegistrationAdminSelectForm()
-    return render_to_response(template_name, RequestContext(request,
-        locals()))
-
-# NOT REQUIRED FOR SciPy.in
-@login_required
-def invoice(request, template_name='registration/invoice.html'):
-    user = request.user
-    registration = get_object_or_404(Registration, registrant=user)
-    if registration.sponsor:
-        redirect_to = reverse('kiwipycon_account')
-        return set_message_cookie(redirect_to,
-                msg = u'You are a sponsored guest, no payment required.')
-    return render_to_response(template_name, RequestContext(request,
-        {'registration' : registration, 'user': user}))
-
-@login_required
-def pdf_invoice(request, template_name='registration/invoice.html'):
-    user = request.user
-    registration = get_object_or_404(Registration, registrant=user)
-    if registration.sponsor:
-        redirect_to = reverse('kiwipycon_account')
-        return set_message_cookie(redirect_to,
-                msg = u'You are a sponsored guest, no payment required.')
-    content = render_to_string(template_name,
-        {'registration' : registration, 'user': user})
-    result = StringIO.StringIO()
-    import ho.pisa
-    pdf = ho.pisa.pisaDocument(StringIO.StringIO(content.encode("UTF-8")),result)
-    if not pdf.err:
-        return HttpResponse(result.getvalue(), mimetype='application/pdf')
-    return HttpResponse("Gremlins ate your invoice, please try html" \
-        " version")
-
-
-def registrations(request,
-        template_name='registration/registrations.html'):
-    """Simple page to count registrations"""
-    #registrations = Registration.objects.filter(payment=True).count()
-    registrations = Registration.objects.all().count()
-    return render_to_response(template_name, RequestContext(request,
-        {
-        'over_reg' : registrations >= REG_TOTAL and True or False,
-            'registrations' : registrations}))
-
-@login_required
-def edit_registration(request, id,
-        template_name='registration/edit-registration.html'):
-    '''Allows users that submitted a registration to edit it.
-    '''
-    reg = Registration.objects.get(pk=id)
-
-    if reg.registrant != request.user:
-        redirect_to = reverse('kiwipycon_account')
-        return set_message_cookie(redirect_to,
-                msg = u'Redirected because the registration you selected' \
-                      + ' is not your own.')
-
-    if request.method == 'POST':
-        form = RegistrationEditForm(data=request.POST)
-        if form.is_valid():
-            reg.organisation = form.data.get('organisation')
-            reg.occupation = form.data.get('occupation')
-            reg.city = form.data.get('city')
-            reg.tshirt = form.data.get('tshirt')
-            reg.allow_contact = form.data.get('allow_contact') and True or False
-            reg.conference = form.data.get('conference') and True or False
-            reg.tutorial = form.data.get('tutorial') and True or False
-            reg.sprint = form.data.get('sprint') and True or False
-            reg.save()
-            # Saved.. redirect
-            redirect_to = reverse('kiwipycon_account')
-            return set_message_cookie(redirect_to,
-                    msg = u'Your changes have been saved.')
-    else:
-        form = RegistrationEditForm(initial={
-                                    'id' : id,
-                                    'organisation' : reg.organisation,
-                                    'occupation' : reg.occupation,
-                                    'city' : reg.city,
-                                    'tshirt' : reg.tshirt,
-                                    'conference': reg.conference,
-                                    'tutorial': reg.tutorial,
-                                    'postcode' : reg.postcode,
-                                    'sprint' : reg.sprint,
-                                    'allow_contact' : reg.allow_contact,
-            })
-
-    return render_to_response(template_name, RequestContext(request, locals()))
-
-def submit_registration(request,
-        template_name='registration/submit-registration.html'):
-    '''Allows user to edit registration
-    '''
-    user = request.user
-    reg_count = Registration.objects.all().count()
-    if user.is_authenticated():
-        try:
-            profile = user.get_profile()
-        except:
-            profile, new = UserProfile.objects.get_or_create(user=user)
-            if new:
-                profile.save()
-        try:
-            registration = Registration.objects.get(registrant=user)
-            if registration:
-                redirect_to = reverse('kiwipycon_account')
-                return set_message_cookie(redirect_to,
-                        msg = u'You have already been registered.')
-
-        except ObjectDoesNotExist:
-            pass
-
-    message = None
-
-    if request.method == 'POST':
-        registration_form = RegistrationSubmitForm(data=request.POST)
-        registrant_form = RegistrantForm(data=request.POST)
-        wifi_form = WifiForm(data=request.POST)
-
-        if request.POST.get('action', None) == 'login':
-            login_form = AuthenticationForm(data=request.POST)
-            if login_form.is_valid():
-
-                from django.contrib.auth import login
-                login(request, login_form.get_user())
-
-                redirect_to = reverse('kiwipycon_submit_registration')
-                return set_message_cookie(redirect_to,
-                        msg = u'You have been logged in please continue' + \
-                               'with registration.')
-
-        newuser = None
-        passwd = None
-        if not user.is_authenticated():
-            if registrant_form.is_valid():
-                newuser = kiwipycon_createregistrant(request, registrant_form.data)
-                # Log in user
-                passwd = User.objects.make_random_password()
-                newuser.set_password(passwd)
-                newuser.save()
-                from django.contrib.auth import authenticate
-                user = authenticate(username=newuser.username, password=passwd)
-
-                from django.contrib.auth import login
-                login(request, user)
-
-                newuser = user
-
-        else:
-            newuser = user
-
-        if registration_form.is_valid() and newuser:
-            allow_contact = registration_form.data.get('allow_contact') and \
-                                        True or False
-            conference = registration_form.data.get('conference') and \
-                                        True or False
-            tutorial = registration_form.data.get('tutorial') and \
-                                        True or False
-            sprint = registration_form.data.get('sprint') and \
-                                        True or False
-
-            registrant = User.objects.get(pk=newuser.id)
-
-            presenter = None
-            talks = Talk.objects.filter(
-                    speaker=registrant).filter(approved=True)
-            if talks:
-                for talk in talks:
-                    if talk.duration == '30':
-                        presenter = True
-                    elif talk.duration == '60':
-                        presenter = True
-            
-            reg = Registration(
-                    #     slug = newuser.username,
-                registrant = registrant,
-                organisation = registration_form.data.get('organisation'),
-                occupation = registration_form.data.get('occupation'),
-                city = registration_form.data.get('city'),
-                tshirt = registration_form.data.get('tshirt'),
-                postcode = registration_form.cleaned_data.get('postcode'),
-                allow_contact = allow_contact,
-                conference = conference,
-                tutorial = tutorial,
-                sprint = sprint)
-            reg.save() 
-
-            # get id and use as slug and invoice number
-            id = reg.id
-            slug = 'KPC09%03d' % id
-            reg.slug = slug
-            reg.save()
-
-            # additional tasks:
-            if wifi_form.is_valid():
-                wifi = wifi_form.save(registrant)
-            
-            # 1. include random password if we are a new user
-            if passwd:
-                send_confirmation(registrant, slug, password=passwd)
-            else:
-            # 2. send user email with registration id
-                send_confirmation(registrant, slug)
-
-            redirect_to = reverse('kiwipycon_registrations')
-            return set_message_cookie(redirect_to,
-                    msg = u'Thank you, your registration has been submitted '\
-                           'and an email has been sent with payment details.')
-
-    else:
-        registration_form = RegistrationSubmitForm()
-        registrant_form = RegistrantForm()
-        wifi_form = WifiForm()
-
-    login_form = AuthenticationForm()
-
-
-    return render_to_response(template_name, RequestContext(request, {
-        'registration_form': registration_form,
-        'registrant_form' : registrant_form,
-        'over_reg' : reg_count >= REG_TOTAL and True or False,
-        'wifi_form' : wifi_form,
-        'message' : message,
-        'login_form' : login_form
-    }))