def get_context_data(self, **kwargs): context = super(ManageVolunteerShiftView, self).get_context_data(**kwargs) volunteer_id = self.kwargs['volunteer_id'] context['volunteer'] = get_volunteer_by_id(volunteer_id) context['shift_list'] = get_unlogged_shifts_by_volunteer_id( volunteer_id) context['shift_list_with_hours'] = get_volunteer_shifts_with_hours( volunteer_id) return context
def get_context_data(self, **kwargs): context = super(ManageVolunteerShiftView, self).get_context_data( **kwargs) volunteer_id = self.kwargs['volunteer_id'] context['volunteer'] = get_volunteer_by_id(volunteer_id) context['shift_list'] = get_unlogged_shifts_by_volunteer_id( volunteer_id) context['shift_list_with_hours'] = get_volunteer_shifts_with_hours( volunteer_id) return context
def get_context_data(self, **kwargs): context = super(ViewHoursView, self).get_context_data(**kwargs) volunteer_id = self.kwargs['volunteer_id'] context['volunteer'] = get_volunteer_by_id(volunteer_id) context['shift_list'] = \ get_unlogged_shifts_by_volunteer_id(volunteer_id) context['logged_volunteer_shift_list'] = \ get_volunteer_shifts_with_hours(volunteer_id) context['init_date'] = timezone.now() - timedelta(days=7) return context
def test_get_unlogged_shifts_by_volunteer_id(self): """ Uses shifts s1, s2 and volunteer v1 """ # sign up register(self.v1.id, self.s1.id) register(self.v1.id, self.s2.id) start_time = datetime.time(hour=9, minute=0) end_time = datetime.time(hour=10, minute=0) add_shift_hours(self.v1.id, self.s1.id, start_time, end_time) # test typical case shift_list = get_unlogged_shifts_by_volunteer_id(self.v1.id) self.assertIsNotNone(shift_list) self.assertNotEqual(shift_list, False) self.assertEqual(len(shift_list), 1) self.assertNotIn(self.s1, shift_list) self.assertIn(self.s2, shift_list) self.assertNotIn(self.s3, shift_list)
def test_get_unlogged_shifts_by_volunteer_id(self): """ Uses shifts s1, s2 and volunteer v1 """ # sign up register(self.v1.id, self.s1.id) register(self.v1.id, self.s2.id) start_time = datetime.time(hour=9, minute=0) end_time = datetime.time(hour=10, minute=0) add_shift_hours(self.v1.id, self.s1.id, start_time, end_time) # test typical case shift_list = get_unlogged_shifts_by_volunteer_id(self.v1.id) self.assertIsNotNone(shift_list) self.assertNotEqual(shift_list, False) self.assertEqual(len(shift_list), 1) self.assertNotIn(self.s1, shift_list) self.assertIn(self.s2, shift_list) self.assertNotIn(self.s3, shift_list)
def get_signed_up_events_for_volunteer(volunteer_id): """ Gets sorted list of signed up events for a volunteer """ event_list = [] unsorted_events = [] shift_list_without_hours = get_unlogged_shifts_by_volunteer_id( volunteer_id) shift_list_with_hours = get_volunteer_shifts_with_hours(volunteer_id) for shift_with_hours in shift_list_with_hours: event_name = str(shift_with_hours.shift.job.event.name) if event_name not in unsorted_events: unsorted_events.append(event_name) for shift in shift_list_without_hours: event_name = str(shift.job.event.name) if event_name not in unsorted_events: unsorted_events.append(event_name) # for sorting events alphabetically for event in sorted(unsorted_events, key=str.lower): event_list.append(event) return event_list
def get_signed_up_jobs_for_volunteer(volunteer_id): """ Gets sorted list of signed up jobs for a volunteer """ unsorted_jobs = [] job_list = [] shift_list_without_hours = get_unlogged_shifts_by_volunteer_id( volunteer_id) shift_list_with_hours = get_volunteer_shifts_with_hours(volunteer_id) for shift_with_hours in shift_list_with_hours: job_name = str(shift_with_hours.shift.job.name) if job_name not in unsorted_jobs: unsorted_jobs.append(job_name) for shift in shift_list_without_hours: job_name = str(shift.job.name) if job_name not in unsorted_jobs: unsorted_jobs.append(job_name) # to sort jobs as per name for job in sorted(unsorted_jobs, key=str.lower): job_list.append(job) return job_list
def get_signed_up_events_for_volunteer(volunteer_id): """ Gets sorted list of signed up events for a volunteer """ event_list = [] unsorted_events = [] shift_list_without_hours = get_unlogged_shifts_by_volunteer_id( volunteer_id) shift_list_with_hours = get_volunteer_shifts_with_hours(volunteer_id) for shift_with_hours in shift_list_with_hours: event_name = str(shift_with_hours.shift.job.event.name) if event_name not in unsorted_events: unsorted_events.append(event_name) for shift in shift_list_without_hours: event_name = str(shift.job.event.name) if event_name not in unsorted_events: unsorted_events.append(event_name) # for sorting events alphabetically for event in sorted(unsorted_events, key=str.lower): event_list.append(event) return event_list
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)
def view_volunteer_shifts(request, volunteer_id): shift_list = get_unlogged_shifts_by_volunteer_id(volunteer_id) return render(request, 'shift/volunteer_shifts.html', { 'shift_list': shift_list, 'volunteer_id': volunteer_id, })