示例#1
0
def unfinalized_week(user):
  current_term = Term.current_term()
  if date.today() < current_term.start:
      return None
    # current week = up to week we want to access + 1
  current_week = Term.reverse_date(current_term, date.today())[0]
  if date.today() <= current_term.startdate_of_week(current_week) + timedelta(1):
      # Cannot access past week's because today is less than Wednesday
      current_week = current_week - 1
  for week in range(0, current_week):
    if not is_week_finalized(user, week):
      return week
  return None
示例#2
0
def unfinalized_service(user):
  # return list of service_id and week
  if has_designated_service(user):
    current_term = Term.current_term()
    if date.today() < current_term.start:
      return None
    # current week = up to week we want to access + 1
    current_week = Term.reverse_date(current_term, datetime.date.today())[0]
    worker = trainee_from_user(user).worker
    designated_services = worker.designated.all()
    if date.today() <= current_term.startdate_of_week(current_week) + timedelta(1):
      # Cannot access past week's because today is less than Wednesday
      current_week = current_week - 1
    for service in designated_services:
      for week in range(0, current_week):
        serv_att = ServiceAttendance.objects.filter(designated_service=service, worker=worker, term=current_term, week=week)
        if not serv_att.exists():
          return [service.id, week]
        elif not serv_att.first().excused and serv_att.first().get_service_hours() == 0:
          return [service.id, week]
  return None
示例#3
0
def index(request):
    my_user = request.user
    if is_TA(my_user):
        first = Trainee.objects.first().pk
        my_user = Trainee.objects.get(pk=request.GET.get('userId', first))

    # Default for Daily Bible Reading
    listJSONRenderer = JSONRenderer()
    l_render = listJSONRenderer.render
    trainees = Trainee.objects.all()
    trainees_bb = l_render(BasicUserSerializer(trainees, many=True).data)
    current_term = Term.current_term()
    term_id = current_term.id
    start_date = current_term.start.strftime('%Y%m%d')

    current_date = datetime.date.today()
    try:
        current_week = Term.reverse_date(current_term, current_date)[0]
    except ValueError:
        current_week = 19
    term_week_code = str(term_id) + "_" + str(current_week)

    try:
        trainee_bible_reading = BibleReading.objects.get(trainee=my_user)
        user_checked_list = trainee_bible_reading.books_read
    except ObjectDoesNotExist:
        user_checked_list = {}
        trainee_bible_reading = BibleReading(
            trainee=trainee_from_user(my_user),
            weekly_reading_status={term_week_code: EMPTY_WEEK_CODE_QUERY},
            books_read={})
        trainee_bible_reading.save()
    except MultipleObjectsReturned:
        return HttpResponse(
            'Multiple bible reading records found for trainee!')

    first_year_checked_list, first_year_progress = calcFirstYearProgress(
        user_checked_list)
    second_year_checked_list, second_year_progress = calcSecondYearProgress(
        user_checked_list)

    weekly_status = EMPTY_WEEKLY_STATUS
    finalized_str = UNFINALIZED_STR
    if term_week_code in trainee_bible_reading.weekly_reading_status:
        weekly_reading = trainee_bible_reading.weekly_reading_status[
            term_week_code]
        json_weekly_reading = json.loads(weekly_reading)
        weekly_status = str(json_weekly_reading['status'])
        finalized_str = str(json_weekly_reading['finalized'])

    # Send data to the template!!!
    context = {
        'bible_books_list': bible_books_list,
        'first_year_checked_list': first_year_checked_list,
        'second_year_checked_list': second_year_checked_list,
        'first_year_progress': first_year_progress,
        'second_year_progress': second_year_progress,
        'weekly_status': weekly_status,
        'current_week': current_week,
        'start_date': start_date,
        'finalized': finalized_str,
        'trainees_bb': trainees_bb,
        'trainee': my_user,
    }
    return render(request, 'bible_tracker/index.html', context=context)