Example #1
0
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
Example #2
0
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
Example #3
0
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,
        }
Example #4
0
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,
    }