def show_components_submission_history(request, course_slug, activity_slug, userid=None): if userid is None: userid = request.GET.get('userid') course = get_object_or_404(CourseOffering, slug=course_slug) activity = get_object_or_404(course.activity_set,slug = activity_slug, deleted=False) staff = False if userid is None: # can always see your own submissions userid = request.user.username else: # specifying a userid: must be course staff if is_course_staff_by_slug(request, course.slug): staff = True else: return ForbiddenResponse(request) member = get_object_or_404(Member, find_member(userid), offering=course) if activity.group: messages.add_message(request, messages.INFO, "This is a group submission. This history is based on submissions from all your group members.") gms = GroupMember.objects.filter(student=member, confirmed=True, activity=activity) submissions = GroupSubmission.objects.filter(activity=activity, group__groupmember__in=gms) else: submissions = StudentSubmission.objects.filter(activity=activity, member=member) # get all submission components component_list = select_all_components(activity, include_deleted=staff) all_submitted_components = [] for submission in submissions: c = get_submission_components(submission, activity, component_list) all_submitted_components.append({'sub':submission, 'comp':c}) return render(request, "submission/submission_history_view.html", {"course":course, "activity":activity,'userid':userid,'submitted_components': all_submitted_components})
def show_components_submission_history(request, course_slug, activity_slug, userid=None): offering = get_object_or_404(CourseOffering, slug=course_slug) activity = get_object_or_404(offering.activity_set, slug=activity_slug, deleted=False) staff = False userid = userid or request.user.username member = get_object_or_404(Member, find_member(userid), offering=offering) submission_info = SubmissionInfo(student=member.person, activity=activity) submission_info.get_all_components() if not submission_info.accessible_by(request): return ForbiddenResponse(request) return render(request, "submission/submission_history_view.html", {"offering":offering, "activity":activity, 'userid':userid, 'submission_info': submission_info})
def take_ownership_and_mark(request, course_slug, activity_slug, userid=None, group_slug=None): course = get_object_or_404(CourseOffering, slug=course_slug) activity = get_object_or_404(course.activity_set, slug=activity_slug, deleted=False) # get the urlencode qDict = request.GET urlencode = '' if qDict.items(): urlencode = '?' + qDict.urlencode() if userid: student = get_object_or_404(Member, find_member(userid), role='STUD', offering=course) try: if activity.group is True: member = GroupMember.objects.filter(activity=activity, student=student, confirmed=True) submission = GroupSubmission.objects.filter(activity=activity, group=member[0].group).latest('created_at') else: submission = StudentSubmission.objects.filter(member=student, activity=activity).latest('created_at') except: submission = None response = HttpResponseRedirect(reverse(marking_student, args=[course_slug, activity_slug, userid]) + urlencode) #if it is taken by someone not me, show a confirm dialog if request.GET.get('confirm') == None: # check disabled until such time as it can be fixed if False and submission and submission.owner and submission.owner.person.userid != request.user.username: return _override_ownership_confirm(request, course, activity, userid, None, submission.owner.person, urlencode[1:]) if submission: submission.set_owner(course, request.user.username) #LOG EVENT# if submission: str = (" of submission %i") % (submission.id) else: str = "" l = LogEntry(userid=request.user.username, description=(u"took ownership on %s" + str + " by %s") % (activity, userid), related_object=student) l.save() return response elif group_slug: try: submission = GroupSubmission.objects.filter(group__slug=group_slug).latest('created_at') except: submission = None response = HttpResponseRedirect(reverse(marking_group, args=[course_slug, activity_slug, group_slug]) + urlencode) #if it is taken by someone not me, show a confirm dialog if request.GET.get('confirm') == None: # check disabled until such time as it can be fixed if False and submission and submission.owner and submission.owner.person.userid != request.user.username: return _override_ownership_confirm(request, course, activity, None, group_slug, submission.owner.person, urlencode[1:]) if submission: submission.set_owner(course, request.user.username) #LOG EVENT# groups = Group.objects.all().filter(courseoffering=course) group = get_object_or_404(groups, slug=group_slug) if submission: str = (" of submission %i by group %s") % (submission.id, submission.file_slug()) else: str = "" l = LogEntry(userid=request.user.username, description=(u"took ownership on %s"+str+ " by group %s") % (activity, group.name), related_object=group) l.save() return response