예제 #1
0
def notifications(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'])

    class_feed = []

    #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')),
    )

    tags = Tag.objects.usage_for_queryset(
        SherdNote.objects.filter(asset__course=c), counts=True)

    #only top 10 tags
    tag_cloud = calculate_cloud(
        sorted(tags, lambda t, w: cmp(w.count, t.count))[:10])

    return {
        'my_feed': my_feed,
        'tag_cloud': tag_cloud,
    }
예제 #2
0
def notifications(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'])

    class_feed = []

    #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')
                                                    ),
                    )

    return {
        'my_feed':my_feed,
        'space_viewer': user,
        "help_notifications": UserSetting.get_setting(user, "help_notifications", True)
    }
예제 #3
0
파일: views.py 프로젝트: natea/mediathread
def class_activity(request):
    """FACULTY ONLY reporting of entire class activity """
    if not request.course.is_faculty(request.user):
        return HttpResponseForbidden("forbidden")

    my_feed = Clumper(
        SherdNote.objects.filter(asset__course=request.course).order_by("-added")[:40],
        Project.objects.filter(course=request.course, submitted=True).order_by("-modified")[:40],
        DiscussionIndex.with_permission(
            request,
            DiscussionIndex.objects.filter(collaboration__context=request.collaboration_context).order_by("-modified")[
                :40
            ],
        ),
    )

    rv = {"my_feed": my_feed, "submenu": "activity"}
    if request.user.is_staff:
        rv["courses"] = Course.objects.all()
    return rv
예제 #4
0
def class_activity(request):
    """FACULTY ONLY reporting of entire class activity """
    if not request.course.is_faculty(request.user):
        return HttpResponseForbidden("forbidden")

    my_feed = Clumper(
        SherdNote.objects.filter(
            asset__course=request.course).order_by('-added')[:40],
        Project.objects.filter(course=request.course,
                               submitted=True).order_by('-modified')[:40],
        DiscussionIndex.with_permission(
            request,
            DiscussionIndex.objects.filter(
                collaboration__context=request.collaboration_context).order_by(
                    '-modified')[:40],
        ))

    rv = {
        'my_feed': my_feed,
        'submenu': 'activity',
    }
    if request.user.is_staff:
        rv['courses'] = Course.objects.all()
    return rv
예제 #5
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,
        }
예제 #6
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,
    }