Esempio n. 1
0
def eval(request, event_id):
    my_template_data = dict()
    
    #TODO: put in authentication stuff

    #get champ_info for this event
    champ_info = ChampInfo.objects.get(event=event_id)

    #find which program areas this event has
    program_areas = ProgramArea.objects.filter(programlink__champ_info=champ_info)
    formgroup = FormGroup()

    #add all forms for selected program areas    
    for i,pa in enumerate(program_areas):
        
        form = Empty()
       
        form.groupname = pa.name
        form.program_area = pa
        field_group = pa.eval_model
        form.subform = FieldGroupForm(request.POST or None, field_group=field_group, owner = champ_info.value_owner)
        formgroup.add_form(form)
    
    my_template_data["formgroup"] = formgroup.forms
    
    
    #validate fields
    if request.POST:#formgroup.is_valid(): # check if fields validated

        valid = False
        #TODO... do not trust user entered data... should verify correctness here
        
        #loop thru formgroup and save stuff
        for form in formgroup.forms:
            
            if form.subform.is_valid():
                #process the subform for this program group from
                form.subform.save()
            else:
                valid = False

#        return HttpResponseRedirect(domain + reverse(events) ) # Redirect after POST
        
        if valid:
            return HttpResponseRedirect(domain ) # Redirect after POST

    return render_to_response('champ2/event.html', my_template_data, context_instance=RequestContext(request))
Esempio n. 2
0
def base_group_goals(request, group_slug):
    my_template_data = dict()
    
    network = BaseGroup.objects.get(slug=group_slug)
    
    #get current matching date range
    date_range = DateRange.objects.filter(start__lte=datetime.date.today(), end__gte=datetime.date.today())[0] #TODO: can we guarantee non overlapping? 
    #TODO: if the date range fails... should email someone saying... put this in!
    
    values_owner = None
    
    #get Goal object for this network or create it if it does not exist 
    try:
        goal = Goal.objects.get(date_range=date_range, base_group=network)
        values_owner = goal.values_owner
    except(ObjectDoesNotExist):
        goal = Goal()
        goal.date_range = date_range
        goal.base_group = network
        values_owner = AnyValueOwner()
        values_owner.save()
        goal.values_owner = values_owner 
        goal.save()
    
    #show goals for all the goal forms


    #allow them to select which program types this event belongs to
    program_areas = ProgramArea.objects.all()
    formgroup = FormGroup()
    
    #add all forms for selected program areas    
    for i,pa in enumerate(program_areas):
        form = Empty()
        form.groupname = pa.name
        field_group = pa.goal_model #the model to render
        form.subform =  FieldGroupForm(request.POST or None, field_group=field_group, owner = values_owner, calc_base_group=network, calc_parent_class=ProgramArea)
        form.plan =     FieldGroupForm(request.POST or None, field_group=field_group, owner = values_owner, calc_base_group=network, calc_parent_class=ProgramArea, calc_mode=FieldGroupForm.CALC_MODE_PLAN, extra_prefix="planz") 
        form.eval =     FieldGroupForm(request.POST or None, field_group=field_group, owner = values_owner, calc_base_group=network, calc_parent_class=ProgramArea, calc_mode=FieldGroupForm.CALC_MODE_EVAL, extra_prefix="evals")
        
        formgroup.add_form(form)
    
    my_template_data["formgroup"] = formgroup.forms
    
    #validate fields
    if request.POST:#formgroup.is_valid(): # check if fields validated

        valid = False
        #TODO... do not trust user entered data... should verify correctness here
        
        #loop thru formgroup and save stuff
        for form in formgroup.forms:

            if form.subform.is_valid():
                #process the subform for this program group from
                form.subform.save()

#        return HttpResponseRedirect(domain + reverse(events) ) # Redirect after POST
        
        if valid:
            return HttpResponseRedirect(domain ) # Redirect after POST

    return render_to_response('champ2/goal.html', my_template_data, context_instance=RequestContext(request))