예제 #1
0
파일: views.py 프로젝트: MHM5000/badges
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)
    )
예제 #2
0
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
예제 #3
0
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
예제 #4
0
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
예제 #5
0
파일: views.py 프로젝트: mkcode/badges
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)
    )
예제 #6
0
파일: views.py 프로젝트: ercchy/badges
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)
    )
예제 #7
0
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
    )
예제 #8
0
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
    )
예제 #9
0
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
        )
예제 #10
0
파일: views.py 프로젝트: MHM5000/badges
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,)))
예제 #11
0
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
        )
예제 #12
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 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
    )