Esempio n. 1
0
def review(request):
    """
    This view shows a list of projects for a user that he/she can submit feedback on
    """

    user = request.session.get('user')
    projects = []

    if user:
        user_badges = badge_api.get_user_earned_badges(user['uri'])
        for badge in user_badges:
            projects += project_api.get_projects_ready_for_feedback(badge['uri'])

    badges = []
    feedback_list = []

    if len(projects) == 0:
        badges = badge_api.get_published_badges()
    else:
        for project in projects:
            feedback_list = project_api.get_project_feedback(project['uri'])
            fetch_resources(project, feedback_list)

    return render_to_response(
        'project/review.html', {
            'projects': map(fetch_resources, projects),
            'badges': map(fetch_badge_resources, badges)
        },
        context_instance=RequestContext(request)
    )
Esempio n. 2
0
def profile(request, username ):

    context = {}
    user_uri = u'/uri/user/{0}'.format(username)
    context['draft_badges'] = badge_api.get_user_draft_badges(user_uri)
    context['earned_badges'] = badge_api.get_user_earned_badges(user_uri)
    context['created_badges'] = badge_api.get_user_created_badges(user_uri)
    context['awarded_badges'] = badge_api.get_user_awarded_badges(user_uri)
    map(fetch_badge_resources, context['draft_badges'])
    map(fetch_badge_resources, context['earned_badges'])
    map(fetch_badge_resources, context['created_badges'])
    map(fetch_badge_resources, context['awarded_badges'])

    context['feedback_your_projects'] = project_api.search_projects(author_uri=user_uri)
    map(fetch_resources, context['feedback_your_projects'])
    peer_projects = []
    feedback_latest = []
    for badge in context['earned_badges']:
        feedback_latest += project_api.get_projects_ready_for_feedback(badge['uri'])
        peer_projects += project_api.search_projects(badge_uri=badge['uri'])

    filter_func = lambda project: not project['author_uri'] == user_uri
    peer_projects = filter(filter_func, peer_projects)

    badges_under_revision = []
    context['badges_under_revision'] = None
    for project in context['feedback_your_projects']:
        badge_uri = project_api.get_badge_uri_from_project_under_revision(project['uri'])
        if badge_uri:
            badge = badge_api.get_badge(badge_uri)
            fetch_badge_resources(badge)
            badges_under_revision.append(badge)

    if badges_under_revision:
        context['badges_under_revision'] = badges_under_revision

    context['feedback_peer_projects'] = map(fetch_resources, peer_projects)
    context['feedback_latest'] = map(fetch_resources, feedback_latest)
    context['user'] = user_api.get_user(user_api.username2uri(username))
    context['can_delete'] = False

    if 'user' in request.session:
        if context['user']['username'] == request.session.get('user')['username']:
            context['can_delete'] = True

    return render_to_response(
        'dashboard/dashboard.html',
        context,
        context_instance=RequestContext(request)
    )
Esempio n. 3
0
def list_projects_ready_for_feedback(badges):
    """
    Listing all projects for badges
    """

    projects_list = []

    for badge in badges:
        projects = get_projects_ready_for_feedback(badge['uri'])
        if projects:
            projects = get_feedback_for_project_list(projects)
            projects_list.append(projects)

    return [project for items in projects_list for project in items]
Esempio n. 4
0
    def test_get_projects_ready_for_feedback(self):
        project_api.create_project('/uri/badge/1', '/uri/user/user1', 'Title', '/uri/image/1', 'https://url.com', 'Description', 'Reflection', ['tag1', 'tag2'])
        project_api.create_project('/uri/badge/1', '/uri/user/user2', 'Title', '/uri/image/1', 'https://url.com', 'Description', 'Reflection', ['tag1', 'tag2'])
        project_api.create_project('/uri/badge/1', '/uri/user/user3', 'Title', '/uri/image/1', 'https://url.com', 'Description', 'Reflection', ['tag1', 'tag2'])

        project_api.create_project('/uri/badge/2', '/uri/user/user1', 'Title', '/uri/image/1', 'https://url.com', 'Description', 'Reflection', ['tag1', 'tag2'])
        project_api.create_project('/uri/badge/2', '/uri/user/user4', 'Title', '/uri/image/1', 'https://url.com', 'Description', 'Reflection', ['tag1', 'tag2'])
        project_api.create_project('/uri/badge/2', '/uri/user/user5', 'Title', '/uri/image/1', 'https://url.com', 'Description', 'Reflection', ['tag1', 'tag2'])

        project_api.create_project('/uri/badge/3', '/uri/user/user1', 'Title', '/uri/image/1', 'https://url.com', 'Description', 'Reflection', ['tag1', 'tag2'])
        project_api.create_project('/uri/badge/3', '/uri/user/user6', 'Title', '/uri/image/1', 'https://url.com', 'Description', 'Reflection', ['tag1', 'tag2'])

        projects_ready_for_feedback = project_api.get_projects_ready_for_feedback('/uri/badge/1')
        self.assertEqual(len(projects_ready_for_feedback), 3)
Esempio n. 5
0
def view(request, badge_id):
    badge = badge_api.get_badge(badge_api.id2uri(badge_id))
    fetch_badge_resources(badge)

    projects = project_api.search_projects_awarded_badges(badge_uri=badge['uri'])
    for project in projects:
        fetch_resources(project, feedback_list=project_api.get_project_feedback(project['uri']))

    expert_uris = badge_api.get_badge_experts(badge['uri'])
    user = request.session.get('user')

    if user:
        user['is_expert'] = user['uri'] in expert_uris
        user['is_author'] = _user_is_author(badge, user)
        if user['is_author']:
            user['can_delete_badge'] = badge_api.is_allowed_to_remove(badge['uri'])
        if user['is_expert']:
            user['added_to_backpack'] = badge_api.pushed_to_backpack(badge, user['uri'])

    projects_ready_for_feedback = project_api.get_projects_ready_for_feedback(badge['uri'])
    for project in projects_ready_for_feedback:
        feedback_list = project_api.get_project_feedback(project['uri'])
        fetch_resources(project, feedback_list=feedback_list)

    experts = map(p2pu_user_api.get_user, expert_uris)

    iframe = '//%s%s?rendering=normal' % (settings.ORGANISATION_URL,
                                               reverse('badge_view_embedded', args=[badge_id]))

    return render_to_response(
        'badge/badge_info/view.html', {
            'user': user,
            'badge': badge,
            'projects': projects,
            'projects_ready_for_feedback': projects_ready_for_feedback,
            'experts': experts,
            'iframe': iframe,
            'organisation_url': settings.ORGANISATION_URL,
        },
        context_instance=RequestContext(request)
    )
Esempio n. 6
0
def view_embedded(request, badge_id):
    # Get username from parameters or None
    username = request.GET.get('username', None)
    # Check if user is logged in
    if 'user' in request.session:
        username = request.session['user']['username']

    badge_uri = badge_api.id2uri(badge_id)
    badge = badge_api.get_badge(badge_uri)
    fetch_badge_resources(badge)
    projects = None
    user_has_badge = False
    template = 'badge/embed/embedded_large.html'

    if username:
        user_has_badge = badge_api.check_if_user_has_badge(badge['uri'],
                                                           p2pu_user_api.username2uri(username))
    if user_has_badge:
        projects = project_api.get_projects_ready_for_feedback(badge_uri)

    if projects:
        map(fetch_resources, projects)

    # Extract rendering preference -> default large
    rendering = request.GET.get('rendering', 'large')

    if rendering == 'normal':
        template = 'badge/embed/embedded_normal.html'

    return render_to_response(
        template,
        {
            'badge': badge,
            'projects': projects,
            'user_has_badge': user_has_badge,
            'rendering': rendering,
        },
        context_instance=RequestContext(request)
    )
Esempio n. 7
0
def send_badge_awarded_notification(badge, expert_uri):
    subject_template = 'emails/badge_awarded_subject.txt'
    text_template = 'emails/badge_awarded.txt'
    html_template = 'emails/badge_awarded.html'
    context = { 'badge': fetch_badge_resources(badge) }

    # NOT the best place to hide this dependancy!!
    from project import processors as project_api
    from project.view_helpers import fetch_resources

    project = project_api.search_projects(badge['uri'], expert_uri)
    if len(project) == 1:
        context['project'] = fetch_resources(project[0])
    projects = project_api.get_projects_ready_for_feedback(badge['uri'])
    context['projects'] = map(fetch_resources, projects[:3])
    return send_notification_i18n(
        expert_uri,
        subject_template,
        text_template,
        html_template,
        context=context
    )