Esempio n. 1
0
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)
Esempio n. 2
0
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)
Esempio n. 3
0
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)