def assign(request, week_id): """ Assigns a person to a week """ week = get_object_or_404(Week, pk=week_id) if request.method == 'POST': form = WeekDayPersonHoursAssignForm(request.POST) if form.is_valid(): form.save() return HttpResponseRedirect('../view/') else: person_hours = WeekDayPersonHours() person_hours.week = week form = WeekDayPersonHoursAssignForm(instance=person_hours) data = {} data['title'] = 'Assign Week' data['form'] = form data['week'] = week return direct_to_template(request, 'admin/board/week/assign.html', data)
def populate(request, week_id): """ (re)Populates Week with all people and their default hours """ week = get_object_or_404(Week, pk=week_id) persons_hours = WeekDayPersonHours.objects.filter(week=week) for hours in persons_hours: hours.delete() persons = Person.objects.all() for person in persons: for day in range(0, 5): person_hours = WeekDayPersonHours() person_hours.week = week person_hours.person = person person_hours.available_hours = person.default_hours_per_day person_hours.day = day person_hours.save() return HttpResponseRedirect('../view/')
def index(request): """ Keeps the "week" table populated with plenty of weeks. """ days_per_week = 5 number_of_weeks = 6 weekday_number = (datetime.datetime.isoweekday(datetime.date.today()) - 1) week_start = datetime.date.today() - datetime.timedelta(weekday_number) # Do we need to create any new weeks, or are there already enough? weeks = Week.objects.filter(start_date__gte = week_start) if len(weeks) >= number_of_weeks: return HttpResponse('OK') # Not enough weeks in the database, so create some. developers = Person.objects.all() if len(weeks) > 0: week_start = weeks[len(weeks) - 1].start_date + datetime.timedelta(7) for i in range(0, (6 - len(weeks))): new_week = Week(start_date = week_start) new_week.save() week_start = week_start + datetime.timedelta(7) # Add developer hours to each week. for developer in developers: for day in range(0, days_per_week): week_day_person_hours = WeekDayPersonHours() week_day_person_hours.week = new_week week_day_person_hours.person = developer week_day_person_hours.available_hours = developer.default_hours_per_day week_day_person_hours.day = day week_day_person_hours.save() return HttpResponse('OK')