def triple_homepage(request): if not request.course: return HttpResponseRedirect('/accounts/login/') logged_in_user = request.user classwork_owner = request.user # Viewing your own work by default if request.GET.has_key('username'): user_name = request.GET['username'] in_course_or_404(user_name, request.course) classwork_owner = get_object_or_404(User, username=user_name) context = { 'classwork_owner': classwork_owner, 'help_homepage_instructor_column': UserSetting.get_setting(logged_in_user, "help_homepage_instructor_column", True), 'help_homepage_classwork_column': UserSetting.get_setting(logged_in_user, "help_homepage_classwork_column", True), 'faculty_feed': get_prof_feed(request.course, request), 'is_faculty': request.course.is_faculty(logged_in_user), 'discussions': get_course_discussions(request.course), 'msg': request.GET.get('msg', ''), 'tag': request.GET.get('tag', ''), 'view': request.GET.get('view', '') } return context
def mediathread_activity_by_school(request): """STAFF ONLY reporting of entire application activity """ if not request.user.is_staff: return HttpResponseForbidden("forbidden") response = HttpResponse(mimetype='text/csv') response['Content-Disposition'] = \ 'attachment; filename=mediathread_activity_by_school.csv' writer = csv.writer(response) headers = ['School', 'Items', 'Selections', 'Compositions', 'Assignments', 'Discussions'] writer.writerow(headers) rows = {} for c in Course.objects.all().order_by('-id'): if not (c.faculty_group.name.startswith('t1') or c.faculty_group.name.startswith('t2') or c.faculty_group.name.startswith('t3')): continue bits = c.faculty_group.name.split('.') school = bits[4] if not school in rows: row = [school, 0, 0, 0, 0, 0] rows[school] = row items = Asset.objects.filter(course=c) rows[school][1] += len(items) selections = SherdNote.objects.filter(asset__course=c) rows[school][2] += len(selections) compositions = 0 assignments = 0 projects = Project.objects.filter(course=c) for p in projects: if p.visibility_short() == 'Assignment': assignments += 1 else: compositions += 1 rows[school][3] += compositions rows[school][4] += assignments try: rows[school][5] += len(get_course_discussions(c)) except Collaboration.DoesNotExist: pass # no discussions exist, that's ok for row in rows.values(): try: writer.writerow(row) except: pass return response
def triple_homepage(request): c = request.course if not c: return HttpResponseRedirect('/accounts/login/') user = request.user user_records = { 'space_viewer': user, 'space_owner' : user, "help_homepage_instructor_column": UserSetting.get_setting(user, "help_homepage_instructor_column", True), "help_homepage_classwork_column": UserSetting.get_setting(user, "help_homepage_classwork_column", True) } prof_feed = get_prof_feed(c, request) discussions = get_course_discussions(c) full_prof_list = [] for lis in (prof_feed['projects'], prof_feed['assignments'], discussions,): full_prof_list.extend(lis) full_prof_list.sort(lambda a, b:cmp(a.title.lower(), b.title.lower())) user_records.update({ 'faculty_feed': prof_feed, 'instructor_full_feed': full_prof_list, 'is_faculty': c.is_faculty(user), 'display': { 'instructor': prof_feed['show'], 'course': (len(prof_feed['tags']) < 5) }, 'discussions': discussions, 'msg': request.GET.get('msg', ''), 'tag': request.GET.get('tag', ''), 'view': request.GET.get('view', '') }) return user_records
def mediathread_activity_by_course(request): """STAFF ONLY reporting of entire application activity """ if not request.user.is_staff: return HttpResponseForbidden("forbidden") response = HttpResponse(mimetype='text/csv') response['Content-Disposition'] = \ 'attachment; filename=mediathread_activity_by_course.csv' writer = csv.writer(response) headers = ['Id', 'Title', 'Instructor', 'Course String', 'Term', 'Year', 'Section', 'Course Number', 'School', 'Students', 'Items', 'Selections', 'Compositions', 'Assignments', 'Discussions'] writer.writerow(headers) rows = [] for c in Course.objects.all().order_by('-id'): if not (c.faculty_group.name.startswith('t1') or c.faculty_group.name.startswith('t2') or c.faculty_group.name.startswith('t3')): continue row = [] row.append(c.id) row.append(c.title) if 'instructor' in c.details(): row.append(c.details()['instructor'].value) else: row.append('') course_string = c.faculty_group.name row.append(course_string) bits = c.faculty_group.name.split('.') row.append(bits[0]) # term row.append(bits[1][1:]) # year row.append(bits[2]) # section row.append(bits[3]) # courseNo row.append(bits[4]) # school row.append(len(c.students)) items = Asset.objects.filter(course=c) row.append(len(items)) selections = SherdNote.objects.filter(asset__course=c) row.append(len(selections)) compositions = 0 assignments = 0 projects = Project.objects.filter(course=c) for p in projects: if p.visibility_short() == 'Assignment': assignments += 1 else: compositions += 1 row.append(compositions) row.append(assignments) try: row.append(len(get_course_discussions(c))) except Collaboration.DoesNotExist: row.append(0) rows.append(row) for row in rows: try: writer.writerow(row) except: pass return response
def triple_homepage(request): if not request.course: return HttpResponseRedirect('/accounts/login/') logged_in_user = request.user classwork_owner = request.user # Viewing your own work by default if 'username' in request.GET: user_name = request.GET['username'] in_course_or_404(user_name, request.course) classwork_owner = get_object_or_404(User, username=user_name) c = request.course archives = [] upload_archive = None for a in c.asset_set.archives().order_by('title'): archive = a.sources['archive'] thumb = a.sources.get('thumb', None) description = a.metadata().get('description', '') uploader = a.metadata().get('upload', 0) archive_context = { "id": a.id, "title": a.title, "thumb": (None if not thumb else {"id": thumb.id, "url": thumb.url}), "archive": {"id": archive.id, "url": archive.url}, "metadata": (description[0] if hasattr(description, 'append') else description) } if (uploader[0] if hasattr(uploader, 'append') else uploader): upload_archive = archive_context else: archives.append(archive_context) archives.sort(key=operator.itemgetter('title')) show_tour = should_show_tour(request, c, logged_in_user) owners = [] if (in_course(logged_in_user.username, request.course) and (logged_in_user.is_staff or logged_in_user.has_perm('assetmgr.can_upload_for'))): owners = UserResource().render_list(request, request.course.members) discussions = get_course_discussions(c) context = { 'classwork_owner': classwork_owner, 'help_homepage_instructor_column': False, 'help_homepage_classwork_column': False, 'faculty_feed': get_prof_feed(c, request), 'is_faculty': c.is_faculty(logged_in_user), 'discussions': discussions, 'msg': request.GET.get('msg', ''), 'view': request.GET.get('view', ''), 'archives': archives, 'upload_archive': upload_archive, 'can_upload': course_details.can_upload(request.user, request.course), 'show_tour': show_tour, 'owners': owners } if getattr(settings, 'DJANGOSHERD_FLICKR_APIKEY', None): # MUST only contain string values for now!! # (see templates/assetmgr/bookmarklet.js to see why or fix) context['bookmarklet_vars'] = { 'flickr_apikey': settings.DJANGOSHERD_FLICKR_APIKEY } return context