def user_project_badges_list(request,username,projectname,rendertype='html'):
    user = get_object_or_404(User, username=username)

    project_names = projectname.split(',')
    projects = Project.objects.filter(name__in=project_names)

    total_points = 0
    badges = []
    tags = {}
    for project in projects:

        #Find all badges from the project
        projbadges = ProjectBadge.objects.filter(project=project).order_by('badge__level')
        prefix = 'https://' if request.is_secure() else 'http://'
        url = prefix + request.get_host() + settings.STATIC_URL

        #TODO: Find list of points for Leaderboard
        #Get list of badges user has
        badges = badges + project_badge_count(user,project,projbadges,url)

        for pb in projbadges:
            tag_list = pb.tags
            if tag_list:
                tag_list = tag_list.lower().split(",")
                for tag in tag_list:
                    tag = tag.strip()
                if tags.has_key(tag):
                    tags[tag] += 1
                else:
                    tags[tag] = 1

        #Count all the values of user's points
        pbtu = ProjectBadgeToUser.objects.filter(user__username=username,projectbadge__project=project)
        for userbadge in pbtu:
            total_points += userbadge.projectbadge.awardLevel

    rendertype = rendertype or request.accepted_renderer.format
    if rendertype == 'html':
        data = {'profile': badges, 'points':total_points, 'tags':tags}
        return Response(data, template_name='core/badge_list.html')

    #JSON
    badge_detail_list = []

    for bi in badges:
        bstr = '{ "name":"%s", "awarded":%d, "url":"%s" }' % \
            ( bi['projectbadge__name'], bi['count'], bi['projectbadge__badge__icon'])
        badge_detail_list.append(json.loads(bstr))

    return Response(badge_detail_list)
def projects(request, *args, **kwargs):
    if request.method == 'GET':
        try:
            user = get_object_or_404(User,username=kwargs['username'])
            project = get_object_or_404(Project,name=kwargs['projectname'])
        except Http404, e:
            context = { 'message' : e.__str__().split()[1] + ' not found' }
            return HttpResponse(json.dumps(context),'application/json',404)

        projbadges = ProjectBadge.objects.filter(project=project)
        badge_info = project_badge_count(user,project,projbadges)
        badge_detail_list = []
        for bi in badge_info:
            bstr = '{ "name":"%s", "awarded":%d, "url":"%s"}' % \
               ( bi['projectbadge__name'], bi['count'], bi['projectbadge__badge__icon'])
            badge_detail_list.append(json.loads(bstr))

        resp = '{"username":"******", "badges":%s}' % (user.username, json.dumps(badge_detail_list))
        return HttpResponse(resp, mimetype="application/json")
Пример #3
0
def user_project_badges_list(request,username,projectname):
    user = get_object_or_404(User, username=username)
    project = get_object_or_404(Project, name=projectname)
    projbadges = ProjectBadge.objects.filter(project=project).order_by('badge__level')
    prefix = 'https://' if request.is_secure() else 'http://'
    url = prefix + request.get_host() + settings.STATIC_URL

    badges = project_badge_count(user,project,projbadges,url)

    if request.accepted_renderer.format == 'html':
        data = {'profile': badges}
        return Response(data, template_name='core/badge_list.html')

    #JSON
    badge_detail_list = []

    for bi in badges:
        bstr = '{ "name":"%s", "awarded":%d, "url":"%s"}' % \
            ( bi['projectbadge__name'], bi['count'], bi['projectbadge__badge__icon'])
        badge_detail_list.append(json.loads(bstr))

    return Response(badge_detail_list)