Ejemplo n.º 1
0
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
Ejemplo n.º 2
0
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
Ejemplo n.º 4
0
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