Changeset 90afb00 for asadb/forms


Ignore:
Timestamp:
May 13, 2010, 5:48:00 AM (16 years ago)
Author:
Alex Dehnert <adehnert@…>
Branches:
master, fysm-4-1, iframe, space-access, stable, stage, test-hooks
Children:
e8ff26d
Parents:
de11699
git-author:
Alex Dehnert <adehnert@…> (05/13/10 05:48:00)
git-committer:
Alex Dehnert <adehnert@…> (05/13/10 05:48:00)
Message:

Add support for submitting FYSM entries

File:
1 edited

Legend:

Unmodified
Added
Removed
  • asadb/forms/views.py

    r189506e r90afb00  
    11import forms.models
     2import groups.models
     3import settings
     4
    25from django.views.generic import list_detail
    36from django.shortcuts import render_to_response, get_object_or_404
     7from django.template import RequestContext
     8from django.http import Http404, HttpResponseRedirect
     9from django.core.urlresolvers import reverse
     10from django.forms import Form
     11from django.forms import ModelForm
     12from django.forms import ModelChoiceField
     13from django.core.mail import send_mail, mail_admins
     14from django.template import Context, Template
     15from django.template.loader import get_template
    416
    517import datetime
     18
     19#################
     20# GENERIC VIEWS #
     21#################
     22
     23class SelectGroupForm(Form):
     24    group = ModelChoiceField(queryset=groups.models.Group.objects.all())
     25
     26def select_group(request, url_name_after, pagename='homepage', ):
     27    if request.method == 'POST': # If the form has been submitted...
     28        form = SelectGroupForm(request.POST) # A form bound to the POST data
     29        if form.is_valid(): # All validation rules pass
     30            group = form.cleaned_data['group'].id
     31            return HttpResponseRedirect(reverse(url_name_after, args=[group],)) # Redirect after POST
     32    else:
     33        form = SelectGroupForm() # An unbound form
     34
     35    context = {
     36        'form':form,
     37        'pagename':'request_reimbursement',
     38    }
     39    return render_to_response('forms/select.html', context, context_instance=RequestContext(request), )
     40
     41#############################
     42# FIRST-YEAR SUMMER MAILING #
     43#############################
    644
    745def fysm_by_years(request, year, category, ):
     
    1654        request,
    1755        queryset=queryset,
    18         template_name="forms/fysm_listing.html",
     56        template_name="fysm/fysm_listing.html",
    1957        template_object_name="fysm",
    2058        extra_context={
     
    2563        }
    2664    )
     65
     66class FYSMRequestForm(ModelForm):
     67    class Meta:
     68        model = forms.models.FYSM
     69        fields = (
     70            'display_name',
     71            'website',
     72            'join_url',
     73            'contact_email',
     74            'description',
     75            'logo',
     76            'tags',
     77        )
     78
     79def fysm_manage(request, group, ):
     80    year = datetime.date.today().year
     81    group_obj = get_object_or_404(groups.models.Group, pk=group)
     82
     83    initial = {}
     84    try:
     85        fysm_obj = forms.models.FYSM.objects.get(group=group_obj, year=year, )
     86        print "Successfully found", fysm_obj.__dict__
     87    except forms.models.FYSM.DoesNotExist:
     88        fysm_obj = forms.models.FYSM()
     89        fysm_obj.group = group_obj
     90        fysm_obj.year = year
     91        initial['display_name'] = group_obj.name
     92        initial['year'] = year
     93        initial['website'] = group_obj.website_url
     94        initial['join_url'] = group_obj.website_url
     95        initial['contact_email'] = group_obj.officer_email
     96
     97    if request.method == 'POST': # If the form has been submitted...
     98        form = FYSMRequestForm(request.POST, request.FILES, instance=fysm_obj, ) # A form bound to the POST data
     99
     100        if form.is_valid(): # All validation rules pass
     101            request_obj = form.save()
     102
     103            # Send email
     104            tmpl = get_template('fysm/update_email.txt')
     105            ctx = Context({
     106                'group': group_obj,
     107                'fysm': fysm_obj,
     108                'submitter': request.user,
     109                'request': request,
     110                'sender': "ASA FYSM team",
     111            })
     112            body = tmpl.render(ctx)
     113            recipients = ['asa-fysm@mit.edu', group_obj.officer_email, ]
     114            send_mail(
     115                'FYSM entry for "%s" updated by "%s"' % (
     116                    group_obj.name,
     117                    request.user,
     118                ),
     119                body,
     120                'asa-fysm@mit.edu',
     121                recipients,
     122            )
     123            return HttpResponseRedirect(reverse('fysm-thanks', args=[fysm_obj.pk],)) # Redirect after POST
     124
     125    else:
     126        form = FYSMRequestForm(instance=fysm_obj, initial=initial, ) # An unbound form
     127
     128    context = {
     129        'group':group_obj,
     130        'fysm':fysm_obj,
     131        'form':form,
     132        'pagename':'fysm',
     133    }
     134    return render_to_response('fysm/submit.html', context, context_instance=RequestContext(request), )
     135
     136
     137def fysm_thanks(request, fysm, ):
     138    year = datetime.date.today().year
     139    fysm_obj = get_object_or_404(forms.models.FYSM, pk=fysm)
     140
     141    context = {
     142        'group':fysm_obj.group,
     143        'fysm':fysm_obj,
     144        'pagename':'fysm',
     145    }
     146    return render_to_response('fysm/thanks.html', context, context_instance=RequestContext(request), )
Note: See TracChangeset for help on using the changeset viewer.