예제 #1
0
파일: views.py 프로젝트: mkcode/badges
def publish( request, badge_id ):

    #TODO check user
    badge = badge_api.get_badge(badge_api.id2uri(badge_id))
    if request.method == 'POST':
        badge_api.publish_badge(badge_api.id2uri(badge_id))
        return http.HttpResponseRedirect(reverse(
            'badge_view', args=(badge_id,)
        ))

    return render_to_response(
        'badge/publish.html',
         { 'badge': badge },
        context_instance=RequestContext(request)
    )
예제 #2
0
파일: views.py 프로젝트: mkcode/badges
def create( request, badge_id ):
    badge = badge_api.get_badge(badge_api.id2uri(badge_id))
    fetch_badge_resources(badge)
    context = { 'badge': badge }
    user_uri = request.session['user']['uri']

    if request.method == 'POST':
        form = ProjectForm(request.POST, request.FILES)
    else:
        form = ProjectForm()

    if form.is_valid():
        image = media_api.upload_image(request.FILES['image'], user_uri)
        try:
            project = project_api.create_project(
                badge['uri'],
                user_uri,
                form.cleaned_data['title'],
                image['uri'],
                form.cleaned_data['work_url'],
                form.cleaned_data['description'],
                form.cleaned_data['reflection'],
                form.cleaned_data['tags']
            )
            return http.HttpResponseRedirect(reverse('project_view', args=(project['id'],)))
        except project_api.MultipleProjectError:
            messages.error(request, _('You have already submitted a project for this badge.'))

    context['form'] = form
    return render_to_response(
        'project/create.html',
        context,
        context_instance=RequestContext(request)
    )
예제 #3
0
파일: views.py 프로젝트: mozzadrella/badges
def preview( request, badge_id ):
    context = {
        'badge': badge_api.get_badge(badge_api.id2uri(badge_id))
    }
    fetch_badge_resources(context['badge'])
    return render_to_response(
        'badge/preview.html',
        context,
        context_instance=RequestContext(request)
    )
예제 #4
0
파일: views.py 프로젝트: ercchy/badges
def edit(request, badge_id):
    user_uri = request.session['user']['uri']
    user = p2pu_user_api.get_user(user_uri)
    user_partner = user['partner']
    badge = badge_api.get_badge(badge_api.id2uri(badge_id))

    if not user_uri == badge['author_uri']:
        messages.error(request, _('You cannot edit someone elses badge!'))
        return http.HttpResponseRedirect(reverse(
            'badge_preview', args=(badge_id,)
        ))

    if request.method == 'POST':
        form = BadgeForm(request.POST, request.FILES, user_uri=user_uri, editing=True, published=badge['published'])
    else:
        form = BadgeForm(badge, user_uri=user_uri, editing=True, published=badge['published'])

    if request.method == 'POST' and form.is_valid():
        try:
            updated = {}
            if 'image_uri' in request.FILES:
                image = media_api.upload_image(
                    request.FILES['image_uri'],
                    request.session['user']['uri'],
                    media_root=settings.MEDIA_ROOT,
                )
                updated['image_uri'] = image['uri']

            for attr in ['title', 'description', 'requirements']:
                if not badge[attr] == form.cleaned_data[attr]:
                    updated[attr] = form.cleaned_data[attr]

            badge = badge_api.update_badge(badge['uri'], **updated)

            if badge['published']:
                return http.HttpResponseRedirect(
                    reverse('badge_view', args=(badge_api.uri2id(badge['uri']),))
                )

            return http.HttpResponseRedirect(
                reverse('badge_preview', args=(badge_api.uri2id(badge['uri']),))
            )
        except badge_api.DuplicateTitleError:
            form.errors['title'] = [_('Badge title needs to be unique'), ]

    return render_to_response(
        'badge/badge_info/edit.html', {
            'badge': badge,
            'form': form,
            'user_is_partner': user_partner,
            'existing_img': media_api.get_image(badge['image_uri']),
        },
        context_instance=RequestContext(request))
예제 #5
0
파일: views.py 프로젝트: dirkcuys/badges
def preview(request, badge_id):
    badge = badge_api.get_badge(badge_api.id2uri(badge_id))
    fetch_badge_resources(badge)
    user = request.session['user']
    user['is_author'] = _user_is_author(badge, user)

    return render_to_response(
        'badge/badge_info/preview.html', {
            'badge': badge,
            'user': user,
        },
        context_instance=RequestContext(request)
    )
예제 #6
0
파일: views.py 프로젝트: mkcode/badges
def view( request, badge_id ):
    badge = badge_api.get_badge(badge_api.id2uri(badge_id))
    fetch_badge_resources(badge)
    context = {
        'badge': badge
    }
    context['projects'] = map(fetch_resources, project_api.search_projects(badge_uri=badge['uri']))
    context['experts'] = badge_api.get_badge_experts(badge['uri'])

    return render_to_response(
        'badge/view.html',
        context,
        context_instance=RequestContext(request)
    )
예제 #7
0
파일: views.py 프로젝트: ercchy/badges
def preview(request, badge_id):
    badge = badge_api.get_badge(badge_api.id2uri(badge_id))

    if badge['published_date']:
        return HttpResponseRedirect(reverse('badge_view', args=[badge_id]))

    fetch_badge_resources(badge)
    user = request.session['user']
    user['is_author'] = _user_is_author(badge, user)

    return render_to_response(
        'badge/badge_info/preview.html', {
            'badge': badge,
            'user': user,
        },
        context_instance=RequestContext(request)
    )
예제 #8
0
파일: views.py 프로젝트: ercchy/badges
def delete(request, badge_id):
    """
    Setting badge attribute 'deleted' to True
    """
    user_uri = request.session['user']['uri']

    try:
        badge_api.delete_badge(badge_api.id2uri(badge_id), user_uri)
        messages.success(request, _('Success! You have deleted your badge'))
    except badge_api.NotTheAuthorError:
        messages.error(request, _('Error! You are not the author of the badge!'))
    except badge_api.HasProjectsAttachedError:
        messages.error(request, _('Error! Badge has projects attached!'))

    return http.HttpResponseRedirect(
        reverse('dashboard', args=(p2pu_user_api.uri2username(user_uri),))
    )
예제 #9
0
파일: views.py 프로젝트: ercchy/badges
def publish(request, badge_id):
    user = request.session['user']
    badge = badge_api.get_badge(badge_api.id2uri(badge_id))

    if not user['uri'] == badge['author_uri']:
        messages.error(request, _('You cannot publish someone elses badge!'))
        return http.HttpResponseRedirect(reverse(
            'badge_preview', args=(badge_id,)
        ))

    if request.method == 'POST':
        badge_api.publish_badge(badge['uri'])
        return http.HttpResponseRedirect(reverse(
            'badge_view', args=(badge_id,)
        ))

    return http.HttpResponseRedirect(reverse(
        'badge_preview', args=(badge_id,)
    ))
예제 #10
0
파일: views.py 프로젝트: MHM5000/badges
def create(request, badge_id):
    badge = badge_api.get_badge(badge_api.id2uri(badge_id))
    fetch_badge_resources(badge)
    context = {'badge': badge}
    user_uri = request.session['user']['uri']

    if request.method == 'POST':
        form = ProjectForm(request.POST, request.FILES)
    else:
        form = ProjectForm()

    if form.is_valid():

        try:
            image = media_api.upload_image(
                request.FILES['image'],
                user_uri,
                media_root=settings.MEDIA_ROOT,
                delete_original=True)

            project = project_api.create_project(
                badge['uri'],
                user_uri,
                form.cleaned_data['title'],
                image['uri'],
                form.cleaned_data['work_url'],
                form.cleaned_data['description'],
                form.cleaned_data['reflection'],
                form.cleaned_data['tags']
            )
            return http.HttpResponseRedirect(reverse('project_view', args=(project['id'],)))
        except project_api.MultipleProjectError:
            messages.error(request, _('You have already submitted a project for this badge.'))
        except media_api.UploadImageError:
            messages.error(request, _('Project image cannot be uploaded. Possible reasons: format not supported'
                                      '(png, jpeg, jpg, gif), file size too large (up to 256kb).'))

    context['form'] = form
    return render_to_response(
        'project/create.html',
        context,
        context_instance=RequestContext(request)
    )
예제 #11
0
파일: views.py 프로젝트: mozzadrella/badges
def view( request, badge_id ):
    badge = badge_api.get_badge(badge_api.id2uri(badge_id))
    fetch_badge_resources(badge)
    context = {
        'badge': badge
    }
    context['projects'] = map(fetch_resources, project_api.search_projects(badge_uri=badge['uri']))

    expert_uris = badge_api.get_badge_experts(badge['uri'])

    if request.session.get('user'):
        context['user_is_expert'] = request.session['user']['uri'] in expert_uris

    context['experts'] = map(p2pu_user_api.get_user, expert_uris)

    return render_to_response(
        'badge/view.html',
        context,
        context_instance=RequestContext(request)
    )
예제 #12
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)
    )
예제 #13
0
파일: views.py 프로젝트: NoriVicJr/badges
def view(request, badge_id):
    badge = badge_api.get_badge(badge_api.id2uri(badge_id))
    fetch_badge_resources(badge)
    context = {'badge': badge}
    context['projects'] = map(fetch_resources, project_api.search_projects_awarded_badges(badge_uri=badge['uri']))

    expert_uris = badge_api.get_badge_experts(badge['uri'])

    if request.session.get('user'):
        context['user_is_expert'] = request.session['user']['uri'] in expert_uris

    context['experts'] = map(p2pu_user_api.get_user, expert_uris)

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

    return render_to_response(
        'badge/view.html',
        context,
        context_instance=RequestContext(request)
    )
예제 #14
0
파일: views.py 프로젝트: mozzadrella/badges
def edit( request, badge_id ):
    template_name = 'badge/edit.html'
    badge = badge_api.get_badge(badge_api.id2uri(badge_id))

    if not request.session['user']['uri'] == badge['author_uri']:
        messages.error(request, _('You cannot edit someone elses badge!'))
        return http.HttpResponseRedirect(reverse(
            'badge_preview', args=(badge_id,)
        ))

    if badge['publised']:
        messages.error(request, _('Badge already publised, create a new badge instead'))
        return http.HttpResponseRedirect(reverse(
            'badge_view', args=(badge_id,)
        ))

    if request.method == 'POST':
        form = BadgeForm(request.POST, request.FILES)
    else:
        form = BadgeForm(badge)

    if request.method == 'POST' and form.is_valid():
        #TODO update image
        #image = media_api.upload_image(request.FILES['image'], '/uri/user/1')
        try:
            updated = {}
            for attr in ['title', 'description', 'requirements']:
                if not badge[attr] == form.cleaned_data[attr]:
                    updated[attr] = form.cleaned_data[attr]

            badge = badge_api.update_badge(badge['uri'], **updated)
            return http.HttpResponseRedirect(
                reverse('badge_preview', args=(badge_api.uri2id(badge['uri']),))
            )
        except badge_api.DuplicateTitleError:
            form.errors['title'] = [_('Badge title needs to be unique'),]

    return render_to_response(
        template_name, {'form': form},
        context_instance=RequestContext(request))
예제 #15
0
파일: views.py 프로젝트: ercchy/badges
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)
    )