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')
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
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
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')