Example #1
0
def add_tag(request):
    if not request.user.is_authenticated()  or not request.user.is_active:
        #needs to popup registration dialog instead
        return HttpResponse(simplejson.dumps({'FAIL':True}), #need a better non-auth error here, interferes with view
                                mimetype='application/json')

    if request.method == 'POST':
        obj_id = request.POST[u'obj']
        tag = str(request.POST[u'tag'])
        c_type = str(request.POST['c_type'])
        app_type = str(request.POST['app_type'])

        model_type = ContentType.objects.get(app_label=app_type, model=c_type)
        obj = model_type.get_object_for_this_type(pk=obj_id)

        Tag.objects.add_tag(obj, tag)
        add_group_tag.apply_async(args=[obj_id, c_type, tag])

        new_tag = Tag.objects.get(name=tag)
        try:
            relationship_event.send(sender=new_tag, obj=new_tag, parent=obj, initiator=request.user)
        except:
            pass
        results = {'linktaglist': get_link_tag_list(request.user, obj, get_links=True), 'taglist': get_recommended_tag_list(obj, get_links=True), 'FAIL': False}
        return HttpResponse(simplejson.dumps(results),
                    mimetype='application/json')
Example #2
0
def pp_tag_form(context, nodelist, *args, **kwargs):
    '''
    This block tag can create or process forms either to create or to modify arguments.
    Usage is as follows:

    {% pp_tag_form POST=request.POST path=request.path object=pp-issue.issue %}
       Do stuff with {{ pp_tag.form }}.
    {% endpp_tag_form %}
    '''

    context.push()
    namespace = get_namespace(context)

    obj = kwargs.get('object', None)
    POST = kwargs.get('POST', None)
    tag = kwargs.get('tag', None)
    user = kwargs.get('user', None)

    obj_pk = obj.content_object.pk
    ctype_pk = ContentType.objects.get_for_model(obj.content_object).pk

    #obj = Consensus.objects.get(object_pk=content_obj.pk)
    if POST and POST.get("form_id") == "pp_tag_form":

        if tag != None:
            Tag.objects.add_tag(obj, tag.name)
        else:
            form = TagForm(POST)
            #new_arg = form.save(commit=False)
            if form.is_valid():
                tag_list = form.cleaned_data['tag'].split(',')
                for t in tag_list:
                    if len(t) > 0:
                        clean_tag = clean_html(t.replace(' ', '-'))
                        if len(str(clean_tag)) < 32:
                            Tag.objects.add_tag(obj, clean_tag)
                            tag = TaggedItem._default_manager.get(
                                tag_name=clean_tag, object_id=obj.pk)
                            new_tag = tag.tag
                            try:
                                add_group_tag.apply_async(
                                    args=[obj_pk, ctype_pk, clean_tag])
                                relationship_event.send(sender=new_tag,
                                                        obj=new_tag,
                                                        parent=obj,
                                                        initiator=user)
                                form = TagForm()
                            except:
                                namespace[
                                    'errors'] = "You've already used that tag for this object"
                        else:
                            namespace[
                                'errors'] = clean_tag + " invalid.<br>Tags cannot be longer than 32 characters."
        #raise HttpRedirectException(HttpResponseRedirect(obj.content_object.get_absolute_url()))
    else:
        form = TagForm()
    namespace['form'] = form
    output = nodelist.render(context)
    context.pop()
    return output
Example #3
0
def pp_tag_form(context, nodelist, *args, **kwargs):
    '''
    This block tag can create or process forms either to create or to modify arguments.
    Usage is as follows:

    {% pp_tag_form POST=request.POST path=request.path object=pp-issue.issue %}
       Do stuff with {{ pp_tag.form }}.
    {% endpp_tag_form %}
    '''

    context.push()
    namespace = get_namespace(context)

    obj = kwargs.get('object', None)
    POST = kwargs.get('POST', None)
    tag = kwargs.get('tag', None)
    user = kwargs.get('user', None)

    obj_pk = obj.content_object.pk
    ctype_pk = ContentType.objects.get_for_model(obj.content_object).pk

    #obj = Consensus.objects.get(object_pk=content_obj.pk)
    if POST and POST.get("form_id") == "pp_tag_form":

        if tag != None:
            Tag.objects.add_tag(obj, tag.name)
        else:
            form = TagForm(POST)
            #new_arg = form.save(commit=False)
            if form.is_valid():
                tag_list = form.cleaned_data['tag'].split(',')
                for t in tag_list:
                    if len(t) > 0:
                        clean_tag = clean_html(t.replace(' ', '-'))
                        if len(str(clean_tag)) < 32:
                            Tag.objects.add_tag(obj, clean_tag)
                            tag = TaggedItem._default_manager.get(tag_name=clean_tag, object_id=obj.pk)
                            new_tag = tag.tag
                            try:
                                add_group_tag.apply_async(args=[obj_pk, ctype_pk, clean_tag])
                                relationship_event.send(sender=new_tag, obj=new_tag, parent=obj, initiator=user)
                                form = TagForm()
                            except:
                                namespace['errors'] = "You've already used that tag for this object"
                        else:
                            namespace['errors'] = clean_tag + " invalid.<br>Tags cannot be longer than 32 characters."
        #raise HttpRedirectException(HttpResponseRedirect(obj.content_object.get_absolute_url()))
    else:
        form = TagForm()
    namespace['form'] = form
    output = nodelist.render(context)
    context.pop()
    return output
Example #4
0
def add_tag(request):
    if not request.user.is_authenticated() or not request.user.is_active:
        #needs to popup registration dialog instead
        return HttpResponse(
            simplejson.dumps({
                'FAIL': True
            }),  #need a better non-auth error here, interferes with view
            mimetype='application/json')

    if request.method == 'POST':
        obj_id = request.POST[u'obj']
        tag = str(request.POST[u'tag'])
        c_type = str(request.POST['c_type'])
        app_type = str(request.POST['app_type'])

        model_type = ContentType.objects.get(app_label=app_type, model=c_type)
        obj = model_type.get_object_for_this_type(pk=obj_id)

        Tag.objects.add_tag(obj, tag)
        add_group_tag.apply_async(args=[obj_id, c_type, tag])

        new_tag = Tag.objects.get(name=tag)
        try:
            relationship_event.send(sender=new_tag,
                                    obj=new_tag,
                                    parent=obj,
                                    initiator=request.user)
        except:
            pass
        results = {
            'linktaglist': get_link_tag_list(request.user, obj,
                                             get_links=True),
            'taglist': get_recommended_tag_list(obj, get_links=True),
            'FAIL': False
        }
        return HttpResponse(simplejson.dumps(results),
                            mimetype='application/json')