Example #1
0
def add_tag(request, tag_id=False, project_id=False, task_id=False):
    """
    Provides a page where tags can be
    created by the user.
    """
    if request.method == 'POST':
        postData = deepcopy(request.POST)

        if ('public' not in request.POST):
            postData['public'] = 'off'

        form = AddTagForm(postData)

        if form.is_valid():

            if (not tag_id):
                newTag = Tag()
            else:
                newTag = Tag.objects.get(id=tag_id)

            newTag.name = form.cleaned_data['name']
            newTag.description = form.cleaned_data['description']
            newTag.public = form.cleaned_data['public']
            newTag.owner = request.user

            if ('public' not in request.POST):
                newTag.public = False

            newTag.save()

            if (task_id):
                task = ProjectTask.objects.get(id=task_id)
                task.tags.add(newTag)
                task.save()
            if (project_id):
                project = Project.objects.get(id=project_id)
                project.tags.add(newTag)
                project.save()

            if ('returnUrl' in request.session):
                return HttpResponseRedirect(request.session['returnUrl'])
            else:
                return HttpResponseRedirect('/tags/' + str(newTag.id))

        else:

            pageData = {}
            pageData['form'] = form
            pageData['postTo'] = request.get_full_path()
            messages.warning(request, "Please check your inputs.")
            return render_to_response('tag_create.html', RequestContext(request, pageData))

    else:
        form = AddTagForm()
        args = {}
        args['form'] = form
        args['postTo'] = request.get_full_path()
        return render_to_response('tag_create.html', RequestContext(request, args))