예제 #1
0
def history(request, slug):
    sheet = get_object_or_404(Sheet, slug=slug)
    mark_set = SheetAPI.get_marks_for_sheet(sheet).values()
    history_items_list = []
    for marks in mark_set:
        for mark in marks:
            for revision in reversion.get_for_object(mark).all():
                history_items_list.append(revision)
    history_items_list.sort(key=lambda item: item.revision.date_created, reverse=True)

    history_items_list = [
        history_item.revision.comment + timezone.localtime(history_item.revision.date_created).strftime(
            '(%y-%m-%d %H:%m:%S)') for
        history_item in history_items_list]

    paginator = Paginator(history_items_list, 5)
    page = request.GET.get('page')
    try:
        history_items = paginator.page(page)
    except PageNotAnInteger:
        history_items = paginator.page(1)
    except EmptyPage:
        history_items = paginator.page(paginator.num_pages)

    return render(request, 'history.html', {
        'history_items': history_items
    })
예제 #2
0
def get_marks(request, slug):
    sheet = get_object_or_404(Sheet, slug=slug)
    sheet_marks = SheetAPI.get_marks_for_sheet(sheet)
    mark_sets_json_dict = list()
    for student, students_marks in sheet_marks.items():
        marks_json_dict = list()
        for mark in students_marks:
            mark_json = mark.as_json_dict
            versions = reversion.get_for_object(mark)[:2]
            if versions.count() >= 2:
                first_revision = versions[0].revision
                second_revision = versions[1].revision
                if (
                    second_revision.user == request.user
                    and first_revision.user != second_revision.user
                    and (first_revision.date_created - second_revision.date_created).seconds < 10
                ):
                    mark_json["warning"] = True
            marks_json_dict.append(mark_json)
            if mark.user_with_lock:
                now = timezone.now()
                time_delta = now - mark.user_with_lock.profile.last_activity
                if time_delta.total_seconds() > 15:
                    mark.set_user_with_lock(None)
        mark_sets_json_dict.append(dict(student=UserAPI.as_json_dict(student, sheet), marks=marks_json_dict))
    mark_sets_json_dict = sorted(mark_sets_json_dict, key=lambda item: item["student"]["fullName"].split(" ")[1])
    return JsonResponse(mark_sets_json_dict, safe=False)