def triple_homepage(request): c = request.course if not c: return HttpResponseRedirect('/accounts/login/') user = request.user if request.GET.has_key('username'): user_name = request.GET['username'] in_course_or_404(user_name, c) user = get_object_or_404(User, username=user_name) elif user.is_staff and request.GET.has_key('as'): user = get_object_or_404(User, username=request.GET['as']) #bad language, we should change this to user_of_assets or something space_viewer = request.user if request.GET.has_key('as') and request.user.is_staff: space_viewer = get_object_or_404(User, username=request.GET['as']) user_records = { 'space_viewer': space_viewer, '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_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 triple_homepage(request): c = request.course if not c: return HttpResponseRedirect('/accounts/login/') user = request.user if request.GET.has_key('username'): user_name = request.GET['username'] in_course_or_404(user_name, c) user = get_object_or_404(User, username=user_name) elif user.is_staff and request.GET.has_key('as'): user = get_object_or_404(User, username=request.GET['as']) #bad language, we should change this to user_of_assets or something space_viewer = request.user if request.GET.has_key('as') and request.user.is_staff: space_viewer = get_object_or_404(User, username=request.GET['as']) user_records = {'space_viewer': space_viewer, 'space_owner': user} prof_feed = get_prof_feed(c, request) discussions = get_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', '') }) return user_records
def class_portal(request): c = request.course if not c: return HttpResponseRedirect('/accounts/login/') user = request.user if user.is_staff and request.GET.has_key('as'): user = get_object_or_404(User,username=request.GET['as']) #instructor focus prof_feed = get_prof_feed(c,request) class_feed =[] #class_feed=Clumper(SherdNote.objects.filter(asset__course=c, # range1__isnull=False), # Comment.objects.filter(object_pk__in = [str(a.pk) for a in assets], # user__in = [u.pk for u in c.members ]), # assets.order_by('-added')[:6], # Project.objects.filter(course=c, # submitted=True).order_by('-modified')[:6] # ) #personal feed my_assets = {} for n in SherdNote.objects.filter(author=user,asset__course=c): my_assets[str(n.asset_id)] = 1 for comment in Comment.objects.filter(user=user): if c == getattr(comment.content_object,'course',None): my_assets[str(comment.object_pk)] = 1 my_discussions = [d.collaboration_id for d in DiscussionIndex.objects .filter(participant=user, collaboration__context=request.collaboration_context )] my_feed=Clumper(Comment.objects .filter(content_type=ContentType.objects.get_for_model(Asset), object_pk__in = my_assets.keys()) .order_by('-submit_date'), #so the newest ones show up SherdNote.objects.filter(asset__in=my_assets.keys(), #no global annotations #warning: if we include global annotations #we need to stop it from autocreating one on-view #of the asset somehow range1__isnull=False ) .order_by('-added'), Project.objects .filter(Q(participants=user.pk)|Q(author=user.pk), course=c) .order_by('-modified'), DiscussionIndex.with_permission(request, DiscussionIndex.objects .filter(Q(Q(asset__in=my_assets.keys()) |Q(collaboration__in=my_discussions) |Q(collaboration__user=request.user) |Q(collaboration__group__user=request.user), participant__isnull=False ) ) .order_by('-modified') ), ) #latest_saves = assets.order_by('-added') #popular_assets = most_popular(assets) tags = Tag.objects.usage_for_queryset( SherdNote.objects.filter(asset__course=c), counts=True) #tag_cloud = calculate_cloud(tags) #only top 10 tags tag_cloud = calculate_cloud(sorted(tags,lambda t,w:cmp(w.count,t.count))[:10]) display = {'instructor':prof_feed['show'], 'course': (len(prof_feed['tags']) < 5 or len(class_feed) >9 ), } discussions = get_discussions(c) #TODO: move this into a nice class method. #coll = ContentType.objects.get_for_model(Collaboration) #discussions = [d for d in ThreadedComment.objects.filter(parent=None, content_type = coll) if d.content_object.get_parent().content_object == c] return { 'is_faculty':c.is_faculty(user), 'faculty_feed':prof_feed, #'class_feed':class_feed, 'my_feed':my_feed, 'display':display, 'discussions' : discussions, 'course_id' : c.id, #'new_assets':latest_saves, #'popular_assets': popular_assets, 'tag_cloud': tag_cloud, }
def class_portal(request): c = request.course if not c: return HttpResponseRedirect('/accounts/login/') user = request.user if user.is_staff and request.GET.has_key('as'): user = get_object_or_404(User, username=request.GET['as']) #instructor focus prof_feed = get_prof_feed(c, request) class_feed = [] #class_feed=Clumper(SherdNote.objects.filter(asset__course=c, # range1__isnull=False), # Comment.objects.filter(object_pk__in = [str(a.pk) for a in assets], # user__in = [u.pk for u in c.members ]), # assets.order_by('-added')[:6], # Project.objects.filter(course=c, # submitted=True).order_by('-modified')[:6] # ) #personal feed my_assets = {} for n in SherdNote.objects.filter(author=user, asset__course=c): my_assets[str(n.asset_id)] = 1 for comment in Comment.objects.filter(user=user): if c == getattr(comment.content_object, 'course', None): my_assets[str(comment.object_pk)] = 1 my_discussions = [ d.collaboration_id for d in DiscussionIndex.objects.filter( participant=user, collaboration__context=request.collaboration_context) ] my_feed = Clumper( Comment.objects.filter( content_type=ContentType.objects.get_for_model(Asset), object_pk__in=my_assets.keys()).order_by( '-submit_date'), #so the newest ones show up SherdNote.objects.filter( asset__in=my_assets.keys(), #no global annotations #warning: if we include global annotations #we need to stop it from autocreating one on-view #of the asset somehow range1__isnull=False).order_by('-added'), Project.objects.filter(Q(participants=user.pk) | Q(author=user.pk), course=c).order_by('-modified'), DiscussionIndex.with_permission( request, DiscussionIndex.objects.filter( Q(Q(asset__in=my_assets.keys()) | Q(collaboration__in=my_discussions) | Q(collaboration__user=request.user) | Q(collaboration__group__user=request.user), participant__isnull=False)).order_by('-modified')), ) #latest_saves = assets.order_by('-added') #popular_assets = most_popular(assets) tags = Tag.objects.usage_for_queryset( SherdNote.objects.filter(asset__course=c), counts=True) #tag_cloud = calculate_cloud(tags) #only top 10 tags tag_cloud = calculate_cloud( sorted(tags, lambda t, w: cmp(w.count, t.count))[:10]) display = { 'instructor': prof_feed['show'], 'course': (len(prof_feed['tags']) < 5 or len(class_feed) > 9), } discussions = get_discussions(c) #TODO: move this into a nice class method. #coll = ContentType.objects.get_for_model(Collaboration) #discussions = [d for d in ThreadedComment.objects.filter(parent=None, content_type = coll) if d.content_object.get_parent().content_object == c] return { 'is_faculty': c.is_faculty(user), 'faculty_feed': prof_feed, #'class_feed':class_feed, 'my_feed': my_feed, 'display': display, 'discussions': discussions, 'course_id': c.id, #'new_assets':latest_saves, #'popular_assets': popular_assets, 'tag_cloud': tag_cloud, }