Пример #1
0
    def test_get_volunteer_resume_file_url(self):

        u1 = User.objects.create_user('John')

        v1 = Volunteer(first_name="John",
                       last_name="Doe",
                       address="7 Alpine Street",
                       city="Maplegrove",
                       state="Wyoming",
                       country="USA",
                       phone_number="23454545",
                       email="*****@*****.**",
                       resume_file="MyResume.pdf",
                       user=u1)

        v1.save()

        #test typicl cases
        self.assertIsNotNone(get_volunteer_resume_file_url(v1.id))
        self.assertEqual(get_volunteer_resume_file_url(v1.id),
                         v1.resume_file.url)

        #test non-existant cases
        self.assertNotEqual(get_volunteer_resume_file_url(v1.id),
                            "resumes/DifferentResume.pdf")
        self.assertNotEqual(get_volunteer_resume_file_url(v1.id),
                            "resumes/AnotherResume.pdf")
Пример #2
0
    def test_get_volunteer_resume_file_url(self):

        u1 = User.objects.create_user('John')

        v1 = Volunteer(
                        first_name="John",
                        last_name="Doe",
                        address="7 Alpine Street",
                        city="Maplegrove",
                        state="Wyoming",
                        country="USA",
                        phone_number="23454545",
                        email="*****@*****.**",
                        resume_file="MyResume.pdf",
                        user=u1
                        )

        v1.save()

        # test typical cases
        self.assertIsNotNone(get_volunteer_resume_file_url(v1.id))
        self.assertEqual(
            get_volunteer_resume_file_url(v1.id),
            v1.resume_file.url
            )

        # test non-existant cases
        self.assertNotEqual(get_volunteer_resume_file_url(v1.id),
                            "resumes/DifferentResume.pdf"
                            )
        self.assertNotEqual(get_volunteer_resume_file_url(v1.id),
                            "resumes/AnotherResume.pdf"
                            )
Пример #3
0
    def test_get_volunteers_ordered_by_first_name(self):

        u1 = User.objects.create_user('Yoshi')
        u2 = User.objects.create_user('Ashley')
        u3 = User.objects.create_user('Zelda')

        v1 = Volunteer(
                        first_name="Yoshi",
                        last_name="Doe",
                        address="7 Oak Street",
                        city="Elmgrove",
                        state="California",
                        country="USA",
                        phone_number="23454545",
                        email="*****@*****.**",
                        user=u1
                        )

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

        v3 = Volunteer(
                        id=999,
                        first_name="Zelda",
                        last_name="Doe",
                        address="7 Elm Street",
                        city="Oakgrove",
                        state="California",
                        country="USA",
                        phone_number="23454545",
                        email="*****@*****.**",
                        user=u3
                        )

        v1.save()
        v2.save()
        v3.save()

        # test typical cases
        volunteer_list = get_volunteers_ordered_by_first_name()
        self.assertIsNotNone(volunteer_list)
        self.assertIn(v1, volunteer_list)
        self.assertIn(v2, volunteer_list)
        self.assertIn(v3, volunteer_list)
        self.assertEqual(len(volunteer_list), 3)

        # test if in correct order
        self.assertEqual(volunteer_list[0], v2)
        self.assertEqual(volunteer_list[1], v1)
        self.assertEqual(volunteer_list[2], v3)
Пример #4
0
    def test_get_shifts_with_open_slots(self):
        """ Test get_shifts_with_open_slots(j_id) """
        u1 = User.objects.create_user("Yoshi")

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

        v1.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()

        self.assertIsNotNone(get_shifts_with_open_slots(j1.id))
        self.assertIsNotNone(get_shifts_with_open_slots(j2.id))
Пример #5
0
    def test_has_resume_file(self):

        u1 = User.objects.create_user('John')
        u2 = User.objects.create_user('James')
        u3 = User.objects.create_user('Jane')

        v1 = Volunteer(
                        first_name="John",
                        last_name="Doe",
                        address="7 Alpine Street",
                        city="Maplegrove",
                        state="Wyoming",
                        country="USA",
                        phone_number="23454545",
                        email="*****@*****.**",
                        resume_file="MyResume.pdf",
                        user=u1
                        )

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

        v3 = Volunteer(
                        first_name="Jane",
                        last_name="Doe",
                        address="7 Alpine Street",
                        city="Maplegrove",
                        state="Wyoming",
                        country="USA",
                        phone_number="23454545",
                        email="*****@*****.**",
                        resume_file="",
                        user=u3
                        )

        v1.save()
        v2.save()
        v3.save()

        # test typical cases
        self.assertTrue(has_resume_file(v1.id))

        # test non-existant cases
        self.assertFalse(has_resume_file(v2.id))
        self.assertFalse(has_resume_file(v3.id))
Пример #6
0
    def test_delete_volunteer(self):

        u1 = User.objects.create_user('Yoshi')
        u2 = User.objects.create_user('Ashley')
        u3 = User.objects.create_user('Zelda')

        v1 = Volunteer(
                        first_name="Yoshi",
                        last_name="Doe",
                        address="7 Oak Street",
                        city="Elmgrove",
                        state="California",
                        country="USA",
                        phone_number="23454545",
                        email="*****@*****.**",
                        user=u1
                        )

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

        v3 = Volunteer(
                        id=999,
                        first_name="Zelda",
                        last_name="Doe",
                        address="7 Elm Street",
                        city="Oakgrove",
                        state="California",
                        country="USA",
                        phone_number="23454545",
                        email="*****@*****.**",
                        user=u3
                        )

        v1.save()
        v2.save()
        v3.save()

        self.assertTrue(delete_volunteer(v1.id))
        self.assertTrue(delete_volunteer(v2.id))
        self.assertTrue(delete_volunteer(v3.id))
        self.assertFalse(delete_volunteer(100))
        self.assertFalse(delete_volunteer(200))
        self.assertFalse(delete_volunteer(300))
Пример #7
0
def create_volunteer_with_details(volunteer):
    """
    Creates and returns volunteer with passed name and dates
    """
    u1 = User.objects.create_user(username=volunteer[0], password='******')
    v1 = Volunteer(first_name=volunteer[1],
                   last_name=volunteer[2],
                   address=volunteer[3],
                   city=volunteer[4],
                   state=volunteer[5],
                   country=volunteer[6],
                   phone_number=volunteer[7],
                   email=volunteer[8],
                   user=u1)

    v1.save()
    return v1
Пример #8
0
    def test_get_all_volunteers(self):
        """ Tests get_all_volunteers() """

        u1 = User.objects.create_user('John')
        u2 = User.objects.create_user('James')
        u3 = User.objects.create_user('George')

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

        v2 = Volunteer(
                        first_name="James",
                        last_name="Doe",
                        address="7 Oak Street",
                        city="Elmgrove",
                        state="California",
                        country="USA",
                        phone_number="23454545",
                        email="*****@*****.**",
                        user=u2
                        )

        v3 = Volunteer(
                        id=999,
                        first_name="George",
                        last_name="Doe",
                        address="7 Elm Street",
                        city="Oakgrove",
                        state="California",
                        country="USA",
                        phone_number="23454545",
                        email="*****@*****.**",
                        user=u3
                        )

        v1.save()
        v2.save()
        v3.save()

        # test typical cases
        self.assertIsNotNone(get_all_volunteers())
Пример #9
0
def create_volunteer_with_details(volunteer, org_obj):
    """
    Creates and returns volunteer with passed name and dates
    """
    u1 = User.objects.create_user(username=volunteer['username'],
                                  password='******')
    v1 = Volunteer(first_name=volunteer['first_name'],
                   last_name=volunteer['last_name'],
                   address=volunteer['address'],
                   city=volunteer['city'],
                   state=volunteer['state'],
                   country=volunteer['country'],
                   phone_number=volunteer['phone_number'],
                   email=volunteer['email'],
                   user=u1,
                   organization=org_obj)
    v1.save()
    return v1
Пример #10
0
    def test_delete_shift(self):
        """ Test delete_shift(shift_id) """
        u1 = User.objects.create_user("Yoshi")

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

        v1.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,
        )

        j1.save()

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

        s2 = Shift(date="2011-11-11", start_time="11:00", end_time="12:00", max_volunteers=3, job=j1)

        s1.save()
        s2.save()

        self.assertTrue(delete_shift(s1.id))
        self.assertFalse(delete_shift(100))

        register(v1.id, s2.id)
        self.assertFalse(delete_shift(s2.id))
Пример #11
0
def create_volunteer_with_details(volunteer, org_obj):
    """
    Creates and returns volunteer with passed name and dates
    """
    u1 = User.objects.create_user(username=volunteer[0], password='******')
    v1 = Volunteer(
        first_name=volunteer[1],
        last_name=volunteer[2],
        address=volunteer[3],
        city=volunteer[4],
        state=volunteer[5],
        country=volunteer[6],
        phone_number=volunteer[7],
        email=volunteer[8],
        user=u1,
        organization=org_obj)

    v1.save()
    return v1
Пример #12
0
def create_volunteer_with_details_dynamic_password(volunteer):
    """
    Creates and returns volunteer with passed name and dates
    """
    u1 = User.objects.create_user(username=volunteer[0], password=volunteer[1])
    v1 = Volunteer(
        email=volunteer[2],
        first_name=volunteer[3],
        last_name=volunteer[4],
        address=volunteer[5],
        city=volunteer[6],
        state=volunteer[7],
        country=volunteer[8],
        phone_number=volunteer[9],
        user=u1
    )

    v1.save()
    return v1
Пример #13
0
    def test_delete_volunteer_resume(self):
        """ Tests delete_volunteer_resume(volunteer_id) """
        u1 = User.objects.create_user('John')

        v1 = Volunteer(
                        first_name="John",
                        last_name="Doe",
                        address="7 Alpine Street",
                        city="Maplegrove",
                        state="Wyoming",
                        country="USA",
                        phone_number="23454545",
                        email="*****@*****.**",
                        resume_file="MyResume.pdf",
                        user=u1
                        )

        v1.save()

        self.assertTrue(delete_volunteer_resume(v1.id))
        self.assertFalse(delete_volunteer(100))
Пример #14
0
def create_volunteer_with_details_dynamic_password(volunteer):
    """
    Creates and returns volunteer with passed name and dates
    """
    u1 = User.objects.create_user(username=volunteer['username'],
                                  password=volunteer['password'])
    v1 = Volunteer(email=volunteer['email'],
                   first_name=volunteer['first_name'],
                   last_name=volunteer['last_name'],
                   address=volunteer['address'],
                   city=volunteer['city'],
                   state=volunteer['state'],
                   country=volunteer['country'],
                   phone_number=volunteer['phone_number'],
                   unlisted_organization=volunteer['unlisted_organization'],
                   websites=volunteer['websites'],
                   description=volunteer['description'],
                   resume=volunteer['resume'],
                   reminder_days=volunteer['reminder_days'],
                   user=u1)

    v1.save()
    return v1
Пример #15
0
def apply(request):
  form = request.POST
  user = request.user
  new_application = Volunteer(name=user.first_name + " "+user.last_name, email=user.email, phone=form.get('phone-number'), address=form.get('street-address'), city=form.get('city'), province=form.get('province'), isApproved=False, \
    reference1name=form.get('ref1name'), reference1email=form.get('ref1email'), reference1phone=form.get('ref1phone'), \
    reference2name=form.get('ref2name'), reference2email=form.get('ref2email'), reference2phone=form.get('ref2phone'), \
    experience=form.get('id_experience'), availability=form.get('id_availability'))

  if (form):
    try:
      new_application.save()
    except IntegrityError, e:
      fail_msg = "Sorry, record shows that your previous application has not been proccessed, please be patient (:"
      return render_to_response('volunteer/apply.html', {'message': fail_msg})

    email = form.get('email')

    domain = request.META['HTTP_HOST']
    link = domain + "/applications/" + str(new_application.id) + "/"
    message = "To view the application, go to: " + link
    send_mail('Writer\'s Exchange Volunteer Application', message, '*****@*****.**', [NOTIFICATION_EMAIL], fail_silently=False)

    success_msg = "Thank you for your application! We will notify you about your application status soon."
    return render_to_response('volunteer/apply.html', {'message': success_msg})
Пример #16
0
def create(request):
    if request.method == 'POST':
        data = json.loads(request.body.decode('utf-8'))

        all_orgs = Organisation.objects

        for orgs in all_orgs.all():
            if orgs.email == data['email']:
                return HttpResponse("Email already registered")

        character = data['position']

        print("pos" + character)

        if character == "organization":
            org = Organisation()
            org.email = data['email']

            message = Helper.send_verification_email(data['email'])
            if message[0] == 1:
                org.activation_key = message[2]
                org.save()
                return HttpResponse(message[1])
            else:
                return HttpResponse(message[1])
        elif character == "volunteer":

            vol = Volunteer()
            vol.email = data['email']

            message = Helper.send_verification_email(data['email'])
            if message[0] == 1:
                vol.activation_key = message[2]
                vol.save()
                return HttpResponse(message[1])
            else:
                return HttpResponse(message[1])
Пример #17
0
    def test_register(self):

        RESULT_IS_VALID = "IS_VALID"
        ERROR_CODE_ALREADY_SIGNED_UP = "ERROR_CODE_ALREADY_SIGNED_UP"
        ERROR_CODE_NO_SLOTS_REMAINING = "ERROR_CODE_NO_SLOTS_REMAINING"

        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 typical cases
        register(v1.id, s1.id)
        self.assertIsNotNone(
            VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s1.id))

        register(v1.id, s2.id)
        self.assertIsNotNone(
            VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s2.id))

        register(v1.id, s3.id)
        self.assertIsNotNone(
            VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s3.id))

        #test cases where volunteer tries to sign up for a shift they are already signed up for
        self.assertEqual(register(v1.id, s1.id), ERROR_CODE_ALREADY_SIGNED_UP)
        self.assertEqual(register(v1.id, s2.id), ERROR_CODE_ALREADY_SIGNED_UP)
        self.assertEqual(register(v1.id, s3.id), ERROR_CODE_ALREADY_SIGNED_UP)

        #test case where more than one volunteer signs up for the same shift
        #v2 can't sign up for s1 because there are no slots remaining
        self.assertEqual(register(v2.id, s1.id), ERROR_CODE_NO_SLOTS_REMAINING)

        register(v2.id, s2.id)
        self.assertIsNotNone(
            VolunteerShift.objects.get(volunteer_id=v2.id, shift_id=s2.id))

        register(v2.id, s3.id)
        self.assertIsNotNone(
            VolunteerShift.objects.get(volunteer_id=v2.id, shift_id=s3.id))

        #test cases where a volunteer tries to sign up for a shift they are already signed up for
        self.assertEqual(register(v2.id, s2.id), ERROR_CODE_ALREADY_SIGNED_UP)
        self.assertEqual(register(v2.id, s3.id), ERROR_CODE_ALREADY_SIGNED_UP)
Пример #18
0
    def test_get_volunteer_shift_by_id(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 where signed up
        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)

        self.assertEqual(
            get_volunteer_shift_by_id(v1.id, s1.id),
            VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s1.id))
        self.assertEqual(
            get_volunteer_shift_by_id(v1.id, s2.id),
            VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s2.id))
        self.assertEqual(
            get_volunteer_shift_by_id(v1.id, s3.id),
            VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s3.id))

        #self.assertEqual(get_volunteer_shift_by_id(v2.id, s1.id), VolunteerShift.objects.get(volunteer_id=v2.id, shift_id=s1.id)) #why does this throw DoesNotExist?
        self.assertEqual(
            get_volunteer_shift_by_id(v2.id, s2.id),
            VolunteerShift.objects.get(volunteer_id=v2.id, shift_id=s2.id))
        self.assertEqual(
            get_volunteer_shift_by_id(v2.id, s3.id),
            VolunteerShift.objects.get(volunteer_id=v2.id, shift_id=s3.id))
Пример #19
0
    def test_is_signed_up(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 where not signed up yet
        self.assertFalse(is_signed_up(v1.id, s1.id))
        self.assertFalse(is_signed_up(v1.id, s2.id))
        self.assertFalse(is_signed_up(v1.id, s3.id))

        #test cases where signed up
        register(v1.id, s1.id)
        register(v1.id, s2.id)
        register(v1.id, s3.id)

        self.assertTrue(is_signed_up(v1.id, s1.id))
        self.assertTrue(is_signed_up(v1.id, s2.id))
        self.assertTrue(is_signed_up(v1.id, s3.id))

        #test case where more than one volunteer signs up for the same shift
        self.assertFalse(is_signed_up(v2.id, s1.id))
        self.assertFalse(is_signed_up(v2.id, s2.id))
        self.assertFalse(is_signed_up(v2.id, s3.id))

        register(v2.id, s2.id)
        register(v2.id, s3.id)

        self.assertFalse(is_signed_up(v2.id, s1.id))
        self.assertTrue(is_signed_up(v2.id, s2.id))
        self.assertTrue(is_signed_up(v2.id, s3.id))
Пример #20
0
    def test_edit_shift_hours(self):
        u1 = User.objects.create_user("Yoshi")

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

        v1.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,
        )

        j1.save()

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

        s1.save()

        register(v1.id, s1.id)
        self.assertIsNotNone(VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s1.id))

        start_time = datetime.time(hour=9, minute=0)
        end_time = datetime.time(hour=10, minute=0)
        add_shift_hours(v1.id, s1.id, start_time, end_time)

        start_time = datetime.time(hour=10, minute=0)
        end_time = datetime.time(hour=11, minute=0)
        edit_shift_hours(v1.id, s1.id, start_time, end_time)
        volunteer_shift = VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s1.id)
        self.assertIsNotNone(volunteer_shift.start_time)
        self.assertIsNotNone(volunteer_shift.end_time)
        self.assertEqual(volunteer_shift.start_time, start_time)
        self.assertEqual(volunteer_shift.end_time, end_time)

        start_time = datetime.time(hour=1, minute=0)
        end_time = datetime.time(hour=4, minute=0)
        edit_shift_hours(v1.id, s1.id, start_time, end_time)
        volunteer_shift = VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s1.id)
        self.assertIsNotNone(volunteer_shift.start_time)
        self.assertIsNotNone(volunteer_shift.end_time)
        self.assertEqual(volunteer_shift.start_time, start_time)
        self.assertEqual(volunteer_shift.end_time, end_time)

        start_time = datetime.time(hour=4, minute=15)
        end_time = datetime.time(hour=12, minute=35)
        edit_shift_hours(v1.id, s1.id, start_time, end_time)
        volunteer_shift = VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s1.id)
        self.assertIsNotNone(volunteer_shift.start_time)
        self.assertIsNotNone(volunteer_shift.end_time)
        self.assertEqual(volunteer_shift.start_time, start_time)
        self.assertEqual(volunteer_shift.end_time, end_time)

        start_time = datetime.time(hour=2, minute=5)
        end_time = datetime.time(hour=4, minute=15)
        edit_shift_hours(v1.id, s1.id, start_time, end_time)
        volunteer_shift = VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s1.id)
        self.assertIsNotNone(volunteer_shift.start_time)
        self.assertIsNotNone(volunteer_shift.end_time)
        self.assertEqual(volunteer_shift.start_time, start_time)
        self.assertEqual(volunteer_shift.end_time, end_time)

        start_time = datetime.time(hour=5, minute=0)
        end_time = datetime.time(hour=5, minute=30)
        edit_shift_hours(v1.id, s1.id, start_time, end_time)
        volunteer_shift = VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s1.id)
        self.assertIsNotNone(volunteer_shift.start_time)
        self.assertIsNotNone(volunteer_shift.end_time)
        self.assertEqual(volunteer_shift.start_time, start_time)
        self.assertEqual(volunteer_shift.end_time, end_time)
Пример #21
0
    def test_get_unlogged_shifts_by_volunteer_id(self):

        u1 = User.objects.create_user('Yoshi')

        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)

        v1.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()

        #sign up
        register(v1.id, s1.id)
        register(v1.id, s2.id)
        register(v1.id, s3.id)

        #test typical case
        shift_list = get_unlogged_shifts_by_volunteer_id(v1.id)
        self.assertIsNotNone(shift_list)
        self.assertNotEqual(shift_list, False)
        self.assertEqual(len(shift_list), 3)
        self.assertIn(s1, shift_list)
        self.assertIn(s2, shift_list)
        self.assertIn(s3, shift_list)
Пример #22
0
    def test_search_volunteers(self):

        u1 = User.objects.create_user('Yoshi')
        u2 = User.objects.create_user('Ashley')
        u3 = User.objects.create_user('Zelda')

        o1 = Organization(name="Apple")
        o2 = Organization(name="Google")

        o1.save()
        o2.save()

        v1 = Volunteer(first_name="Yoshi",
                       last_name="Doe",
                       address="7 Oak Street",
                       city="Elmgrove",
                       state="California",
                       country="USA",
                       phone_number="23454545",
                       organization=o1,
                       email="*****@*****.**",
                       user=u1)

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

        v3 = Volunteer(id=999,
                       first_name="Zelda",
                       last_name="Doe",
                       address="7 Elm Street",
                       city="Oakgrove",
                       state="California",
                       country="USA",
                       phone_number="23454545",
                       unlisted_organization="Government of Canada",
                       email="*****@*****.**",
                       user=u3)

        v1.save()
        v2.save()
        v3.save()

        #if no search parameters are given, it returns all volunteers
        search_list = search_volunteers("", "", "", "", "", "")
        self.assertNotEqual(search_list, False)
        self.assertEqual(len(search_list), 3)
        self.assertIn(v1, search_list)
        self.assertIn(v2, search_list)
        self.assertIn(v3, search_list)

        search_list = search_volunteers(None, None, None, None, None, None)
        self.assertNotEqual(search_list, False)
        self.assertEqual(len(search_list), 3)
        self.assertIn(v1, search_list)
        self.assertIn(v2, search_list)
        self.assertIn(v3, search_list)

        #test exact search
        search_list = search_volunteers("Yoshi", "Doe", "Elmgrove",
                                        "California", "USA", "Apple")
        self.assertNotEqual(search_list, False)
        self.assertEqual(len(search_list), 1)
        self.assertIn(v1, search_list)
        self.assertNotIn(v2, search_list)
        self.assertNotIn(v3, search_list)

        #test partial search
        search_list = search_volunteers("Yoshi", None, None, None, None, None)
        self.assertNotEqual(search_list, False)
        self.assertEqual(len(search_list), 1)
        self.assertIn(v1, search_list)
        self.assertNotIn(v2, search_list)
        self.assertNotIn(v3, search_list)

        search_list = search_volunteers(None, "Doe", None, None, None, None)
        self.assertNotEqual(search_list, False)
        self.assertEqual(len(search_list), 3)
        self.assertIn(v1, search_list)
        self.assertIn(v2, search_list)
        self.assertIn(v3, search_list)

        #test no search matches
        search_list = search_volunteers("Billy", "Doe", "Montreal", "Quebec",
                                        "Canada", "Ubisoft")
        self.assertEqual(len(search_list), 0)
        self.assertNotIn(v1, search_list)
        self.assertNotIn(v2, search_list)
        self.assertNotIn(v3, search_list)
Пример #23
0
    def test_is_signed_up(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 where not signed up yet
        self.assertFalse(is_signed_up(v1.id, s1.id))
        self.assertFalse(is_signed_up(v1.id, s2.id))
        self.assertFalse(is_signed_up(v1.id, s3.id))

        # test cases where signed up
        register(v1.id, s1.id)
        register(v1.id, s2.id)
        register(v1.id, s3.id)

        self.assertTrue(is_signed_up(v1.id, s1.id))
        self.assertTrue(is_signed_up(v1.id, s2.id))
        self.assertTrue(is_signed_up(v1.id, s3.id))

        # test case where more than one volunteer signs up for the same shift
        self.assertFalse(is_signed_up(v2.id, s1.id))
        self.assertFalse(is_signed_up(v2.id, s2.id))
        self.assertFalse(is_signed_up(v2.id, s3.id))

        register(v2.id, s2.id)
        register(v2.id, s3.id)

        self.assertFalse(is_signed_up(v2.id, s1.id))
        self.assertTrue(is_signed_up(v2.id, s2.id))
        self.assertTrue(is_signed_up(v2.id, s3.id))
Пример #24
0
    def post(self, request, uidb64=None, token=None, *arg, **kwargs):
        UserModel = get_user_model()
        form = self.form_class(request.POST)

        assert uidb64 is not None and token is not None  # checked by URLconf
        try:
            uid = urlsafe_base64_decode(uidb64)
            asp = Client.objects.get(user=User.objects.get(id=uid))
            user = UserModel._default_manager.get(pk=uid)
        except (TypeError, ValueError, OverflowError, UserModel.DoesNotExist):
            user = None
        if user is not None and shareable_link_token.check_token(user, token):
            if form.is_valid():
                phone_number = form.cleaned_data['phone_number']
                first_name = form.cleaned_data['first_name']
                last_name = form.cleaned_data['last_name']
                email = form.cleaned_data['email']
                password = form.cleaned_data['password']
                county = form.cleaned_data['county']
                constituency = form.cleaned_data['constituency']
                ward = form.cleaned_data['ward']
                country = Country.objects.get(country_name='Kenya')
                format_number = SMS()
                phone_number = format_number.format_phone_number(phone_number)
                if self.validate_phone_number(phone_number, asp):
                    new_user = User.objects.create_user(first_name=first_name,
                                                        last_name=last_name,
                                                        username=email,
                                                        password=password,
                                                        email=email,
                                                        is_staff=False,
                                                        is_superuser=False,
                                                        is_active=True)
                    new_volunteer = Volunteer(phone_number=phone_number,
                                              aspirant=asp,
                                              user=new_user,
                                              country=country,
                                              county=county,
                                              constituency=constituency,
                                              ward=ward,
                                              is_active=True)
                    try:
                        new_volunteer.save()
                        messages.success(
                            request,
                            format_html(
                                "{}<a id='anchor_redirect' href='{}://{}/{}'>{}</a>{}",
                                'Successful volunteer registration.', 'http',
                                request.META['HTTP_HOST'], 'login_page',
                                'Click Here', ' to access your account.'))

                        txt_template = 'email/volunteer_registration_email.txt'
                        html_template = 'email/volunteer_registration_email.html'
                        recipient = [new_user]
                        try:
                            email = SendEmail()
                            email.tuma_mail(recipient, txt_template,
                                            html_template)
                        except Exception, e:
                            print(str(e))
                        return self.form_valid(form)
                    except Exception, e:
                        new_user.delete()
                        messages.error(
                            request,
                            format_html(
                                "<span class='w3-text-red'>{}</span>",
                                'Unsuccessful volunteer registration.'))
                    return self.render_to_response(
                        self.get_context_data(form=form))
                else:
                    messages.error(
                        request,
                        'Phone Number exists.Unsuccessful volunteer registration.'
                    )
                    return self.form_invalid(form)
Пример #25
0
    def test_register(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()

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

        j2 = Job(job_title = "Systems Administrator",
                start_date = "2012-9-1",
                end_date = "2012-10-26",
                description = "A systems administrator job")
        
        j1.save()
        j2.save()

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

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

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

        s1.save()
        s2.save()
        s3.save()
    
        #test typical cases
        self.assertTrue(register(v1.id, s1.id))
        self.assertIsNotNone(VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s1.id))

        self.assertTrue(register(v1.id, s2.id))
        self.assertIsNotNone(VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s2.id))

        self.assertTrue(register(v1.id, s3.id))
        self.assertIsNotNone(VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s3.id))

        #test cases where volunteer tries to sign up for a shift they are already signed up for
        self.assertFalse(register(v1.id, s1.id))
        self.assertFalse(register(v1.id, s2.id))
        self.assertFalse(register(v1.id, s3.id))

        #test case where more than one volunteer signs up for the same shift
        #v2 can't sign up for s1 because there are no slots remaining
        self.assertFalse(register(v2.id, s1.id))

        self.assertTrue(register(v2.id, s2.id))
        self.assertIsNotNone(VolunteerShift.objects.get(volunteer_id=v2.id, shift_id=s2.id))

        self.assertTrue(register(v2.id, s3.id))
        self.assertIsNotNone(VolunteerShift.objects.get(volunteer_id=v2.id, shift_id=s3.id))

        #test cases where a volunteer tries to sign up for a shift they are already signed up for
        self.assertFalse(register(v2.id, s2.id))
        self.assertFalse(register(v2.id, s3.id))        
Пример #26
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)
Пример #27
0
    def test_register(self):

        ERROR_CODE_ALREADY_SIGNED_UP = "ERROR_CODE_ALREADY_SIGNED_UP"
        ERROR_CODE_NO_SLOTS_REMAINING = "ERROR_CODE_NO_SLOTS_REMAINING"

        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 typical cases
        register(v1.id, s1.id)
        self.assertIsNotNone(VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s1.id))

        register(v1.id, s2.id)
        self.assertIsNotNone(VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s2.id))

        register(v1.id, s3.id)
        self.assertIsNotNone(VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s3.id))

        # test cases where volunteer tries to sign up for a shift
        # they are already signed up for
        self.assertEqual(register(v1.id, s1.id), ERROR_CODE_ALREADY_SIGNED_UP)
        self.assertEqual(register(v1.id, s2.id), ERROR_CODE_ALREADY_SIGNED_UP)
        self.assertEqual(register(v1.id, s3.id), ERROR_CODE_ALREADY_SIGNED_UP)

        # test case where more than one volunteer signs up for the same shift
        # v2 can't sign up for s1 because there are no slots remaining
        self.assertEqual(register(v2.id, s1.id), ERROR_CODE_NO_SLOTS_REMAINING)

        register(v2.id, s2.id)
        self.assertIsNotNone(VolunteerShift.objects.get(volunteer_id=v2.id, shift_id=s2.id))

        register(v2.id, s3.id)
        self.assertIsNotNone(VolunteerShift.objects.get(volunteer_id=v2.id, shift_id=s3.id))

        # test cases where a volunteer tries to sign up for a shift
        # they are already signed up for
        self.assertEqual(register(v2.id, s2.id), ERROR_CODE_ALREADY_SIGNED_UP)
        self.assertEqual(register(v2.id, s3.id), ERROR_CODE_ALREADY_SIGNED_UP)
Пример #28
0
    def test_send_reminder(self):

        u1 = User.objects.create_user("Marina")
        u2 = User.objects.create_user("Anna")

        v1 = Volunteer(
            first_name="Marina",
            last_name="Tsvetaeva",
            address="MyAddress",
            city="MyCity",
            state="MyState",
            country="MyCountry",
            phone_number="2374983247",
            email="*****@*****.**",
            reminder_days=1,
            user=u1,
        )

        v2 = Volunteer(
            first_name="Anna",
            last_name="Akhmatova",
            address="MyAddress",
            city="MyCity",
            state="MyState",
            country="MyCountry",
            phone_number="2374983247",
            email="*****@*****.**",
            reminder_days=7,
            user=u2,
        )
        v1.save()
        v2.save()

        e1 = Event(name="GHC 2015", start_date="2015-07-22", end_date="2015-08-23")

        e1.save()

        j1 = Job(
            name="Volunteer Program Manager",
            start_date="2015-07-22",
            end_date="2015-08-23",
            description="Volunteer Program Manager",
            event=e1,
        )

        j2 = Job(
            name="Volunteer Coordinator",
            start_date="2015-07-22",
            end_date="2015-08-23",
            description="Volunteer Coordinator",
            event=e1,
        )

        j1.save()
        j2.save()

        s1 = Shift(
            date="2015-08-23",
            start_time="9:00",
            end_time="3:00",
            max_volunteers=1,
            address="Test address",
            city="Atlanta",
            state="Georgia",
            country="USA",
            venue="Near the south entrance",
            job=j1,
        )

        s2 = Shift(
            date=date.today() + timedelta(7),  # one week date
            start_time="10:00",
            end_time="4:00",
            max_volunteers=2,
            address="Test address",
            city="Atlanta",
            state="Georgia",
            country="USA",
            venue="Near the south entrance",
            job=j1,
        )

        s3 = Shift(
            date=date.today() + timedelta(1),  # tomorrow date
            start_time="12:00",
            end_time="6:00",
            max_volunteers=4,
            address="Test address",
            city="Atlanta",
            state="Georgia",
            country="USA",
            venue="Near the south entrance",
            job=j2,
        )

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

        # sign up
        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 case

        result = send_reminder()

        self.assertEqual(result, 2)
Пример #29
0
def receive_sms(request):
    try:
        f = open("log.log", "a+")
        data_to_log = request.POST
        data_to_log['date_time'] = str(datetime.datetime.now())
        f.write("{}\n".format(json.dumps(data_to_log)))
        f.close()
    except Exception as e:
        f = open("log.log", "a+")
        f.write(str(e))
        f.close()

    sender = request.POST.get(
        'from')  # phone number from which the message originated from
    message = request.POST.get('text')  # Message from sender
    message = message.strip()
    date = request.POST.get('date')  # Date time when the message was sent
    msg_id = request.POST.get('id')  # Message ID from Africa's Talking

    aspirant = Client.objects.all()[0]

    sms_inbox = Inbox(africastalking_msg_id=msg_id,
                      phone_number=sender,
                      message=message,
                      date_created=datetime.datetime.now(),
                      date_received=date,
                      user=aspirant.user)

    subscriber_exist = Subscriber.objects.filter(phone_number=sender).exists()
    volunteer_exist = Volunteer.objects.filter(phone_number=sender).exists()

    try:
        message_arr = message.split(' ')
        first_word = message_arr[0].lower()
        first_word = first_word.strip()
        sms_util = SMS()

        if len(message_arr) == 1:
            if first_word == 'vote' and subscriber_exist is False:  # subscriber user
                sms_inbox.message_type = 'SUBSCRIBE'
                sms_inbox.save()
                subscriber = Subscriber(
                    phone_number=sms_util.format_phone_number(sender),
                    aspirant=aspirant,
                    is_active=True)
                subscriber.save()
                ret_msg = """You have successfully subscribe to {}. Send the word campaign to {} to view his campaign."""\
                    .format(aspirant.alias_name, settings.SMS_SHORT_CODE)
                sms_util.send_single_sms(sms_util.format_phone_number(sender),
                                         ret_msg)
                Outbox(phone_number=sms_util.format_phone_number(sender),
                       message=ret_msg,
                       message_type="ACK",
                       is_sent=True,
                       user=aspirant.user,
                       date_sent=datetime.datetime.now()).save()
                return

            elif first_word == 'volunteer':
                ret_msg = """To register as {}'s volunteer, send the word volunteer followed by your email address to {}.""" \
                    .format(aspirant.alias_name, settings.SMS_SHORT_CODE)
                sms_util.send_single_sms(sms_util.format_phone_number(sender),
                                         ret_msg)
                Outbox(phone_number=sms_util.format_phone_number(sender),
                       message=ret_msg,
                       message_type="ACK",
                       is_sent=True,
                       user=aspirant.user,
                       date_sent=datetime.datetime.now()).save()

            elif first_word.isdigit():  # SMS menu
                phone_number = sms_util.format_phone_number(sender)
                sms_menu_log = SMSMenuLog.objects.filter(
                    phone_number=phone_number).order_by('-date_created')[0]
                allowed_options = json.loads(sms_menu_log.allowed_options)
                extra_info = json.loads(sms_menu_log.extra_info)
                menu_type = sms_menu_log.menu_type
                menu_option = int(first_word)

                if menu_option not in allowed_options:
                    msg = extra_info['FALL_BACK_SMS']
                    sms_util.send_single_sms(phone_number, msg)
                    return

                if menu_type == 'MANIFESTO':  #Send campaign
                    sms_inbox.message_type = 'MANIFESTO'
                    sms_inbox.save()

                    manifesto_id = extra_info['MANIFESTO_ID']
                    options_mapping = extra_info['OPTIONS_MAPPING']
                    manifesto = Campaign.objects.get(id=manifesto_id)
                    manifesto_item_id = options_mapping[first_word]
                    manifesto_item = CampaignItems.objects.get(
                        campaign=manifesto, id=manifesto_item_id)
                    manifesto_msg = """{}\n{}""".format(
                        manifesto_item.title, manifesto_item.content)
                    sms_util.send_single_sms(phone_number, manifesto_msg)

                    manifesto_item_reception = CampaignItemsReception(
                        campaign_item=CampaignItems.objects.get(
                            id=manifesto_item_id),
                        date_read=datetime.datetime.now())

                    try:
                        manifesto_item_reception.subscriber = Subscriber.objects.get(
                            phone_number=phone_number)
                    except:
                        pass
                    manifesto_item_reception.save()

                elif menu_type == 'SURVEY':  #Send survey
                    sms_inbox.message_type = 'SURVEY'
                    sms_inbox.save()

                    survey_id = extra_info['SURVEY_ID']
                    was_question = extra_info['WAS_QUESTION']

                    if was_question == 1:  # Save survey response
                        options_mapping = extra_info['OPTIONS_MAPPING']
                        survey_response = SurveyResponse()
                        survey_response.survey_option = SurveyOptions.objects.get(
                            id=options_mapping[first_word])
                        try:
                            survey_response.subscriber = Subscriber.objects.get(
                                phone_number=sms_util.format_phone_number(
                                    phone_number))
                        except:
                            pass
                        survey_response.save()

                    next_question_number = extra_info['NEXT_QUESTION_NUMBER']
                    survey = Survey.objects.get(id=survey_id)

                    try:
                        survey_question = SurveyQuestion.objects.get(
                            survey=survey,
                            question_number=next_question_number)
                        question_options = SurveyOptions.objects.filter(
                            survey_question=survey_question)
                        msg = "{}\n".format(survey_question.question)
                        fall_back_sms = "Invalid option.\n"
                        allowed_options = []
                        options_mapping = {}

                        for i in range(0, len(question_options)):
                            msg += "{}. {}\n".format(
                                i + 1, question_options[i].option)
                            fall_back_sms += "{}. {}\n".format(
                                i + 1, question_options[i].option)
                            allowed_options.append(i + 1)
                            options_mapping[i + 1] = question_options[i].id

                        SMSMenuLog(date_created=datetime.datetime.now(),
                                   phone_number=phone_number,
                                   menu_type='SURVEY',
                                   allowed_options=json.dumps(allowed_options),
                                   extra_info=json.dumps({
                                       'WAS_QUESTION':
                                       1,
                                       'NEXT_QUESTION_NUMBER':
                                       next_question_number + 1,
                                       'SURVEY_ID':
                                       survey_id,
                                       'FALL_BACK_SMS':
                                       fall_back_sms,
                                       'OPTIONS_MAPPING':
                                       options_mapping
                                   })).save()
                        sms_util.send_single_sms(phone_number, msg)
                    except:
                        msg = "Thank you for participating in this survey."
                        sms_util.send_single_sms(phone_number, msg)

        elif first_word == 'volunteer' and volunteer_exist is False:  # Register volunteer
            sms_inbox.message_type = 'VOLUNTEER'
            sms_inbox.save()
            email_address = message_arr[1]

            try:
                validate_email(email_address)
                user = User(username=email_address, email=email_address)
                user.save()
                volunteer = Volunteer(
                    phone_number=sms_util.format_phone_number(sender),
                    aspirant=aspirant,
                    is_active=True,
                    user=user)
                volunteer.save()
                try:
                    recipient = [user]
                    email = SendEmail()
                    txt_template = 'email/email_template_volunteer_registration.txt'
                    html_template = 'email/email_template_volunteer_registration.html'
                    send_mail = email.tuma_mail(recipient, txt_template,
                                                html_template)
                    if send_mail:
                        ret_msg = """You have successfully been registered as {}'s volunteer. A verification link has been sent to {}.""" \
                            .format(aspirant.alias_name, email_address)
                    else:
                        ret_msg = """Unsuccessful registration.Unable to sent verification link to {}""" \
                            .format(email_address)
                        volunteer.delete()
                        user.delete()
                except Exception, e:
                    ret_msg = """Unsuccessful registration.Unable to sent verification link to {}""" \
                        .format(email_address)
                    volunteer.delete()
                    user.delete()
                sms_util.send_single_sms(sms_util.format_phone_number(sender),
                                         ret_msg)
                Outbox(phone_number=sms_util.format_phone_number(sender),
                       message=ret_msg,
                       message_type="ACK",
                       is_sent=True,
                       user=aspirant.user,
                       date_sent=datetime.datetime.now()).save()
                return

            except:
                ret_msg = """Invalid email address.Please send the word volunteer followed by a valid email address to {}.""" \
                    .format(aspirant.alias_name, settings.SMS_SHORT_CODE)
                sms_util.send_single_sms(sms_util.format_phone_number(sender),
                                         ret_msg)
                Outbox(phone_number=sms_util.format_phone_number(sender),
                       user=aspirant.user,
                       message=ret_msg,
                       message_type="ACK",
                       is_sent=True,
                       date_sent=datetime.datetime.now()).save()
Пример #30
0
    def test_generate_report(self):
        """ Tests test_generate_report(volunteer_shift_list) """
        u1 = User.objects.create_user("Yoshi")

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

        v1.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()

        shift_list = [s1, s2, s3]

        self.assertIsNotNone(shift_list)
        self.assertNotEqual(shift_list, False)
        self.assertEqual(len(shift_list), 3)
        self.assertIn(s1, shift_list)
        self.assertIn(s2, shift_list)
        self.assertIn(s3, shift_list)

        # register will return an exception on error
        # (such as when invalid parameters are passed)
        # if an exception does get raised, this test will automatically fail
        register(v1.id, s1.id)
        volunteer_shift_1 = VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s1.id)
        self.assertIsNotNone(volunteer_shift_1)

        register(v1.id, s2.id)
        volunteer_shift_2 = VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s2.id)
        self.assertIsNotNone(volunteer_shift_2)

        register(v1.id, s3.id)
        volunteer_shift_3 = VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s3.id)
        self.assertIsNotNone(volunteer_shift_3)

        volunteer_shift_list = [volunteer_shift_1, volunteer_shift_2, volunteer_shift_3]

        self.assertIsNotNone(generate_report(volunteer_shift_list))
Пример #31
0
    def test_get_volunteer_by_id(self):

        u1 = User.objects.create_user('John')
        u2 = User.objects.create_user('James')
        u3 = User.objects.create_user('George')

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

        v2 = Volunteer(first_name="James",
                       last_name="Doe",
                       address="7 Oak Street",
                       city="Elmgrove",
                       state="California",
                       country="USA",
                       phone_number="23454545",
                       email="*****@*****.**",
                       user=u2)

        v3 = Volunteer(id=999,
                       first_name="George",
                       last_name="Doe",
                       address="7 Elm Street",
                       city="Oakgrove",
                       state="California",
                       country="USA",
                       phone_number="23454545",
                       email="*****@*****.**",
                       user=u3)

        v1.save()
        v2.save()
        v3.save()

        #test typical cases
        self.assertIsNotNone(get_volunteer_by_id(v1.id))
        self.assertIsNotNone(get_volunteer_by_id(v2.id))
        self.assertIsNotNone(get_volunteer_by_id(v3.id))

        self.assertEqual(get_volunteer_by_id(v1.id), v1)
        self.assertEqual(get_volunteer_by_id(v2.id), v2)
        self.assertEqual(get_volunteer_by_id(v3.id), v3)

        #why doesn't testing for equality work?
        #self.assertIs(get_volunteer_by_id(v1.id), v1)
        #self.assertIs(get_volunteer_by_id(v2.id), v2)
        #self.assertIs(get_volunteer_by_id(v3.id), v3)

        #test non-existant cases
        self.assertIsNone(get_volunteer_by_id(100))
        self.assertIsNone(get_volunteer_by_id(200))
        self.assertIsNone(get_volunteer_by_id(300))
        self.assertIsNone(get_volunteer_by_id(400))

        self.assertNotEqual(get_volunteer_by_id(100), v1)
        self.assertNotEqual(get_volunteer_by_id(200), v1)
        self.assertNotEqual(get_volunteer_by_id(300), v2)
        self.assertNotEqual(get_volunteer_by_id(400), v2)
Пример #32
0
    def test_get_volunteer_by_id(self):

        u1 = User.objects.create_user('John')
        u2 = User.objects.create_user('James')
        u3 = User.objects.create_user('George')

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

        v2 = Volunteer(first_name = "James",
                        last_name = "Doe",
                        address = "7 Oak Street",
                        city = "Elmgrove",
                        state = "California",
                        country = "USA",
                        phone_number = "23454545",
                        email = "*****@*****.**",
                        user = u2)

        v3 = Volunteer(id = 999,
                        first_name = "George",
                        last_name = "Doe",
                        address = "7 Elm Street",
                        city = "Oakgrove",
                        state = "California",
                        country = "USA",
                        phone_number = "23454545",
                        email = "*****@*****.**",
                        user = u3)

        v1.save()
        v2.save()
        v3.save()

        #test typical cases
        self.assertIsNotNone(get_volunteer_by_id(v1.id))
        self.assertIsNotNone(get_volunteer_by_id(v2.id))
        self.assertIsNotNone(get_volunteer_by_id(v3.id))

        self.assertEqual(get_volunteer_by_id(v1.id), v1)
        self.assertEqual(get_volunteer_by_id(v2.id), v2)
        self.assertEqual(get_volunteer_by_id(v3.id), v3)

        #why doesn't testing for equality work?
        #self.assertIs(get_volunteer_by_id(v1.id), v1)
        #self.assertIs(get_volunteer_by_id(v2.id), v2)
        #self.assertIs(get_volunteer_by_id(v3.id), v3)
    
        #test non-existant cases 
        self.assertIsNone(get_volunteer_by_id(100))
        self.assertIsNone(get_volunteer_by_id(200))
        self.assertIsNone(get_volunteer_by_id(300))
        self.assertIsNone(get_volunteer_by_id(400))

        self.assertNotEqual(get_volunteer_by_id(100), v1)
        self.assertNotEqual(get_volunteer_by_id(200), v1)
        self.assertNotEqual(get_volunteer_by_id(300), v2)
        self.assertNotEqual(get_volunteer_by_id(400), v2)
Пример #33
0
    def test_has_resume_file(self):

        u1 = User.objects.create_user('John')
        u2 = User.objects.create_user('James')
        u3 = User.objects.create_user('Jane')

        v1 = Volunteer(first_name="John",
                       last_name="Doe",
                       address="7 Alpine Street",
                       city="Maplegrove",
                       state="Wyoming",
                       country="USA",
                       phone_number="23454545",
                       email="*****@*****.**",
                       resume_file="MyResume.pdf",
                       user=u1)

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

        v3 = Volunteer(first_name="Jane",
                       last_name="Doe",
                       address="7 Alpine Street",
                       city="Maplegrove",
                       state="Wyoming",
                       country="USA",
                       phone_number="23454545",
                       email="*****@*****.**",
                       resume_file="",
                       user=u3)

        v1.save()
        v2.save()
        v3.save()

        #test typical cases
        self.assertTrue(has_resume_file(v1.id))

        #test non-existant cases
        self.assertFalse(has_resume_file(v2.id))
        self.assertFalse(has_resume_file(v3.id))
Пример #34
0
    def test_get_volunteer_shift_by_id(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 where signed up
        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)

        self.assertEqual(
            get_volunteer_shift_by_id(v1.id, s1.id), VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s1.id)
        )
        self.assertEqual(
            get_volunteer_shift_by_id(v1.id, s2.id), VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s2.id)
        )
        self.assertEqual(
            get_volunteer_shift_by_id(v1.id, s3.id), VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s3.id)
        )

        # self.assertEqual(get_volunteer_shift_by_id(v2.id, s1.id),
        # VolunteerShift.objects.get(volunteer_id=v2.id, shift_id=s1.id))
        # why does this throw DoesNotExist?
        self.assertEqual(
            get_volunteer_shift_by_id(v2.id, s2.id), VolunteerShift.objects.get(volunteer_id=v2.id, shift_id=s2.id)
        )
        self.assertEqual(
            get_volunteer_shift_by_id(v2.id, s3.id), VolunteerShift.objects.get(volunteer_id=v2.id, shift_id=s3.id)
        )
Пример #35
0
    def test_delete_volunteer(self):

        u1 = User.objects.create_user('Yoshi')
        u2 = User.objects.create_user('Ashley')
        u3 = User.objects.create_user('Zelda')

        v1 = Volunteer(first_name="Yoshi",
                       last_name="Doe",
                       address="7 Oak Street",
                       city="Elmgrove",
                       state="California",
                       country="USA",
                       phone_number="23454545",
                       email="*****@*****.**",
                       user=u1)

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

        v3 = Volunteer(id=999,
                       first_name="Zelda",
                       last_name="Doe",
                       address="7 Elm Street",
                       city="Oakgrove",
                       state="California",
                       country="USA",
                       phone_number="23454545",
                       email="*****@*****.**",
                       user=u3)

        v1.save()
        v2.save()
        v3.save()

        delete_volunteer(v1.id)
        delete_volunteer(v2.id)
        delete_volunteer(v3.id)
Пример #36
0
    def test_edit_shift_hours(self):

        u1 = User.objects.create_user('Yoshi')

        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)

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

        j1.save()

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

        s1.save()

        register(v1.id, s1.id)
        self.assertIsNotNone(
            VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s1.id))

        start_time = datetime.time(hour=9, minute=0)
        end_time = datetime.time(hour=10, minute=0)
        add_shift_hours(v1.id, s1.id, start_time, end_time)

        start_time = datetime.time(hour=10, minute=0)
        end_time = datetime.time(hour=11, minute=0)
        edit_shift_hours(v1.id, s1.id, start_time, end_time)
        volunteer_shift = VolunteerShift.objects.get(volunteer_id=v1.id,
                                                     shift_id=s1.id)
        self.assertIsNotNone(volunteer_shift.start_time)
        self.assertIsNotNone(volunteer_shift.end_time)
        self.assertEqual(volunteer_shift.start_time, start_time)
        self.assertEqual(volunteer_shift.end_time, end_time)

        start_time = datetime.time(hour=1, minute=0)
        end_time = datetime.time(hour=4, minute=0)
        edit_shift_hours(v1.id, s1.id, start_time, end_time)
        volunteer_shift = VolunteerShift.objects.get(volunteer_id=v1.id,
                                                     shift_id=s1.id)
        self.assertIsNotNone(volunteer_shift.start_time)
        self.assertIsNotNone(volunteer_shift.end_time)
        self.assertEqual(volunteer_shift.start_time, start_time)
        self.assertEqual(volunteer_shift.end_time, end_time)

        start_time = datetime.time(hour=4, minute=15)
        end_time = datetime.time(hour=12, minute=35)
        edit_shift_hours(v1.id, s1.id, start_time, end_time)
        volunteer_shift = VolunteerShift.objects.get(volunteer_id=v1.id,
                                                     shift_id=s1.id)
        self.assertIsNotNone(volunteer_shift.start_time)
        self.assertIsNotNone(volunteer_shift.end_time)
        self.assertEqual(volunteer_shift.start_time, start_time)
        self.assertEqual(volunteer_shift.end_time, end_time)

        start_time = datetime.time(hour=2, minute=5)
        end_time = datetime.time(hour=4, minute=15)
        edit_shift_hours(v1.id, s1.id, start_time, end_time)
        volunteer_shift = VolunteerShift.objects.get(volunteer_id=v1.id,
                                                     shift_id=s1.id)
        self.assertIsNotNone(volunteer_shift.start_time)
        self.assertIsNotNone(volunteer_shift.end_time)
        self.assertEqual(volunteer_shift.start_time, start_time)
        self.assertEqual(volunteer_shift.end_time, end_time)

        start_time = datetime.time(hour=5, minute=0)
        end_time = datetime.time(hour=5, minute=30)
        edit_shift_hours(v1.id, s1.id, start_time, end_time)
        volunteer_shift = VolunteerShift.objects.get(volunteer_id=v1.id,
                                                     shift_id=s1.id)
        self.assertIsNotNone(volunteer_shift.start_time)
        self.assertIsNotNone(volunteer_shift.end_time)
        self.assertEqual(volunteer_shift.start_time, start_time)
        self.assertEqual(volunteer_shift.end_time, end_time)
Пример #37
0
    def test_get_volunteers_ordered_by_first_name(self):

        u1 = User.objects.create_user('Yoshi')
        u2 = User.objects.create_user('Ashley')
        u3 = User.objects.create_user('Zelda')

        v1 = Volunteer(first_name="Yoshi",
                       last_name="Doe",
                       address="7 Oak Street",
                       city="Elmgrove",
                       state="California",
                       country="USA",
                       phone_number="23454545",
                       email="*****@*****.**",
                       user=u1)

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

        v3 = Volunteer(id=999,
                       first_name="Zelda",
                       last_name="Doe",
                       address="7 Elm Street",
                       city="Oakgrove",
                       state="California",
                       country="USA",
                       phone_number="23454545",
                       email="*****@*****.**",
                       user=u3)

        v1.save()
        v2.save()
        v3.save()

        #test typical cases
        volunteer_list = get_volunteers_ordered_by_first_name()
        self.assertIsNotNone(volunteer_list)
        self.assertIn(v1, volunteer_list)
        self.assertIn(v2, volunteer_list)
        self.assertIn(v3, volunteer_list)
        self.assertEqual(len(volunteer_list), 3)

        #test if in correct order
        self.assertEqual(volunteer_list[0], v2)
        self.assertEqual(volunteer_list[1], v1)
        self.assertEqual(volunteer_list[2], v3)
Пример #38
0
    def test_clear_shift_hours(self):

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

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

        v1.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()

        register(v1.id, s1.id)
        self.assertIsNotNone(VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s1.id))

        register(v1.id, s2.id)
        self.assertIsNotNone(VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s2.id))

        register(v1.id, s3.id)
        self.assertIsNotNone(VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s3.id))

        start_time = datetime.time(hour=9, minute=0)
        end_time = datetime.time(hour=10, minute=0)
        add_shift_hours(v1.id, s1.id, start_time, end_time)

        start_time = datetime.time(hour=10, minute=0)
        end_time = datetime.time(hour=12, minute=0)
        add_shift_hours(v1.id, s2.id, start_time, end_time)

        start_time = datetime.time(hour=5, minute=0)
        end_time = datetime.time(hour=6, minute=0)
        add_shift_hours(v1.id, s3.id, start_time, end_time)

        clear_shift_hours(v1.id, s1.id)
        volunteer_shift = VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s1.id)
        self.assertIsNone(volunteer_shift.start_time)
        self.assertIsNone(volunteer_shift.end_time)

        clear_shift_hours(v1.id, s2.id)
        volunteer_shift = VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s2.id)
        self.assertIsNone(volunteer_shift.start_time)
        self.assertIsNone(volunteer_shift.end_time)

        clear_shift_hours(v1.id, s3.id)
        volunteer_shift = VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s3.id)
        self.assertIsNone(volunteer_shift.start_time)
        self.assertIsNone(volunteer_shift.end_time)
Пример #39
0
    def test_get_shifts_signed_up_for(self):

        u1 = User.objects.create_user('Yoshi')     

        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)

        v1.save()

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

        j2 = Job(job_title = "Systems Administrator",
                start_date = "2012-9-1",
                end_date = "2012-10-26",
                description = "A systems administrator job")
        
        j1.save()
        j2.save()

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

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

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

        s1.save()
        s2.save()
        s3.save()
    
        #sign up
        register(v1.id, s1.id)
        register(v1.id, s2.id)
        register(v1.id, s3.id)

        #test typical case
        shift_list = get_shifts_signed_up_for(v1.id)
        self.assertIsNotNone(shift_list)
        self.assertNotEqual(shift_list, False)
        self.assertEqual(len(shift_list), 3)
        self.assertIn(s1, shift_list)
        self.assertIn(s2, shift_list)
        self.assertIn(s3, shift_list)
Пример #40
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)
Пример #41
0
    def test_search_volunteers(self):
 
        u1 = User.objects.create_user('Yoshi')
        u2 = User.objects.create_user('Ashley')
        u3 = User.objects.create_user('Zelda')

        o1 = Organization(organization_name = "Apple")
        o2 = Organization(organization_name = "Google")

        o1.save()
        o2.save()

        v1 = Volunteer(first_name = "Yoshi",
                        last_name = "Doe",
                        address = "7 Oak Street",
                        city = "Elmgrove",
                        state = "California",
                        country = "USA",
                        phone_number = "23454545",
                        organization = o1,
                        email = "*****@*****.**",
                        user = u1)

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

        v3 = Volunteer(id = 999,
                        first_name = "Zelda",
                        last_name = "Doe",
                        address = "7 Elm Street",
                        city = "Oakgrove",
                        state = "California",
                        country = "USA",
                        phone_number = "23454545",
                        unlisted_organization = "Government of Canada",
                        email = "*****@*****.**",
                        user = u3)               

        v1.save()
        v2.save()
        v3.save()

        #if no search parameters are given, it returns all volunteers 
        search_list = search_volunteers("", "", "", "", "", "")
        self.assertNotEqual(search_list, False)
        self.assertEqual(len(search_list), 3)
        self.assertIn(v1, search_list)
        self.assertIn(v2, search_list)
        self.assertIn(v3, search_list)

        search_list = search_volunteers(None, None, None, None, None, None)
        self.assertNotEqual(search_list, False)
        self.assertEqual(len(search_list), 3)
        self.assertIn(v1, search_list)
        self.assertIn(v2, search_list)
        self.assertIn(v3, search_list)

        #test exact search
        search_list = search_volunteers("Yoshi", "Doe", "Elmgrove", "California", "USA", "Apple")
        self.assertNotEqual(search_list, False)
        self.assertEqual(len(search_list), 1)
        self.assertIn(v1, search_list)
        self.assertNotIn(v2, search_list)
        self.assertNotIn(v3, search_list)

        #test partial search
        search_list = search_volunteers("Yoshi", None, None, None, None, None)
        self.assertNotEqual(search_list, False)
        self.assertEqual(len(search_list), 1)
        self.assertIn(v1, search_list)
        self.assertNotIn(v2, search_list)
        self.assertNotIn(v3, search_list)

        search_list = search_volunteers(None, "Doe", None, None, None, None)
        self.assertNotEqual(search_list, False)
        self.assertEqual(len(search_list), 3)
        self.assertIn(v1, search_list)
        self.assertIn(v2, search_list)
        self.assertIn(v3, search_list)

        #test no search matches
        search_list = search_volunteers("Billy", "Doe", "Montreal", "Quebec", "Canada", "Ubisoft")
        self.assertEqual(len(search_list), 0)
        self.assertNotIn(v1, search_list)
        self.assertNotIn(v2, search_list)
        self.assertNotIn(v3, search_list)
Пример #42
0
    def test_clear_shift_hours(self):

        u1 = User.objects.create_user('Yoshi')

        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)

        v1.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()

        register(v1.id, s1.id)
        self.assertIsNotNone(
            VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s1.id))

        register(v1.id, s2.id)
        self.assertIsNotNone(
            VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s2.id))

        register(v1.id, s3.id)
        self.assertIsNotNone(
            VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s3.id))

        start_time = datetime.time(hour=9, minute=0)
        end_time = datetime.time(hour=10, minute=0)
        add_shift_hours(v1.id, s1.id, start_time, end_time)

        start_time = datetime.time(hour=10, minute=0)
        end_time = datetime.time(hour=12, minute=0)
        add_shift_hours(v1.id, s2.id, start_time, end_time)

        start_time = datetime.time(hour=5, minute=0)
        end_time = datetime.time(hour=6, minute=0)
        add_shift_hours(v1.id, s3.id, start_time, end_time)

        clear_shift_hours(v1.id, s1.id)
        volunteer_shift = VolunteerShift.objects.get(volunteer_id=v1.id,
                                                     shift_id=s1.id)
        self.assertIsNone(volunteer_shift.start_time)
        self.assertIsNone(volunteer_shift.end_time)

        clear_shift_hours(v1.id, s2.id)
        volunteer_shift = VolunteerShift.objects.get(volunteer_id=v1.id,
                                                     shift_id=s2.id)
        self.assertIsNone(volunteer_shift.start_time)
        self.assertIsNone(volunteer_shift.end_time)

        clear_shift_hours(v1.id, s3.id)
        volunteer_shift = VolunteerShift.objects.get(volunteer_id=v1.id,
                                                     shift_id=s3.id)
        self.assertIsNone(volunteer_shift.start_time)
        self.assertIsNone(volunteer_shift.end_time)
Пример #43
0
    def test_add_shift_hours(self):

        u1 = User.objects.create_user('Yoshi')     

        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)

        v1.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()

        #register will return an exception on error (such as when invalid parameters are passed)
        #if an exception does get raised, this test will automatically fail
        register(v1.id, s1.id)
        self.assertIsNotNone(VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s1.id))

        register(v1.id, s2.id)
        self.assertIsNotNone(VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s2.id))

        register(v1.id, s3.id)
        self.assertIsNotNone(VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s3.id))

        start_time = datetime.time(hour=9, minute=0)
        end_time = datetime.time(hour=10, minute=0)
        add_shift_hours(v1.id, s1.id, start_time, end_time)
        volunteer_shift = VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s1.id);
        self.assertEqual(volunteer_shift.start_time, start_time)
        self.assertEqual(volunteer_shift.end_time, end_time)

        start_time = datetime.time(hour=10, minute=0)
        end_time = datetime.time(hour=12, minute=0)
        add_shift_hours(v1.id, s2.id, start_time, end_time)
        volunteer_shift = VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s2.id);
        self.assertEqual(volunteer_shift.start_time, start_time)
        self.assertEqual(volunteer_shift.end_time, end_time)

        start_time = datetime.time(hour=5, minute=0)
        end_time = datetime.time(hour=6, minute=0)
        add_shift_hours(v1.id, s3.id, start_time, end_time)
        volunteer_shift = VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s3.id);
        self.assertEqual(volunteer_shift.start_time, start_time)
        self.assertEqual(volunteer_shift.end_time, end_time)
Пример #44
0
    def test_get_unlogged_shifts_by_volunteer_id(self):

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

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

        v1.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()

        # sign up
        register(v1.id, s1.id)
        register(v1.id, s2.id)
        register(v1.id, s3.id)

        # test typical case
        shift_list = get_unlogged_shifts_by_volunteer_id(v1.id)
        self.assertIsNotNone(shift_list)
        self.assertNotEqual(shift_list, False)
        self.assertEqual(len(shift_list), 3)
        self.assertIn(s1, shift_list)
        self.assertIn(s2, shift_list)
        self.assertIn(s3, shift_list)