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