示例#1
0
def sort_tags(request, *args, **kwargs):
    form = MultiTagForm(request.POST)
    if form.is_valid():
        instance_list = []
        errors = []
        obj = get_object_from_ct(form.cleaned_data['content_type'], form.cleaned_data['object_id'])
        for i, label in enumerate(parse_tag_input(form.cleaned_data['labels'])):
            tagged_item = Tag.objects.add_tag(obj, label)
            tagged_item.order = i
            tagged_item.save()
            instance_list.append(tagged_item.json())
        data = {
            'status':           'ok',
            'instance_list':    instance_list,
        }
        return JsonResponse(data)
    else:
        errors = [unicode(striptags("%s: %s" % (k, v))) for k, v in form.errors.iteritems()]
        return JsonResponse({'status': 'faield', 'errors': errors})
示例#2
0
def create_tags(request, *args, **kwargs):
    form = MultiTagForm(request.POST)
    if form.is_valid():
        obj = get_object_from_ct(form.cleaned_data['content_type'], form.cleaned_data['object_id'])
        instance_list = []
        errors = []
        for label in parse_tag_input(form.cleaned_data['labels']):
            try:
                tagged_item = Tag.objects.add_tag(obj, label, ignore_duplicate=False)
                instance_list.append(tagged_item.json())
            except exceptions.DuplicateError:
                errors.append(_(u"Tag %(label)s is duplicated.") % {'label': label})
        data = {
            'status':           'ok',
            'instance_list':    instance_list,
        }
        if len(errors) > 0: data['errors'] = errors
        return JsonResponse(data)
    else:
        errors = [unicode(striptags("%s: %s" % (k, v))) for k, v in form.errors.iteritems()]
        return JsonResponse({'status': 'failed', 'errors': errors})
示例#3
0
def delete_tags(request, *args, **kwargs):
    form = MultiTagForm(request.POST)
    if form.is_valid():
        instance_list = []
        errors = []
        obj = get_object_from_ct(form.cleaned_data['content_type'], form.cleaned_data['object_id'])
        for label in parse_tag_input(form.cleaned_data['labels']):
            try:
                tagged_item = Tag.objects.remove_tag(obj, label)
                instance_list.append(tagged_item.json())
            except exceptions.DeletingFrozenTagError:
                errors.append(_(u"Unable to delete Tag %(label)s while it is frozen.") % {'label': label})
            except (Tag.DoesNotExist, TaggedItem.DoesNotExist):
                errors.append(_(u"Tag %(label)s is not defined.") % {'label': label})
        data = {
            'status':           'ok',
            'instance_list':    instance_list,
        }
        if len(errors) > 0: data['errors'] = errors
        return JsonResponse(data)
    else:
        errors = [unicode(striptags("%s: %s" % (k, v))) for k, v in form.errors.iteritems()]
        return JsonResponse({'status': 'faield', 'errors': errors})
示例#4
0
def freeze_tags(request, *args, **kwargs):
    form = MultiTagForm(request.POST)
    if form.is_valid():
        instance_list = []
        errors = []
        obj = get_object_from_ct(form.cleaned_data['content_type'], form.cleaned_data['object_id'])
        # Validation
        if getattr(obj, 'author', None) != request.user and getattr(obj, 'user', None) != request.user:
            return JsonResponse({'status': 'failed', 'errors': [_('Permission denied')]})
        for label in parse_tag_input(form.cleaned_data['labels']):
            try:
                tagged_item = Tag.objects.freeze_tag(obj, label)
                instance_list.append(tagged_item.json())
            except (Tag.DoesNotExist, TaggedItem.DoesNotExist):
                errors.append(_(u"Tag %(label)s is not defined.") % {'label': label})
        data = {
            'status':           'ok',
            'instance_list':    instance_list,
        }
        if len(errors) > 0: data['errors'] = errors
        return JsonResponse(data)
    else:
        errors = [unicode(striptags("%s: %s" % (k, v))) for k, v in form.errors.iteritems()]
        return JsonResponse({'status': 'faield', 'errors': errors})