project/scipycon/registration/views.py
author Madhusudan.C.S <madhusudancs@gmail.com>
Thu, 18 Nov 2010 16:16:28 +0530
branchpayments
changeset 276 325ec5a41269
parent 263 02593358eddc
parent 275 679a9cab4bf1
child 291 182b03a1e6fe
permissions -rw-r--r--
Merge payments branch with the default mainline branch.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
137
ec6e58c639bf Added phone number, modified Occupation to be choice field.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 126
diff changeset
     1
from django.contrib.auth import authenticate
ec6e58c639bf Added phone number, modified Occupation to be choice field.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 126
diff changeset
     2
from django.contrib.auth import login
94
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
     3
from django.contrib.auth.decorators import login_required
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
     4
from django.contrib.auth.forms import AuthenticationForm
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
     5
from django.contrib.auth.models import User
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
     6
from django.core.exceptions import ObjectDoesNotExist
137
ec6e58c639bf Added phone number, modified Occupation to be choice field.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 126
diff changeset
     7
from django.core.urlresolvers import reverse
ec6e58c639bf Added phone number, modified Occupation to be choice field.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 126
diff changeset
     8
from django.shortcuts import render_to_response
ec6e58c639bf Added phone number, modified Occupation to be choice field.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 126
diff changeset
     9
from django.template import RequestContext
94
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    10
137
ec6e58c639bf Added phone number, modified Occupation to be choice field.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 126
diff changeset
    11
from project.scipycon.base.models import Event
ec6e58c639bf Added phone number, modified Occupation to be choice field.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 126
diff changeset
    12
from project.scipycon.registration.forms import RegistrationEditForm
ec6e58c639bf Added phone number, modified Occupation to be choice field.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 126
diff changeset
    13
from project.scipycon.registration.forms import RegistrationSubmitForm
202
b4391b3d5fcc Edit views to make room for accommodation forms.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 194
diff changeset
    14
from project.scipycon.registration.forms import AccommodationForm
251
b99607287a52 Add payment forms and object details in edit and submit registration views.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 247
diff changeset
    15
from project.scipycon.registration.forms import PaymentForm
137
ec6e58c639bf Added phone number, modified Occupation to be choice field.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 126
diff changeset
    16
from project.scipycon.registration.forms import WifiForm
202
b4391b3d5fcc Edit views to make room for accommodation forms.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 194
diff changeset
    17
from project.scipycon.registration.models import Accommodation
251
b99607287a52 Add payment forms and object details in edit and submit registration views.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 247
diff changeset
    18
from project.scipycon.registration.models import Payment
137
ec6e58c639bf Added phone number, modified Occupation to be choice field.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 126
diff changeset
    19
from project.scipycon.registration.models import Registration
ec6e58c639bf Added phone number, modified Occupation to be choice field.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 126
diff changeset
    20
from project.scipycon.registration.models import Wifi
ec6e58c639bf Added phone number, modified Occupation to be choice field.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 126
diff changeset
    21
from project.scipycon.registration.utils import send_confirmation
ec6e58c639bf Added phone number, modified Occupation to be choice field.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 126
diff changeset
    22
from project.scipycon.user.forms import RegistrantForm
96
178b89a3ca4f Removed unwanted files and made more changes to make SciPyCon a clean app.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 94
diff changeset
    23
from project.scipycon.user.models import UserProfile
178b89a3ca4f Removed unwanted files and made more changes to make SciPyCon a clean app.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 94
diff changeset
    24
from project.scipycon.user.utils import scipycon_createregistrant
137
ec6e58c639bf Added phone number, modified Occupation to be choice field.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 126
diff changeset
    25
from project.scipycon.utils import set_message_cookie
94
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    26
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    27
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    28
REG_TOTAL = 1000
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    29
126
f185cb8316cf Added scope to all URLs, all reverse functions and all view methods and removed unnecessary functions.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 111
diff changeset
    30
137
ec6e58c639bf Added phone number, modified Occupation to be choice field.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 126
diff changeset
    31
@login_required
126
f185cb8316cf Added scope to all URLs, all reverse functions and all view methods and removed unnecessary functions.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 111
diff changeset
    32
def registrations(request, scope, 
f185cb8316cf Added scope to all URLs, all reverse functions and all view methods and removed unnecessary functions.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 111
diff changeset
    33
                  template_name='registration/registrations.html'):
f185cb8316cf Added scope to all URLs, all reverse functions and all view methods and removed unnecessary functions.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 111
diff changeset
    34
    """Simple page to count registrations"""
94
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    35
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    36
    registrations = Registration.objects.all().count()
142
70fcb57d8d15 Added event and registrants to Registration summary page.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 137
diff changeset
    37
70fcb57d8d15 Added event and registrants to Registration summary page.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 137
diff changeset
    38
    user = request.user
70fcb57d8d15 Added event and registrants to Registration summary page.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 137
diff changeset
    39
    if user.is_authenticated():
70fcb57d8d15 Added event and registrants to Registration summary page.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 137
diff changeset
    40
        registration = Registration.objects.get(registrant=user)
70fcb57d8d15 Added event and registrants to Registration summary page.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 137
diff changeset
    41
    else:
70fcb57d8d15 Added event and registrants to Registration summary page.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 137
diff changeset
    42
        registration = None
70fcb57d8d15 Added event and registrants to Registration summary page.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 137
diff changeset
    43
70fcb57d8d15 Added event and registrants to Registration summary page.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 137
diff changeset
    44
    event = Event.objects.get(scope=scope)
70fcb57d8d15 Added event and registrants to Registration summary page.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 137
diff changeset
    45
126
f185cb8316cf Added scope to all URLs, all reverse functions and all view methods and removed unnecessary functions.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 111
diff changeset
    46
    return render_to_response(template_name, RequestContext(request, {
f185cb8316cf Added scope to all URLs, all reverse functions and all view methods and removed unnecessary functions.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 111
diff changeset
    47
        'params': {'scope': scope},
94
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    48
        'over_reg' : registrations >= REG_TOTAL and True or False,
142
70fcb57d8d15 Added event and registrants to Registration summary page.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 137
diff changeset
    49
        'registrations' : registrations,
70fcb57d8d15 Added event and registrants to Registration summary page.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 137
diff changeset
    50
        'registration': registration,
70fcb57d8d15 Added event and registrants to Registration summary page.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 137
diff changeset
    51
        'event': event}))
94
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    52
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    53
@login_required
111
0e2c94c6a9e8 Adjusted views to send the scope in params.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 106
diff changeset
    54
def edit_registration(request, scope, id,
126
f185cb8316cf Added scope to all URLs, all reverse functions and all view methods and removed unnecessary functions.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 111
diff changeset
    55
                      template_name='registration/edit-registration.html'):
f185cb8316cf Added scope to all URLs, all reverse functions and all view methods and removed unnecessary functions.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 111
diff changeset
    56
    """Allows users that submitted a registration to edit it.
f185cb8316cf Added scope to all URLs, all reverse functions and all view methods and removed unnecessary functions.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 111
diff changeset
    57
    """
f185cb8316cf Added scope to all URLs, all reverse functions and all view methods and removed unnecessary functions.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 111
diff changeset
    58
202
b4391b3d5fcc Edit views to make room for accommodation forms.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 194
diff changeset
    59
    scope_entity = Event.objects.get(scope=scope)
b4391b3d5fcc Edit views to make room for accommodation forms.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 194
diff changeset
    60
233
394576ff8a2f Fix major bug: Change hard coded registration form redirect to based on User and do int conversions for ids.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 231
diff changeset
    61
    reg = Registration.objects.get(pk=int(id))
137
ec6e58c639bf Added phone number, modified Occupation to be choice field.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 126
diff changeset
    62
    wifi = Wifi.objects.get(user=reg.registrant)
94
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    63
251
b99607287a52 Add payment forms and object details in edit and submit registration views.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 247
diff changeset
    64
    # TODO: This is an ugly hack to add accommodation and payment forms
b99607287a52 Add payment forms and object details in edit and submit registration views.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 247
diff changeset
    65
    # details at later stage for SciPy.in 2010. This must be removed for
b99607287a52 Add payment forms and object details in edit and submit registration views.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 247
diff changeset
    66
    # SciPy.in 2011
247
2907855f18c4 Rename created variable name to acco_created for acco object creation in edit registration view function.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 202
diff changeset
    67
    acco, acco_created = Accommodation.objects.get_or_create(
2907855f18c4 Rename created variable name to acco_created for acco object creation in edit registration view function.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 202
diff changeset
    68
        user=reg.registrant, scope=scope_entity)
251
b99607287a52 Add payment forms and object details in edit and submit registration views.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 247
diff changeset
    69
    payment, payment_created = Payment.objects.get_or_create(
b99607287a52 Add payment forms and object details in edit and submit registration views.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 247
diff changeset
    70
        user=reg.registrant, scope=scope_entity)
202
b4391b3d5fcc Edit views to make room for accommodation forms.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 194
diff changeset
    71
94
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    72
    if reg.registrant != request.user:
126
f185cb8316cf Added scope to all URLs, all reverse functions and all view methods and removed unnecessary functions.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 111
diff changeset
    73
        redirect_to = reverse('scipycon_account', kwargs={'scope': scope})
f185cb8316cf Added scope to all URLs, all reverse functions and all view methods and removed unnecessary functions.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 111
diff changeset
    74
f185cb8316cf Added scope to all URLs, all reverse functions and all view methods and removed unnecessary functions.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 111
diff changeset
    75
        return set_message_cookie(
f185cb8316cf Added scope to all URLs, all reverse functions and all view methods and removed unnecessary functions.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 111
diff changeset
    76
            redirect_to,
f185cb8316cf Added scope to all URLs, all reverse functions and all view methods and removed unnecessary functions.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 111
diff changeset
    77
            msg = u'Redirected because the registration you selected' \
94
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    78
                      + ' is not your own.')
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    79
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    80
    if request.method == 'POST':
137
ec6e58c639bf Added phone number, modified Occupation to be choice field.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 126
diff changeset
    81
        registration_form = RegistrationEditForm(data=request.POST)
ec6e58c639bf Added phone number, modified Occupation to be choice field.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 126
diff changeset
    82
        wifi_form = WifiForm(data=request.POST)
202
b4391b3d5fcc Edit views to make room for accommodation forms.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 194
diff changeset
    83
        acco_form = AccommodationForm(data=request.POST)
251
b99607287a52 Add payment forms and object details in edit and submit registration views.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 247
diff changeset
    84
        payment_form = PaymentForm(data=request.POST)
137
ec6e58c639bf Added phone number, modified Occupation to be choice field.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 126
diff changeset
    85
202
b4391b3d5fcc Edit views to make room for accommodation forms.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 194
diff changeset
    86
        if (registration_form.is_valid() and wifi_form.is_valid() and
251
b99607287a52 Add payment forms and object details in edit and submit registration views.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 247
diff changeset
    87
            acco_form.is_valid() and payment_form.is_valid()):
137
ec6e58c639bf Added phone number, modified Occupation to be choice field.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 126
diff changeset
    88
            reg.organisation = registration_form.data.get('organisation')
ec6e58c639bf Added phone number, modified Occupation to be choice field.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 126
diff changeset
    89
            reg.occupation = registration_form.data.get('occupation')
ec6e58c639bf Added phone number, modified Occupation to be choice field.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 126
diff changeset
    90
            reg.city = registration_form.data.get('city')
ec6e58c639bf Added phone number, modified Occupation to be choice field.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 126
diff changeset
    91
            reg.phone_num = registration_form.data.get('phone_num')
ec6e58c639bf Added phone number, modified Occupation to be choice field.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 126
diff changeset
    92
            reg.postcode = registration_form.data.get('postcode')
ec6e58c639bf Added phone number, modified Occupation to be choice field.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 126
diff changeset
    93
            #reg.tshirt = registration_form.data.get('tshirt')
ec6e58c639bf Added phone number, modified Occupation to be choice field.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 126
diff changeset
    94
            reg.allow_contact = registration_form.data.get(
ec6e58c639bf Added phone number, modified Occupation to be choice field.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 126
diff changeset
    95
                'allow_contact') and True or False
ec6e58c639bf Added phone number, modified Occupation to be choice field.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 126
diff changeset
    96
            reg.conference = registration_form.data.get(
ec6e58c639bf Added phone number, modified Occupation to be choice field.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 126
diff changeset
    97
                'conference') and True or False
ec6e58c639bf Added phone number, modified Occupation to be choice field.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 126
diff changeset
    98
            reg.tutorial = registration_form.data.get(
ec6e58c639bf Added phone number, modified Occupation to be choice field.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 126
diff changeset
    99
                'tutorial') and True or False
ec6e58c639bf Added phone number, modified Occupation to be choice field.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 126
diff changeset
   100
            reg.sprint = registration_form.data.get(
ec6e58c639bf Added phone number, modified Occupation to be choice field.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 126
diff changeset
   101
                'sprint') and True or False
94
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   102
            reg.save()
126
f185cb8316cf Added scope to all URLs, all reverse functions and all view methods and removed unnecessary functions.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 111
diff changeset
   103
137
ec6e58c639bf Added phone number, modified Occupation to be choice field.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 126
diff changeset
   104
            wifi = wifi_form.save(reg.registrant, reg.scope)
202
b4391b3d5fcc Edit views to make room for accommodation forms.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 194
diff changeset
   105
            acco = acco_form.save(reg.registrant, reg.scope)
251
b99607287a52 Add payment forms and object details in edit and submit registration views.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 247
diff changeset
   106
            payment = payment_form.save(reg.registrant, reg.scope)
137
ec6e58c639bf Added phone number, modified Occupation to be choice field.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 126
diff changeset
   107
94
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   108
            # Saved.. redirect
126
f185cb8316cf Added scope to all URLs, all reverse functions and all view methods and removed unnecessary functions.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 111
diff changeset
   109
            redirect_to = reverse('scipycon_account', kwargs={'scope': scope})
f185cb8316cf Added scope to all URLs, all reverse functions and all view methods and removed unnecessary functions.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 111
diff changeset
   110
94
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   111
            return set_message_cookie(redirect_to,
126
f185cb8316cf Added scope to all URLs, all reverse functions and all view methods and removed unnecessary functions.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 111
diff changeset
   112
                msg = u'Your changes have been saved.')
94
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   113
    else:
137
ec6e58c639bf Added phone number, modified Occupation to be choice field.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 126
diff changeset
   114
        registration_form = RegistrationEditForm(initial={
ec6e58c639bf Added phone number, modified Occupation to be choice field.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 126
diff changeset
   115
            'id' : id,
ec6e58c639bf Added phone number, modified Occupation to be choice field.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 126
diff changeset
   116
            'organisation' : reg.organisation,
ec6e58c639bf Added phone number, modified Occupation to be choice field.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 126
diff changeset
   117
            'occupation' : reg.occupation,
ec6e58c639bf Added phone number, modified Occupation to be choice field.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 126
diff changeset
   118
            'city' : reg.city,
ec6e58c639bf Added phone number, modified Occupation to be choice field.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 126
diff changeset
   119
            'phone_num': reg.phone_num,
ec6e58c639bf Added phone number, modified Occupation to be choice field.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 126
diff changeset
   120
            #'tshirt' : reg.tshirt,
ec6e58c639bf Added phone number, modified Occupation to be choice field.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 126
diff changeset
   121
            'conference': reg.conference,
ec6e58c639bf Added phone number, modified Occupation to be choice field.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 126
diff changeset
   122
            'tutorial': reg.tutorial,
ec6e58c639bf Added phone number, modified Occupation to be choice field.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 126
diff changeset
   123
            'postcode' : reg.postcode,
ec6e58c639bf Added phone number, modified Occupation to be choice field.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 126
diff changeset
   124
            'sprint' : reg.sprint,
ec6e58c639bf Added phone number, modified Occupation to be choice field.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 126
diff changeset
   125
            'allow_contact' : reg.allow_contact,
ec6e58c639bf Added phone number, modified Occupation to be choice field.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 126
diff changeset
   126
            })
ec6e58c639bf Added phone number, modified Occupation to be choice field.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 126
diff changeset
   127
        wifi_form = WifiForm(initial={
ec6e58c639bf Added phone number, modified Occupation to be choice field.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 126
diff changeset
   128
            'user': wifi.user,
ec6e58c639bf Added phone number, modified Occupation to be choice field.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 126
diff changeset
   129
            'scope': wifi.scope,
273
5129e1427557 Add registration_id field to initial form in the field.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 233
diff changeset
   130
            'wifi': wifi.wifi,
5129e1427557 Add registration_id field to initial form in the field.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 233
diff changeset
   131
            'registration_id': wifi.registration_id
94
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   132
            })
202
b4391b3d5fcc Edit views to make room for accommodation forms.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 194
diff changeset
   133
        acco_form = AccommodationForm(initial={
b4391b3d5fcc Edit views to make room for accommodation forms.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 194
diff changeset
   134
            'user': acco.user,
b4391b3d5fcc Edit views to make room for accommodation forms.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 194
diff changeset
   135
            'scope': acco.scope,
b4391b3d5fcc Edit views to make room for accommodation forms.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 194
diff changeset
   136
            'sex': acco.sex,
b4391b3d5fcc Edit views to make room for accommodation forms.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 194
diff changeset
   137
            'accommodation_required': acco.accommodation_required,
b4391b3d5fcc Edit views to make room for accommodation forms.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 194
diff changeset
   138
            'accommodation_days': acco.accommodation_days,
b4391b3d5fcc Edit views to make room for accommodation forms.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 194
diff changeset
   139
            })
251
b99607287a52 Add payment forms and object details in edit and submit registration views.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 247
diff changeset
   140
        payment_form = PaymentForm(initial={
b99607287a52 Add payment forms and object details in edit and submit registration views.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 247
diff changeset
   141
            'user': payment.user,
b99607287a52 Add payment forms and object details in edit and submit registration views.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 247
diff changeset
   142
            'scope': payment.scope,
263
02593358eddc Made adjustments in the view to make paid field a dummy form field and not a model field. Also added confirmed field as model field.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 257
diff changeset
   143
            'paid': payment.type or payment.details,
251
b99607287a52 Add payment forms and object details in edit and submit registration views.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 247
diff changeset
   144
            'type': payment.type,
b99607287a52 Add payment forms and object details in edit and submit registration views.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 247
diff changeset
   145
            'details': payment.details,
b99607287a52 Add payment forms and object details in edit and submit registration views.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 247
diff changeset
   146
            })
94
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   147
111
0e2c94c6a9e8 Adjusted views to send the scope in params.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 106
diff changeset
   148
    return render_to_response(
0e2c94c6a9e8 Adjusted views to send the scope in params.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 106
diff changeset
   149
        template_name, RequestContext(request, {
137
ec6e58c639bf Added phone number, modified Occupation to be choice field.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 126
diff changeset
   150
        'params': {'scope': scope},
ec6e58c639bf Added phone number, modified Occupation to be choice field.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 126
diff changeset
   151
        'registration': {'id': id},
ec6e58c639bf Added phone number, modified Occupation to be choice field.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 126
diff changeset
   152
        'registration_form': registration_form,
202
b4391b3d5fcc Edit views to make room for accommodation forms.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 194
diff changeset
   153
        'wifi_form': wifi_form,
251
b99607287a52 Add payment forms and object details in edit and submit registration views.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 247
diff changeset
   154
        'acco_form': acco_form,
b99607287a52 Add payment forms and object details in edit and submit registration views.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 247
diff changeset
   155
        'payment_form': payment_form}))
94
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   156
106
3a31881564ba Add a scope pattern to the URLs.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 96
diff changeset
   157
def submit_registration(request, scope,
94
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   158
        template_name='registration/submit-registration.html'):
126
f185cb8316cf Added scope to all URLs, all reverse functions and all view methods and removed unnecessary functions.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 111
diff changeset
   159
    """Allows user to edit registration
f185cb8316cf Added scope to all URLs, all reverse functions and all view methods and removed unnecessary functions.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 111
diff changeset
   160
    """
f185cb8316cf Added scope to all URLs, all reverse functions and all view methods and removed unnecessary functions.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 111
diff changeset
   161
94
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   162
    user = request.user
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   163
    reg_count = Registration.objects.all().count()
126
f185cb8316cf Added scope to all URLs, all reverse functions and all view methods and removed unnecessary functions.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 111
diff changeset
   164
137
ec6e58c639bf Added phone number, modified Occupation to be choice field.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 126
diff changeset
   165
    scope_entity = Event.objects.get(scope=scope)
ec6e58c639bf Added phone number, modified Occupation to be choice field.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 126
diff changeset
   166
94
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   167
    if user.is_authenticated():
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   168
        try:
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   169
            profile = user.get_profile()
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   170
        except:
137
ec6e58c639bf Added phone number, modified Occupation to be choice field.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 126
diff changeset
   171
            profile, new = UserProfile.objects.get_or_create(
ec6e58c639bf Added phone number, modified Occupation to be choice field.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 126
diff changeset
   172
                user=user, scope=scope_entity)
94
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   173
            if new:
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   174
                profile.save()
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   175
        try:
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   176
            registration = Registration.objects.get(registrant=user)
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   177
            if registration:
126
f185cb8316cf Added scope to all URLs, all reverse functions and all view methods and removed unnecessary functions.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 111
diff changeset
   178
                redirect_to = reverse('scipycon_account',
f185cb8316cf Added scope to all URLs, all reverse functions and all view methods and removed unnecessary functions.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 111
diff changeset
   179
                                      kwargs={'scope': scope})
f185cb8316cf Added scope to all URLs, all reverse functions and all view methods and removed unnecessary functions.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 111
diff changeset
   180
                return set_message_cookie(
f185cb8316cf Added scope to all URLs, all reverse functions and all view methods and removed unnecessary functions.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 111
diff changeset
   181
                    redirect_to, msg = u'You have already been registered.')
94
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   182
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   183
        except ObjectDoesNotExist:
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   184
            pass
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   185
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   186
    message = None
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   187
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   188
    if request.method == 'POST':
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   189
        registration_form = RegistrationSubmitForm(data=request.POST)
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   190
        registrant_form = RegistrantForm(data=request.POST)
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   191
        wifi_form = WifiForm(data=request.POST)
202
b4391b3d5fcc Edit views to make room for accommodation forms.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 194
diff changeset
   192
        acco_form = AccommodationForm(data=request.POST)
251
b99607287a52 Add payment forms and object details in edit and submit registration views.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 247
diff changeset
   193
        payment_form = PaymentForm(data=request.POST)
94
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   194
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   195
        if request.POST.get('action', None) == 'login':
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   196
            login_form = AuthenticationForm(data=request.POST)
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   197
            if login_form.is_valid():
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   198
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   199
                login(request, login_form.get_user())
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   200
126
f185cb8316cf Added scope to all URLs, all reverse functions and all view methods and removed unnecessary functions.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 111
diff changeset
   201
                redirect_to = reverse('scipycon_submit_registration',
f185cb8316cf Added scope to all URLs, all reverse functions and all view methods and removed unnecessary functions.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 111
diff changeset
   202
                                      kwargs={'scope': scope})
94
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   203
                return set_message_cookie(redirect_to,
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   204
                        msg = u'You have been logged in please continue' + \
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   205
                               'with registration.')
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   206
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   207
        newuser = None
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   208
        passwd = None
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   209
        if not user.is_authenticated():
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   210
            if registrant_form.is_valid():
137
ec6e58c639bf Added phone number, modified Occupation to be choice field.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 126
diff changeset
   211
                newuser = scipycon_createregistrant(
142
70fcb57d8d15 Added event and registrants to Registration summary page.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 137
diff changeset
   212
                    request, registrant_form.data, scope)
137
ec6e58c639bf Added phone number, modified Occupation to be choice field.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 126
diff changeset
   213
94
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   214
                # Log in user
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   215
                passwd = User.objects.make_random_password()
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   216
                newuser.set_password(passwd)
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   217
                newuser.save()
137
ec6e58c639bf Added phone number, modified Occupation to be choice field.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 126
diff changeset
   218
94
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   219
                user = authenticate(username=newuser.username, password=passwd)
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   220
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   221
                login(request, user)
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   222
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   223
                newuser = user
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   224
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   225
        else:
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   226
            newuser = user
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   227
202
b4391b3d5fcc Edit views to make room for accommodation forms.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 194
diff changeset
   228
        if (registration_form.is_valid() and newuser and wifi_form.is_valid()
251
b99607287a52 Add payment forms and object details in edit and submit registration views.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 247
diff changeset
   229
            and acco_form.is_valid() and payment_form.is_valid()):
137
ec6e58c639bf Added phone number, modified Occupation to be choice field.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 126
diff changeset
   230
            allow_contact = registration_form.cleaned_data.get(
ec6e58c639bf Added phone number, modified Occupation to be choice field.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 126
diff changeset
   231
                'allow_contact') and True or False
ec6e58c639bf Added phone number, modified Occupation to be choice field.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 126
diff changeset
   232
            conference = registration_form.cleaned_data.get(
ec6e58c639bf Added phone number, modified Occupation to be choice field.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 126
diff changeset
   233
                'conference') and True or False
ec6e58c639bf Added phone number, modified Occupation to be choice field.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 126
diff changeset
   234
            tutorial = registration_form.cleaned_data.get('tutorial') and \
126
f185cb8316cf Added scope to all URLs, all reverse functions and all view methods and removed unnecessary functions.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 111
diff changeset
   235
                True or False
137
ec6e58c639bf Added phone number, modified Occupation to be choice field.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 126
diff changeset
   236
            sprint = registration_form.cleaned_data.get('sprint') and \
126
f185cb8316cf Added scope to all URLs, all reverse functions and all view methods and removed unnecessary functions.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 111
diff changeset
   237
                True or False
94
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   238
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   239
            registrant = User.objects.get(pk=newuser.id)
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   240
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   241
            reg = Registration(
137
ec6e58c639bf Added phone number, modified Occupation to be choice field.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 126
diff changeset
   242
                scope=scope_entity,
94
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   243
                registrant = registrant,
137
ec6e58c639bf Added phone number, modified Occupation to be choice field.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 126
diff changeset
   244
                organisation = registration_form.cleaned_data.get(
ec6e58c639bf Added phone number, modified Occupation to be choice field.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 126
diff changeset
   245
                    'organisation'),
ec6e58c639bf Added phone number, modified Occupation to be choice field.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 126
diff changeset
   246
                occupation = registration_form.cleaned_data.get('occupation'),
ec6e58c639bf Added phone number, modified Occupation to be choice field.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 126
diff changeset
   247
                city = registration_form.cleaned_data.get('city'),
ec6e58c639bf Added phone number, modified Occupation to be choice field.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 126
diff changeset
   248
                #tshirt = registration_form.data.get('tshirt'),
94
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   249
                postcode = registration_form.cleaned_data.get('postcode'),
137
ec6e58c639bf Added phone number, modified Occupation to be choice field.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 126
diff changeset
   250
                phone_num = registration_form.cleaned_data.get('phone_num'),
94
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   251
                allow_contact = allow_contact,
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   252
                conference = conference,
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   253
                tutorial = tutorial,
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   254
                sprint = sprint)
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   255
            reg.save() 
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   256
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   257
            # get id and use as slug and invoice number
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   258
            id = reg.id
142
70fcb57d8d15 Added event and registrants to Registration summary page.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 137
diff changeset
   259
            slug = 'SCIPYIN2010%04d' % id
94
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   260
            reg.slug = slug
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   261
            reg.save()
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   262
137
ec6e58c639bf Added phone number, modified Occupation to be choice field.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 126
diff changeset
   263
            wifi = wifi_form.save(registrant, scope_entity)
202
b4391b3d5fcc Edit views to make room for accommodation forms.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 194
diff changeset
   264
            acco = acco_form.save(registrant, scope_entity)
251
b99607287a52 Add payment forms and object details in edit and submit registration views.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 247
diff changeset
   265
            payment = payment_form.save(registrant, scope_entity)
137
ec6e58c639bf Added phone number, modified Occupation to be choice field.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 126
diff changeset
   266
231
839dd1745ad2 Fix style issues.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 202
diff changeset
   267
            send_confirmation(registrant, scope_entity, password=passwd)
94
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   268
126
f185cb8316cf Added scope to all URLs, all reverse functions and all view methods and removed unnecessary functions.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 111
diff changeset
   269
            redirect_to = reverse('scipycon_registrations',
f185cb8316cf Added scope to all URLs, all reverse functions and all view methods and removed unnecessary functions.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 111
diff changeset
   270
                                  kwargs={'scope': scope})
94
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   271
            return set_message_cookie(redirect_to,
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   272
                    msg = u'Thank you, your registration has been submitted '\
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   273
                           'and an email has been sent with payment details.')
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   274
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   275
    else:
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   276
        registration_form = RegistrationSubmitForm()
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   277
        registrant_form = RegistrantForm()
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   278
        wifi_form = WifiForm()
202
b4391b3d5fcc Edit views to make room for accommodation forms.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 194
diff changeset
   279
        acco_form = AccommodationForm()
251
b99607287a52 Add payment forms and object details in edit and submit registration views.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 247
diff changeset
   280
        payment_form = PaymentForm()
94
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   281
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   282
    login_form = AuthenticationForm()
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   283
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   284
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   285
    return render_to_response(template_name, RequestContext(request, {
111
0e2c94c6a9e8 Adjusted views to send the scope in params.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 106
diff changeset
   286
        'params': {'scope': scope},
94
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   287
        'registration_form': registration_form,
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   288
        'registrant_form' : registrant_form,
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   289
        'over_reg' : reg_count >= REG_TOTAL and True or False,
202
b4391b3d5fcc Edit views to make room for accommodation forms.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 194
diff changeset
   290
        'acco_form': acco_form,
251
b99607287a52 Add payment forms and object details in edit and submit registration views.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 247
diff changeset
   291
        'payment_form': payment_form,
94
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   292
        'wifi_form' : wifi_form,
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   293
        'message' : message,
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   294
        'login_form' : login_form
87e77aa18610 Moved the files to new Django app named scipycon and modified settings.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   295
    }))
193
ed5828a90109 Copy the download csv code that was earlier written but scraped.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 186
diff changeset
   296
ed5828a90109 Copy the download csv code that was earlier written but scraped.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 186
diff changeset
   297
ed5828a90109 Copy the download csv code that was earlier written but scraped.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 186
diff changeset
   298
@login_required
ed5828a90109 Copy the download csv code that was earlier written but scraped.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 186
diff changeset
   299
def regstats(request, scope,
194
808abc104b55 View to calculate the number of registrants per event.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 193
diff changeset
   300
             template_name='registration/regstats.html'):
193
ed5828a90109 Copy the download csv code that was earlier written but scraped.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 186
diff changeset
   301
    """View that gives the statistics of registrants.
ed5828a90109 Copy the download csv code that was earlier written but scraped.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 186
diff changeset
   302
    """
194
808abc104b55 View to calculate the number of registrants per event.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 193
diff changeset
   303
193
ed5828a90109 Copy the download csv code that was earlier written but scraped.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 186
diff changeset
   304
    if not request.user.is_staff:
ed5828a90109 Copy the download csv code that was earlier written but scraped.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 186
diff changeset
   305
        redirect_to = reverse('scipycon_login', kwargs={'scope': scope})
255
b20d55891709 Add cookie and return message for regstats view function.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 251
diff changeset
   306
        return set_message_cookie(
b20d55891709 Add cookie and return message for regstats view function.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 251
diff changeset
   307
            redirect_to, msg = u'You must be a staff on this website to '
b20d55891709 Add cookie and return message for regstats view function.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 251
diff changeset
   308
            'access this page.')
193
ed5828a90109 Copy the download csv code that was earlier written but scraped.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 186
diff changeset
   309
194
808abc104b55 View to calculate the number of registrants per event.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 193
diff changeset
   310
    q = Registration.objects.all()
808abc104b55 View to calculate the number of registrants per event.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 193
diff changeset
   311
    conf_num = q.filter(conference=True).count()
808abc104b55 View to calculate the number of registrants per event.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 193
diff changeset
   312
    tut_num = q.filter(tutorial=True).count()
808abc104b55 View to calculate the number of registrants per event.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 193
diff changeset
   313
    sprint_num = q.filter(sprint=True).count()
193
ed5828a90109 Copy the download csv code that was earlier written but scraped.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 186
diff changeset
   314
ed5828a90109 Copy the download csv code that was earlier written but scraped.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 186
diff changeset
   315
    return render_to_response(template_name, RequestContext(request,
194
808abc104b55 View to calculate the number of registrants per event.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 193
diff changeset
   316
        {'params': {'scope': scope},
808abc104b55 View to calculate the number of registrants per event.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 193
diff changeset
   317
         'conf_num': conf_num, 
808abc104b55 View to calculate the number of registrants per event.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 193
diff changeset
   318
         'tut_num': tut_num,
808abc104b55 View to calculate the number of registrants per event.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 193
diff changeset
   319
         'sprint_num': sprint_num,
236
29ecd3dd6565 Merging heads
Amit Sethi
parents: 194
diff changeset
   320
         }))
257
e2ff0c70014d Add a view to manage payments.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 255
diff changeset
   321
e2ff0c70014d Add a view to manage payments.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 255
diff changeset
   322
e2ff0c70014d Add a view to manage payments.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 255
diff changeset
   323
@login_required
e2ff0c70014d Add a view to manage payments.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 255
diff changeset
   324
def manage_payments(request, scope,
e2ff0c70014d Add a view to manage payments.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 255
diff changeset
   325
                    template_name='registration/manage_payments.html'):
e2ff0c70014d Add a view to manage payments.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 255
diff changeset
   326
    """View that gives a form to manage payments.
e2ff0c70014d Add a view to manage payments.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 255
diff changeset
   327
    """
e2ff0c70014d Add a view to manage payments.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 255
diff changeset
   328
e2ff0c70014d Add a view to manage payments.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 255
diff changeset
   329
    if not request.user.is_superuser:
e2ff0c70014d Add a view to manage payments.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 255
diff changeset
   330
        redirect_to = reverse('scipycon_login', kwargs={'scope': scope})
e2ff0c70014d Add a view to manage payments.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 255
diff changeset
   331
        return set_message_cookie(
e2ff0c70014d Add a view to manage payments.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 255
diff changeset
   332
            redirect_to, msg = u'You must be an admin on this website to '
e2ff0c70014d Add a view to manage payments.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 255
diff changeset
   333
            'access this page.')
e2ff0c70014d Add a view to manage payments.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 255
diff changeset
   334
e2ff0c70014d Add a view to manage payments.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 255
diff changeset
   335
    message = None
e2ff0c70014d Add a view to manage payments.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 255
diff changeset
   336
e2ff0c70014d Add a view to manage payments.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 255
diff changeset
   337
    scope_entity = Event.objects.get(scope=scope)
e2ff0c70014d Add a view to manage payments.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 255
diff changeset
   338
e2ff0c70014d Add a view to manage payments.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 255
diff changeset
   339
    if request.method == 'POST':
e2ff0c70014d Add a view to manage payments.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 255
diff changeset
   340
        post_data = request.POST
e2ff0c70014d Add a view to manage payments.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 255
diff changeset
   341
        list_user_ids = []
e2ff0c70014d Add a view to manage payments.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 255
diff changeset
   342
        for user_id_string in post_data:
e2ff0c70014d Add a view to manage payments.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 255
diff changeset
   343
            id_str_list = user_id_string.split('_')
e2ff0c70014d Add a view to manage payments.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 255
diff changeset
   344
            if (len(id_str_list) == 3 and id_str_list[0] == 'registrant' and
e2ff0c70014d Add a view to manage payments.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 255
diff changeset
   345
              id_str_list[1] == 'id'):
e2ff0c70014d Add a view to manage payments.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 255
diff changeset
   346
                id = int(id_str_list[2])
e2ff0c70014d Add a view to manage payments.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 255
diff changeset
   347
                reg_user = User.objects.get(pk=id)
e2ff0c70014d Add a view to manage payments.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 255
diff changeset
   348
e2ff0c70014d Add a view to manage payments.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 255
diff changeset
   349
                payment, created = reg_user.payment_set.get_or_create(
e2ff0c70014d Add a view to manage payments.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 255
diff changeset
   350
                  user=reg_user, scope=scope_entity)
e2ff0c70014d Add a view to manage payments.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 255
diff changeset
   351
263
02593358eddc Made adjustments in the view to make paid field a dummy form field and not a model field. Also added confirmed field as model field.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 257
diff changeset
   352
                payment.confirmed = True
257
e2ff0c70014d Add a view to manage payments.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 255
diff changeset
   353
                payment.save()
e2ff0c70014d Add a view to manage payments.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 255
diff changeset
   354
e2ff0c70014d Add a view to manage payments.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 255
diff changeset
   355
                list_user_ids.append(id)
e2ff0c70014d Add a view to manage payments.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 255
diff changeset
   356
e2ff0c70014d Add a view to manage payments.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 255
diff changeset
   357
        # This is done to unset for the confirmation for users for whom
e2ff0c70014d Add a view to manage payments.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 255
diff changeset
   358
        # mistakenly confirmation was set.
e2ff0c70014d Add a view to manage payments.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 255
diff changeset
   359
        # (TODO) This is a very expensive operation, any better solution
e2ff0c70014d Add a view to manage payments.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 255
diff changeset
   360
        # will be appreciated.
e2ff0c70014d Add a view to manage payments.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 255
diff changeset
   361
        unpaid_users = User.objects.exclude(pk__in=list_user_ids)
e2ff0c70014d Add a view to manage payments.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 255
diff changeset
   362
        for user in unpaid_users:
e2ff0c70014d Add a view to manage payments.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 255
diff changeset
   363
            payment, created = user.payment_set.get_or_create(
e2ff0c70014d Add a view to manage payments.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 255
diff changeset
   364
              user=user, scope=scope_entity)
263
02593358eddc Made adjustments in the view to make paid field a dummy form field and not a model field. Also added confirmed field as model field.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 257
diff changeset
   365
            payment.confirmed = False
257
e2ff0c70014d Add a view to manage payments.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 255
diff changeset
   366
            payment.save()
e2ff0c70014d Add a view to manage payments.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 255
diff changeset
   367
e2ff0c70014d Add a view to manage payments.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 255
diff changeset
   368
    registrants = Registration.objects.all()
e2ff0c70014d Add a view to manage payments.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 255
diff changeset
   369
e2ff0c70014d Add a view to manage payments.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 255
diff changeset
   370
    return render_to_response(template_name, RequestContext(request,
e2ff0c70014d Add a view to manage payments.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 255
diff changeset
   371
        {'params': {'scope': scope},
e2ff0c70014d Add a view to manage payments.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 255
diff changeset
   372
         'registrants': registrants,
e2ff0c70014d Add a view to manage payments.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 255
diff changeset
   373
         }))