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 get_feedback_for_project_list(project_list): """ Fetching all feedback that is attached to project """ for project in project_list: feedback_list = get_project_feedback(project['uri']) fetch_resources(project, feedback_list=feedback_list) return project_list
def list_projects_by_user(user_uri): """ Listing all the projects that user has """ projects = search_projects(author_uri=user_uri) for project in projects: badge = get_badge(project['badge_uri']) fetch_badge_resources(badge) feedback_list = get_project_feedback(project['uri']) fetch_resources(project, feedback_list=feedback_list) return projects
def list_projects_that_user_gave_feedback(user_uri): """ Listing all project that user gave feedback to """ projects_list = get_projects_user_gave_feedback(user_uri) for project in projects_list: badge = get_badge(project['badge_uri']) fetch_badge_resources(badge) feedback_list = get_project_feedback(project['uri']) fetch_resources(project, feedback_list=feedback_list) return projects_list
def view( request, project_id ): project = project_api.get_project(project_api.id2uri(project_id)) project = fetch_resources(project) badge = badge_api.get_badge(project['badge_uri']) badge = fetch_badge_resources(badge) feedback = project_api.get_project_feedback(project['uri']) can_revise = False can_give_feedback = False if request.session.get('user'): user_uri = request.session['user']['uri'] if user_uri == project['author_uri']: can_revise = project_api.can_revise_project(project['uri']) can_give_feedback = project_api.ready_for_feedback(project['uri']) can_give_feedback &= user_uri in badge_api.get_badge_experts(badge['uri']) context = { 'project': project, 'badge': badge, 'feedback': feedback, 'can_revise': can_revise, 'can_give_feedback': can_give_feedback } return render_to_response( 'project/view.html', context, context_instance=RequestContext(request) )
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 send_project_creation_notification(project): subject_template = 'emails/project_submitted_subject.txt' text_template = 'emails/project_submitted.txt' html_template = 'emails/project_submitted.html' context = { 'project': fetch_resources(project) } return send_notification_i18n( project['author_uri'], subject_template, text_template, html_template, context=context )
def send_badge_needs_partner_feedback_notification(badge, project, author_uri): subject_template = 'emails/project_awarded_partner_badge_subject.txt' text_template = 'emails/project_awarded_partner_badge.txt' html_template = 'emails/project_awarded_partner_badge.html' context = { 'project': fetch_resources(project) } return send_notification_i18n( project['author_uri'], subject_template, text_template, html_template, context=context )
def send_revision_notification(project, experts): subject_template = 'emails/project_revised_subject.txt' text_template = 'emails/project_revised.txt' html_template = 'emails/project_revised.html' context = { 'project': fetch_resources(project) } for expert in experts: send_notification_i18n( expert, subject_template, text_template, html_template, context=context )
def feedback(request, project_id): project = project_api.get_project(project_api.id2uri(project_id)) fetch_resources(project) feedback = project_api.get_project_feedback(project_api.id2uri(project_id)) badge = badge_api.get_badge(project['badge_uri']) fetch_badge_resources(badge) user_uri = request.session['user']['uri'] if request.method == 'POST': form = FeedbackForm(request.POST) else: form = FeedbackForm() if form.is_valid(): try: feedback = project_api.submit_feedback( project['uri'], user_uri, form.cleaned_data['good'], form.cleaned_data['bad'], form.cleaned_data['ugly'], form.cleaned_data.get('award_badge', form.cleaned_data.get('award_badge', False)) ) if feedback == project_api.submit_feedback_result.AWARDED: badge_api.award_badge( badge['uri'], project['author_uri'], user_uri, reverse('project_view', args=(project_id,)), ) messages.success(request, _("Success! You've awarded the Badge to %s" % project['author']['username'])) elif feedback == project_api.submit_feedback_result.REQUIRES_APPROVAL: messages.error(request, _("Badge can only be awarded by it's creator. " "We had notified them that you liked this project.")) except Exception, e: messages.error(request, _(e[0])) return http.HttpResponseRedirect(reverse('project_view', args=(project_id,)))
def send_project_creation_expert_notification(project, badge, experts): subject_template = 'emails/project_submitted_expert_subject.txt' text_template = 'emails/project_submitted_expert.txt' html_template = 'emails/project_submitted_expert.html' context = { 'projects': [fetch_resources(project)], 'badge': badge } for expert in experts: send_notification_i18n( expert, subject_template, text_template, html_template, context=context )
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 models 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 )