Exemple #1
0
def revise(request, project_id):
    project = project_api.get_project(project_api.id2uri(project_id))
    badge = badge_api.get_badge(project['badge_uri'])
    fetch_badge_resources(badge)

    if request.method == 'POST':
        form = RevisionForm(request.POST)
    else:
        form = RevisionForm()

    if form.is_valid():
        try:
            project_api.revise_project(
                project['uri'],
                form.cleaned_data['improvement'],
                form.cleaned_data.get('work_url', None)
            )
        except Exception as e:
            messages.error(request, _(e.args[0]))
        return http.HttpResponseRedirect(reverse('project_view', args=(project_id,)))

    context = {
        'badge': badge,
        'project': project,
        'form': form
    }
    return render_to_response(
        'project/revise.html',
        context,
        context_instance=RequestContext(request)
    )
Exemple #2
0
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'])
    for fb in feedback:
        if fb.get('expert_uri'):
            fb['expert'] = p2pu_user_api.get_user(fb['expert_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)
    )
Exemple #3
0
    def test_create_project(self):
        project = project_api.create_project(**self.project_values)
        attrs = self.project_values.keys()
        attrs += ['id', 'uri']

        for attr in attrs:
            self.assertIn(attr, project)

        for attr, value in self.project_values.items():
            self.assertEqual(project[attr], value)

        project2 = project_api.get_project(project['uri'])
        self.assertEqual(project, project2)
Exemple #4
0
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,)))