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))
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))