def edit_volunteer(request, volunteer_id, create_new=False): # If called from the "add" url, then create_new will be True. If called # from the edit url then it'll be False # Depending on which way this method was called, either create a totally # new volunteer object with default values (add) or load the volunteer # object with the given volunteer_id from the database: if not create_new: # Called from "edit" url volunteer = get_object_or_404(Volunteer, id=volunteer_id) member = volunteer.member else: # Called from "add" url volunteer = Volunteer() member = Member() volunteer.member = Member() # Now, if the view was loaded with "GET" then display the edit form, and # if it was called with POST then read the updated volunteer data from the # form data and update and save the volunteer object: if request.method == 'POST': # Three forms, one for each set of data vol_form = VolunteerForm( request.POST, request.FILES, prefix="vol", instance=volunteer ) mem_form = MemberFormWithoutNotes( request.POST, prefix="mem", instance=member ) if vol_form.is_valid() and mem_form.is_valid(): logger.info(u"Saving changes to volunteer '{0}' (id: {1})".format(volunteer.member.name, str(volunteer.pk))) mem_form.save() volunteer.member = member vol_form.save() messages.add_message( request, messages.SUCCESS, u"{0} volunteer '{1}'".format( u"Created" if create_new else u"Updated", member.name ) ) # Go to the volunteer list view: return HttpResponseRedirect(reverse("view-volunteer-list")) else: vol_form = VolunteerForm(prefix="vol", instance=volunteer) mem_form = MemberFormWithoutNotes(prefix="mem", instance=volunteer.member) context = { 'pagetitle': 'Add Volunteer' if create_new else 'Edit Volunteer', 'default_mugshot': settings.DEFAULT_MUGSHOT, 'volunteer': volunteer, 'vol_form': vol_form, 'mem_form': mem_form, } return render(request, 'form_volunteer.html', context)
def edit_volunteer(request, volunteer_id, create_new=False): # If called from the "add" url, then create_new will be True. If called # from the edit url then it'll be False # Depending on which way this method was called, either create a totally # new volunteer object with default values (add) or load the volunteer # object with the given volunteer_id from the database: if not create_new: # Called from "edit" url volunteer = get_object_or_404(Volunteer, id=volunteer_id) member = volunteer.member new_training_record = TrainingRecord(volunteer=volunteer) else: # Called from "add" url volunteer = Volunteer() member = Member() volunteer.member = Member() new_training_record = None # Now, if the view was loaded with "GET" then display the edit form, and # if it was called with POST then read the updated volunteer data from the # form data and update and save the volunteer object: if request.method == 'POST': # Three forms, one for each set of data vol_form = VolunteerForm( request.POST, request.FILES, instance=volunteer ) mem_form = MemberFormWithoutNotes( request.POST, instance=member ) if vol_form.is_valid() and mem_form.is_valid(): member = mem_form.save(commit=False) member.gdpr_opt_in = timezone.now() member.save() volunteer.member = member vol_form.save() logger.info(u"Saving changes to volunteer '{0}' (id: {1})".format( volunteer.member.name, str(volunteer.pk))) messages.add_message( request, messages.SUCCESS, u"{0} volunteer '{1}'".format( u"Created" if create_new else u"Updated", member.name ) ) if create_new: # Email admin admin_body = ( u"I'm delighted to inform you that %s has just added " u"new volunteer\n\n" u"%s <%s>\n\n" u"to the toolkit.\n\n" u"Please add them to the volunteers mailing list " u"at your earliest convenience." % ( request.user.last_name, volunteer.member.name, volunteer.member.email) ) send_mail( ('[%s] New volunteer %s' % (settings.VENUE['longname'], volunteer.member.name)), admin_body, settings.VENUE['mailout_from_address'], settings.VENUE['vols_admin_address'], fail_silently=False, ) # Go to the volunteer list view: return HttpResponseRedirect(reverse("view-volunteer-summary")) else: vol_form = VolunteerForm(instance=volunteer) mem_form = MemberFormWithoutNotes(instance=volunteer.member) if new_training_record: training_record_form = TrainingRecordForm( prefix="training", instance=new_training_record) else: training_record_form = None context = { 'pagetitle': 'Add Volunteer' if create_new else 'Edit Volunteer', 'default_mugshot': settings.DEFAULT_MUGSHOT, 'volunteer': volunteer, 'vol_form': vol_form, 'mem_form': mem_form, 'training_record_form': training_record_form, 'dawn_of_toolkit': settings.DAWN_OF_TOOLKIT, } return render(request, 'form_volunteer.html', context)
def edit_volunteer(request, volunteer_id, create_new=False): # If called from the "add" url, then create_new will be True. If called # from the edit url then it'll be False # Depending on which way this method was called, either create a totally # new volunteer object with default values (add) or load the volunteer # object with the given volunteer_id from the database: if not create_new: # Called from "edit" url volunteer = get_object_or_404(Volunteer, id=volunteer_id) member = volunteer.member new_training_record = TrainingRecord(volunteer=volunteer) else: # Called from "add" url volunteer = Volunteer() member = Member() volunteer.member = Member() new_training_record = None # Now, if the view was loaded with "GET" then display the edit form, and # if it was called with POST then read the updated volunteer data from the # form data and update and save the volunteer object: if request.method == 'POST': # Three forms, one for each set of data vol_form = VolunteerForm(request.POST, request.FILES, instance=volunteer) mem_form = MemberFormWithoutNotes(request.POST, instance=member) if vol_form.is_valid() and mem_form.is_valid(): logger.info(u"Saving changes to volunteer '{0}' (id: {1})".format( volunteer.member.name, str(volunteer.pk))) member = mem_form.save(commit=False) member.gdpr_opt_in = timezone.now() member.save() volunteer.member = member vol_form.save() messages.add_message( request, messages.SUCCESS, u"{0} volunteer '{1}'".format( u"Created" if create_new else u"Updated", member.name)) # Go to the volunteer list view: return HttpResponseRedirect(reverse("view-volunteer-list")) else: vol_form = VolunteerForm(instance=volunteer) mem_form = MemberFormWithoutNotes(instance=volunteer.member) if new_training_record: training_record_form = TrainingRecordForm(prefix="training", instance=new_training_record) else: training_record_form = None context = { 'pagetitle': 'Add Volunteer' if create_new else 'Edit Volunteer', 'default_mugshot': settings.DEFAULT_MUGSHOT, 'volunteer': volunteer, 'vol_form': vol_form, 'mem_form': mem_form, 'training_record_form': training_record_form, 'dawn_of_toolkit': settings.DAWN_OF_TOOLKIT, } return render(request, 'form_volunteer.html', context)