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