def requirements_view(request): profile = request.user.profile if profile.position == Profile.CANDIDATE: term = Settings.objects.term() candidate = profile.candidate if request.method == "POST": form = CandidateForm(request.POST, request.FILES, instance=candidate) if form.is_valid(): form.save() update_professor_interview_and_resume(candidate) else: form = CandidateForm() return render_profile_page(request, 'candidate_requirements.html', {'term': term, 'form': form}) else: term = Settings.objects.signup_term() if request.method == "POST": member = ActiveMember(profile=profile, term=term) member.peer_teaching = PeerTeaching.objects.create(profile=profile, term=Settings.objects.term()) member_form = MemberForm(request.POST, instance=member) tutoring_preferences_form = TutoringPreferencesForm(request.POST) valid_forms = [form.is_valid() for form in (member_form, tutoring_preferences_form)] if all(valid_forms): if member_form.cleaned_data['requirement_choice'] == ActiveMember.TUTORING: member.peer_teaching.requirement_choice = PeerTeaching.TUTORING member.peer_teaching.tutoring = Tutoring.with_weeks(profile=profile, term=term) tutoring_preferences_form = TutoringPreferencesForm(request.POST, instance=member.peer_teaching.tutoring) tutoring_preferences_form.save() member.peer_teaching.save() member_form.save() member_form = None tutoring_preferences_form = None else: try: member = ActiveMember.objects.get(profile=profile, term=term) member_form = None tutoring_preferences_form = None except ActiveMember.DoesNotExist: member = None member_form = MemberForm() tutoring_preferences_form = TutoringPreferencesForm() return render_profile_page( request, 'member_requirements.html', { 'term': term, 'requirement': member.get_requirement_choice_display() if member else '', 'member_form': member_form, 'tutoring_preferences_form': tutoring_preferences_form })
def requirements_view(request): profile = request.user.profile if profile.position == Profile.CANDIDATE: term = Settings.objects.term() candidate = profile.candidate if request.method == "POST": form = CandidateForm(request.POST, request.FILES, instance=candidate) if form.is_valid(): form.save() update_professor_interview_and_resume(candidate) else: form = CandidateForm() return render_profile_page(request, 'candidate_requirements.html', { 'term': term, 'form': form }) else: term = Settings.objects.signup_term() if request.method == "POST": member = ActiveMember(profile=profile, term=term) member.peer_teaching = PeerTeaching.objects.create( profile=profile, term=Settings.objects.term()) member_form = MemberForm(request.POST, instance=member) tutoring_preferences_form = TutoringPreferencesForm(request.POST) valid_forms = [ form.is_valid() for form in (member_form, tutoring_preferences_form) ] if all(valid_forms): if member_form.cleaned_data[ 'requirement_choice'] == ActiveMember.TUTORING: member.peer_teaching.requirement_choice = PeerTeaching.TUTORING member.peer_teaching.tutoring = Tutoring.with_weeks( profile=profile, term=term) tutoring_preferences_form = TutoringPreferencesForm( request.POST, instance=member.peer_teaching.tutoring) tutoring_preferences_form.save() member.peer_teaching.save() member_form.save() member_form = None tutoring_preferences_form = None else: try: member = ActiveMember.objects.get(profile=profile, term=term) member_form = None tutoring_preferences_form = None except ActiveMember.DoesNotExist: member = None member_form = MemberForm() tutoring_preferences_form = TutoringPreferencesForm() return render_profile_page( request, 'member_requirements.html', { 'term': term, 'requirement': member.get_requirement_choice_display() if member else '', 'member_form': member_form, 'tutoring_preferences_form': tutoring_preferences_form })
def edit(request): user = request.user profile = user.profile first_time = hasattr( profile, 'candidate') and profile.candidate.peer_teaching is None if request.method != "POST": personal_dict = model_to_dict(user) personal_dict['middle_name'] = profile.middle_name user_personal_form = UserPersonalForm(instance=user, initial=personal_dict) profile_dict = model_to_dict(profile) if profile.graduation_term is not None: profile_dict.update({ 'graduation_quarter': profile.graduation_term.quarter, 'graduation_year': profile.graduation_term.year }) if not first_time: profile_form = ProfileForm(initial=profile_dict) else: profile_form = FirstProfileForm(initial=profile_dict) tutoring_form = TutoringPreferencesForm() shirt_form = ShirtForm() peer_teaching_form = PeerTeachingForm() else: user_personal_form = UserPersonalForm(request.POST, instance=user) if not first_time: profile_form = ProfileForm(request.POST, request.FILES, instance=profile) valid_forms = [ form.is_valid() for form in (user_personal_form, profile_form) ] else: profile_form = FirstProfileForm(request.POST, instance=profile) tutoring_form = TutoringPreferencesForm(request.POST) shirt_form = ShirtForm(request.POST, instance=profile.candidate) peer_teaching_form = PeerTeachingForm(request.POST) valid_forms = [ form.is_valid() for form in (user_personal_form, profile_form, tutoring_form, shirt_form, peer_teaching_form) ] if all(valid_forms): term, created = Term.objects.get_or_create( quarter=profile_form.cleaned_data['graduation_quarter'], year=profile_form.cleaned_data['graduation_year']) user_personal_form.save() profile.middle_name = user_personal_form.cleaned_data[ 'middle_name'] profile.graduation_term = term profile_form.save() if not first_time: if profile.position == Profile.CANDIDATE: update_professor_interview_and_resume(profile.candidate) return redirect(profile_view) else: candidate = profile.candidate candidate.peer_teaching = PeerTeaching.objects.create( profile=profile, term=Settings.objects.term()) candidate.peer_teaching.tutoring = Tutoring.with_weeks( profile=profile, term=Settings.objects.term()) tutoring_form = TutoringPreferencesForm( request.POST, instance=candidate.peer_teaching.tutoring) tutoring_form.save() # If the candidate did NOT select tutoring, then we will set the attributes # of their tutoring object to hidden/frozen so that their object does not # interfere with anything else. if peer_teaching_form.cleaned_data[ 'requirement_choice'] != PeerTeaching.TUTORING: candidate.peer_teaching.tutoring.frozen = True candidate.peer_teaching.tutoring.hidden = True candidate.peer_teaching.tutoring.save() peer_teaching_form = PeerTeachingForm( request.POST, instance=candidate.peer_teaching) peer_teaching_form.save() shirt_form.save() return redirect(add) if not first_time: return render_profile_page(request, 'edit.html', { 'user_personal_form': user_personal_form, 'profile_form': profile_form }) else: return render_profile_page( request, 'first_edit.html', { 'user_personal_form': user_personal_form, 'profile_form': profile_form, 'tutoring_form': tutoring_form, 'shirt_form': shirt_form, 'peer_teaching_form': peer_teaching_form })
def edit(request): user = request.user profile = user.profile first_time = hasattr(profile, 'candidate') and profile.candidate.peer_teaching is None if request.method != "POST": personal_dict = model_to_dict(user) personal_dict['middle_name'] = profile.middle_name user_personal_form = UserPersonalForm(instance=user, initial=personal_dict) profile_dict = model_to_dict(profile) if profile.graduation_term is not None: profile_dict.update({ 'graduation_quarter': profile.graduation_term.quarter, 'graduation_year': profile.graduation_term.year }) if not first_time: profile_form = ProfileForm(initial=profile_dict) else: profile_form = FirstProfileForm(initial=profile_dict) tutoring_form = TutoringPreferencesForm() shirt_form = ShirtForm() peer_teaching_form = PeerTeachingForm() else: user_personal_form = UserPersonalForm(request.POST, instance=user) if not first_time: profile_form = ProfileForm(request.POST, request.FILES, instance=profile) valid_forms = [form.is_valid() for form in (user_personal_form, profile_form)] else: profile_form = FirstProfileForm(request.POST, instance=profile) tutoring_form = TutoringPreferencesForm(request.POST) shirt_form = ShirtForm(request.POST, instance=profile.candidate) peer_teaching_form = PeerTeachingForm(request.POST) valid_forms = [form.is_valid() for form in (user_personal_form, profile_form, tutoring_form, shirt_form, peer_teaching_form)] if all(valid_forms): term, created = Term.objects.get_or_create(quarter=profile_form.cleaned_data['graduation_quarter'], year=profile_form.cleaned_data['graduation_year']) user_personal_form.save() profile.middle_name = user_personal_form.cleaned_data['middle_name'] profile.graduation_term = term profile_form.save() if not first_time: if profile.position == Profile.CANDIDATE: update_professor_interview_and_resume(profile.candidate) return redirect(profile_view) else: candidate = profile.candidate candidate.peer_teaching = PeerTeaching.objects.create(profile=profile, term=Settings.objects.term()) candidate.peer_teaching.tutoring = Tutoring.with_weeks(profile=profile, term=Settings.objects.term()) tutoring_form = TutoringPreferencesForm(request.POST, instance=candidate.peer_teaching.tutoring) tutoring_form.save() # If the candidate did NOT select tutoring, then we will set the attributes # of their tutoring object to hidden/frozen so that their object does not # interfere with anything else. if peer_teaching_form.cleaned_data['requirement_choice'] != PeerTeaching.TUTORING: candidate.peer_teaching.tutoring.frozen = True candidate.peer_teaching.tutoring.hidden = True candidate.peer_teaching.tutoring.save() peer_teaching_form = PeerTeachingForm(request.POST, instance=candidate.peer_teaching) peer_teaching_form.save() shirt_form.save() return redirect(add) if not first_time: return render_profile_page(request, 'edit.html', {'user_personal_form': user_personal_form, 'profile_form': profile_form}) else: return render_profile_page(request, 'first_edit.html', {'user_personal_form': user_personal_form, 'profile_form': profile_form, 'tutoring_form': tutoring_form, 'shirt_form': shirt_form, 'peer_teaching_form' : peer_teaching_form})