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) )
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) )
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]
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)
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) )
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) )
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 )