Changeset 70ce03a


Ignore:
Timestamp:
Jan 7, 2010, 4:17:00 AM (16 years ago)
Author:
Alex Dehnert <adehnert@…>
Branches:
master, client
Children:
cafab4c
Parents:
42d0bf6
git-author:
Alex Dehnert <adehnert@…> (01/07/10 04:17:00)
git-committer:
Alex Dehnert <adehnert@…> (01/07/10 04:17:00)
Message:

Area & term selection

Location:
treasury
Files:
1 added
2 edited

Legend:

Unmodified
Added
Removed
  • treasury/vouchers/urls.py

    r6b8d891 r70ce03a  
    33
    44urlpatterns = patterns('',
     5    (r'reimbursement/', 'vouchers.views.select_request_basics', ),
    56    (r'submit/(?P<term>[\d\w-]+)/(?P<committee>[\d\w-]+)/', 'vouchers.views.submit_request', ),
    67    (r'review/(?P<object_id>\d+)/', 'vouchers.views.review_request', ),
  • treasury/vouchers/views.py

    r6b8d891 r70ce03a  
    66from django.shortcuts import render_to_response, get_object_or_404
    77from django.http import Http404, HttpResponseRedirect
     8from django.forms import Form
    89from django.forms import ModelForm
    910from django.forms import ModelChoiceField
     
    2324        )
    2425
    25 class BudgetAreaField(ModelChoiceField):
     26class CommitteesField(ModelChoiceField):
     27    def __init__(self, *args, **kargs):
     28        base_area = BudgetArea.get_by_path(['Accounts', 'Assets', 'Budget', ])
     29        self.strip_levels = base_area.depth
     30        areas = (base_area.get_descendants()
     31            .filter(depth__lte=base_area.depth+2)
     32            .exclude(name='Holding')
     33        )
     34        ModelChoiceField.__init__(self, queryset=areas,
     35            help_text='Select the appropriate committe or other budget area',
     36            *args, **kargs)
     37
     38    def label_from_instance(self, obj,):
     39        return obj.indented_name(strip_levels=self.strip_levels)
     40
     41class SelectRequestBasicsForm(Form):
     42    area = CommitteesField()
     43    term = ModelChoiceField(queryset = BudgetTerm.objects.all())
     44
     45@user_passes_test(lambda u: u.is_authenticated())
     46def select_request_basics(http_request, ):
     47    if http_request.method == 'POST': # If the form has been submitted...
     48        form = SelectRequestBasicsForm(http_request.POST) # A form bound to the POST data
     49        if form.is_valid(): # All validation rules pass
     50            term = form.cleaned_data['term'].slug
     51            area = form.cleaned_data['area'].id
     52            return HttpResponseRedirect(reverse(submit_request, args=[term, area],)) # Redirect after POST
     53    else:
     54        form = SelectRequestBasicsForm() # An unbound form
     55
     56    context = {
     57        'form':form,
     58    }
     59    return render_to_response('vouchers/select.html', context)
     60
     61class CommitteeBudgetAreasField(ModelChoiceField):
    2662    def __init__(self, base_area, *args, **kargs):
    2763        self.strip_levels = base_area.depth
     
    4581    if http_request.method == 'POST': # If the form has been submitted...
    4682        form = RequestForm(http_request.POST, instance=new_request) # A form bound to the POST data
    47         form.fields['budget_area'] = BudgetAreaField(comm_obj)
     83        form.fields['budget_area'] = CommitteeBudgetAreasField(comm_obj)
    4884        if form.is_valid(): # All validation rules pass
    4985            form.save()
     
    5187    else:
    5288        form = RequestForm(instance=new_request) # An unbound form
    53         form.fields['budget_area'] = BudgetAreaField(comm_obj)
     89        form.fields['budget_area'] = CommitteeBudgetAreasField(comm_obj)
    5490
    5591    context = {
Note: See TracChangeset for help on using the changeset viewer.