Пример #1
0
def cancel(request, shift_id, volunteer_id):

    if shift_id and volunteer_id:

        user = request.user
        admin = None
        volunteer = None

        try:
            admin = user.administrator
        except ObjectDoesNotExist:
            pass
        try:
            volunteer = user.volunteer
        except ObjectDoesNotExist:
            pass

        # check that either an admin or volunteer is logged in
        if not admin and not volunteer:
            return render(request, 'vms/no_volunteer_rights.html', status=403)

        # if a volunteer is logged in, verify that they are canceling their own shift
        if volunteer:
            if (int(volunteer.id) != int(volunteer_id)):
                return render(request,
                              'vms/no_volunteer_rights.html',
                              status=403)

        if request.method == 'POST':
            try:
                cancel_shift_registration(volunteer_id, shift_id)
                if admin:
                    return HttpResponseRedirect(
                        reverse('shift:manage_volunteer_shifts',
                                args=(volunteer_id, )))
                elif volunteer:
                    return HttpResponseRedirect(
                        reverse('shift:view_volunteer_shifts',
                                args=(volunteer_id, )))
                else:
                    raise Http404
            except:
                raise Http404
        else:
            return render(request, 'shift/cancel_shift.html', {
                'shift_id': shift_id,
                'volunteer_id': volunteer_id
            })
    else:
        raise Http404
Пример #2
0
    def test_cancel_shift_registration(self):
        """ Uses shifts s1, s2, s3 and volunteers v1,v2 """

        # test cases when try to cancel when they aren't signed up for a shift
        with self.assertRaises(ObjectDoesNotExist):
            cancel_shift_registration(self.v1.id, self.s1.id)

        with self.assertRaises(ObjectDoesNotExist):
            cancel_shift_registration(self.v1.id, self.s2.id)

        with self.assertRaises(ObjectDoesNotExist):
            cancel_shift_registration(self.v2.id, self.s1.id)

        # register volunteers to shifts
        register(self.v1.id, self.s1.id)
        register(self.v2.id, self.s1.id)
        register(self.v2.id, self.s2.id)

        # test typical cases
        cancel_shift_registration(self.v1.id, self.s1.id)

        with self.assertRaises(ObjectDoesNotExist):
            cancel_shift_registration(self.v2.id, self.s1.id)

        cancel_shift_registration(self.v2.id, self.s2.id)
Пример #3
0
def cancel(request, shift_id, volunteer_id):

    if shift_id and volunteer_id:

        user = request.user
        admin = None
        volunteer = None

        try:
            admin = user.administrator
        except ObjectDoesNotExist:
            pass
        try:
            volunteer = user.volunteer
        except ObjectDoesNotExist:
            pass

        # check that either an admin or volunteer is logged in
        if not admin and not volunteer:
            return render(request, 'vms/no_volunteer_rights.html', status=403)

        # if a volunteer is logged in, verify that they are canceling their own shift
        if volunteer:
            if (int(volunteer.id) != int(volunteer_id)):
                return render(
                    request, 'vms/no_volunteer_rights.html', status=403)

        if request.method == 'POST':
            try:
                cancel_shift_registration(volunteer_id, shift_id)
                if admin:
                    vol_email = Volunteer.objects.get(pk=volunteer_id).email
                    shift_object = get_shift_by_id(shift_id)
                    job_object = Job.objects.get(shift=shift_object)
                    event_object = Event.objects.get(job=job_object)
                    message = render_to_string(
                        'shift/cancel_email.txt',
                        {
                            'admin_first_name': admin.first_name,
                            'admin_last_name': admin.last_name,
                            'shift_start_time': shift_object.start_time,
                            'shift_end_time': shift_object.end_time,
                            'admin_email': admin.email,
                            'job_name': job_object.name,
                            'event_name': event_object.name,
                            'shift_date': shift_object.date,
                            })
                    try:
                        send_mail("Shift Cancelled", message,
                              "*****@*****.**", [vol_email])
                    except:
                        raise Exception("There was an error in sending email.")
                    return HttpResponseRedirect(
                        reverse(
                            'shift:manage_volunteer_shifts',
                            args=(volunteer_id, )))
                elif volunteer:
                    return HttpResponseRedirect(
                        reverse(
                            'shift:view_volunteer_shifts',
                            args=(volunteer_id, )))
                else:
                    raise Http404
            except:
                raise Http404
        else:
            return render(request, 'shift/cancel_shift.html', {
                'shift_id': shift_id,
                'volunteer_id': volunteer_id
            })
    else:
        raise Http404
Пример #4
0
def cancel(request, shift_id, volunteer_id):

    if shift_id and volunteer_id:

        user = request.user
        admin = None
        volunteer = None

        try:
            admin = user.administrator
        except ObjectDoesNotExist:
            pass
        try:
            volunteer = user.volunteer
        except ObjectDoesNotExist:
            pass

        # check that either an admin or volunteer is logged in
        if not admin and not volunteer:
            return render(request, 'vms/no_volunteer_rights.html', status=403)

        # if a volunteer is logged in,
        # verify that they are canceling their own shift
        if volunteer:
            if int(volunteer.id) != int(volunteer_id):
                return render(request,
                              'vms/no_volunteer_rights.html',
                              status=403)

        if request.method == 'POST':
            try:
                cancel_shift_registration(volunteer_id, shift_id)
                if admin:
                    vol_email = Volunteer.objects.get(pk=volunteer_id).email
                    shift_object = get_shift_by_id(shift_id)
                    job_object = Job.objects.get(shift=shift_object)
                    event_object = Event.objects.get(job=job_object)
                    message = render_to_string(
                        'shift/cancel_email.txt', {
                            'admin_first_name': admin.first_name,
                            'admin_last_name': admin.last_name,
                            'shift_start_time': shift_object.start_time,
                            'shift_end_time': shift_object.end_time,
                            'admin_email': admin.email,
                            'job_name': job_object.name,
                            'event_name': event_object.name,
                            'shift_date': shift_object.date,
                        })
                    try:
                        send_mail("Shift Cancelled", message,
                                  "*****@*****.**", [vol_email])
                    except Exception:
                        raise Exception("There was an error in sending email.")
                    return HttpResponseRedirect(
                        reverse('shift:manage_volunteer_shifts',
                                args=(volunteer_id, )))
                elif volunteer:
                    return HttpResponseRedirect(
                        reverse('shift:view_volunteer_shifts',
                                args=(volunteer_id, )))
                else:
                    raise Http404
            except Exception:
                raise Http404
        else:
            return render(request, 'shift/cancel_shift.html', {
                'shift_id': shift_id,
                'volunteer_id': volunteer_id
            })
    else:
        raise Http404
Пример #5
0
    def test_cancel_shift_registration(self):
        """ Uses shifts s1, s2, s3 and volunteers v1,v2 """

        # test cases when try to cancel when they aren't signed up for a shift
        with self.assertRaises(ObjectDoesNotExist):
            cancel_shift_registration(self.v1.id, self.s1.id)

        with self.assertRaises(ObjectDoesNotExist):
            cancel_shift_registration(self.v1.id, self.s2.id)

        with self.assertRaises(ObjectDoesNotExist):
            cancel_shift_registration(self.v2.id, self.s1.id)

        # register volunteers to shifts
        register(self.v1.id, self.s1.id)
        register(self.v2.id, self.s1.id)
        register(self.v2.id, self.s2.id)

        # test typical cases
        cancel_shift_registration(self.v1.id, self.s1.id)

        with self.assertRaises(ObjectDoesNotExist):
            cancel_shift_registration(self.v2.id, self.s1.id)

        cancel_shift_registration(self.v2.id, self.s2.id)
Пример #6
0
    def test_cancel_shift_registration(self):

        u1 = User.objects.create_user("Yoshi")
        u2 = User.objects.create_user("John")

        v1 = Volunteer(
            first_name="Yoshi",
            last_name="Turtle",
            address="Mario Land",
            city="Nintendo Land",
            state="Nintendo State",
            country="Nintendo Nation",
            phone_number="2374983247",
            email="*****@*****.**",
            user=u1,
        )

        v2 = Volunteer(
            first_name="John",
            last_name="Doe",
            address="7 Alpine Street",
            city="Maplegrove",
            state="Wyoming",
            country="USA",
            phone_number="23454545",
            email="*****@*****.**",
            user=u2,
        )

        v1.save()
        v2.save()

        e1 = Event(name="Open Source Event", start_date="2012-10-22", end_date="2012-10-23")

        e1.save()

        j1 = Job(
            name="Software Developer",
            start_date="2012-10-22",
            end_date="2012-10-23",
            description="A software job",
            event=e1,
        )

        j2 = Job(
            name="Systems Administrator",
            start_date="2012-9-1",
            end_date="2012-10-26",
            description="A systems administrator job",
            event=e1,
        )

        j1.save()
        j2.save()

        s1 = Shift(date="2012-10-23", start_time="9:00", end_time="3:00", max_volunteers=1, job=j1)

        s2 = Shift(date="2012-10-23", start_time="10:00", end_time="4:00", max_volunteers=2, job=j1)

        s3 = Shift(date="2012-10-23", start_time="12:00", end_time="6:00", max_volunteers=4, job=j2)

        s1.save()
        s2.save()
        s3.save()

        # test cases when try to cancel when they aren't signed up for a shift
        with self.assertRaises(ObjectDoesNotExist):
            cancel_shift_registration(v1.id, s1.id)

        with self.assertRaises(ObjectDoesNotExist):
            cancel_shift_registration(v1.id, s1.id)

        with self.assertRaises(ObjectDoesNotExist):
            cancel_shift_registration(v1.id, s2.id)

        with self.assertRaises(ObjectDoesNotExist):
            cancel_shift_registration(v1.id, s3.id)

        with self.assertRaises(ObjectDoesNotExist):
            cancel_shift_registration(v2.id, s1.id)

        with self.assertRaises(ObjectDoesNotExist):
            cancel_shift_registration(v2.id, s2.id)

        with self.assertRaises(ObjectDoesNotExist):
            cancel_shift_registration(v2.id, s3.id)

        # register volunteers to shifts
        register(v1.id, s1.id)
        register(v1.id, s2.id)
        register(v1.id, s3.id)
        register(v2.id, s1.id)
        register(v2.id, s2.id)
        register(v2.id, s3.id)

        # test typical cases
        cancel_shift_registration(v1.id, s1.id)
        cancel_shift_registration(v1.id, s2.id)
        cancel_shift_registration(v1.id, s3.id)
        # cancel_shift_registration(v2.id, s1.id)
        # why is this throwing ObjectDoesNotExist?
        cancel_shift_registration(v2.id, s2.id)
        cancel_shift_registration(v2.id, s3.id)