def clean_slug(self): """ :return: slug if objects with this slug do not exist in this level else raise validation error """ slug = self.cleaned_data['slug'] if obj is None: node = None target = None position = 'last-child' else: node = obj.tree.get() target = node position = 'left' target_id = request.GET.get('target', None) copy_id = request.GET.get('copy', None) if target_id or copy_id: try: if target_id: target = TreeItem.objects.get(pk=target_id) elif copy_id: target = TreeItem.objects.get(pk=copy_id).parent except TreeItem.DoesNotExist: pass position = 'last-child' if not TreeItem.check_slug(target, position, slug, node): message = _(u'Slug %(slug)s already exist in this ' u'level') % { 'slug': self.cleaned_data['slug'] } raise forms.ValidationError(message) return slug
def clean_slug(self): """ :return: slug if objects with this slug do not exist in this level else raise validation error """ slug = self.cleaned_data['slug'] if obj is None: node = None target = None position = 'last-child' else: node = obj.tree.get() target = node position = 'left' target_id = request.GET.get('target', None) copy_id = request.GET.get('copy', None) if target_id or copy_id: try: if target_id: target = TreeItem.objects.get(pk=target_id) elif copy_id: target = TreeItem.objects.get(pk=copy_id).parent except TreeItem.DoesNotExist: pass position = 'last-child' if not TreeItem.check_slug(target, position, slug, node): message = _(u'Slug %(slug)s already exist in this ' u'level') % {'slug': self.cleaned_data['slug']} raise forms.ValidationError(message) return slug
def move_tree_item(self, request): """ Moves node relative to a given target node as specified by position :param request: request.POST contains item_id, target_id, position item_id: id of movable node target_id: id of target node valid values for position are first-child, last-child, left, right :return: JSON data with results of operation """ if request.method == "POST": position = request.POST.get('position', None) target_id = request.POST.get('target_id', None) item_id = request.POST.get('item_id', None) if item_id and position and target_id: try: node = TreeItem.objects.get(id=item_id) target = TreeItem.objects.get(id=target_id) except TreeItem.DoesNotExist: message = _(u'Object does not exist') return JsonResponse({'status': 'error', 'type_message': 'error', 'message': message}, encoder=LazyEncoder,) slug = node.get_slug() if slug is not None and \ not TreeItem.check_slug(target, position, node.get_slug(), node=node): message = _(u'Invalid move. Slug %(slug)s exist in ' u'this level') % {'slug': node.get_slug()} return JsonResponse({ 'status': 'error', 'type_message': 'error', 'message': message }, encoder=LazyEncoder) node.move_to(target, position) message = _(u'Successful move') return JsonResponse({'status': 'OK', 'type_message': 'info', 'message': message}, encoder=LazyEncoder) message = _(u'Bad request') return JsonResponse({'status': 'error', 'type_message': 'error', 'message': message}, encoder=LazyEncoder)
def move_tree_item(self, request): """ Moves node relative to a given target node as specified by position :param request: request.POST contains item_id, target_id, position item_id: id of movable node target_id: id of target node valid values for position are first-child, last-child, left, right :return: JSON data with results of operation """ if request.method == "POST": position = request.POST.get('position', None) target_id = request.POST.get('target_id', None) item_id = request.POST.get('item_id', None) if item_id and position and target_id: try: node = TreeItem.objects.get(id=item_id) target = TreeItem.objects.get(id=target_id) except TreeItem.DoesNotExist: message = _(u'Object does not exist') return JsonResponse( { 'status': 'error', 'type_message': 'error', 'message': message }, encoder=LazyEncoder, ) slug = node.get_slug() if slug is not None and \ not TreeItem.check_slug(target, position, node.get_slug(), node=node): message = _(u'Invalid move. Slug %(slug)s exist in ' u'this level') % { 'slug': node.get_slug() } return JsonResponse( { 'status': 'error', 'type_message': 'error', 'message': message }, encoder=LazyEncoder) node.move_to(target, position) message = _(u'Successful move') return JsonResponse( { 'status': 'OK', 'type_message': 'info', 'message': message }, encoder=LazyEncoder) message = _(u'Bad request') return JsonResponse( { 'status': 'error', 'type_message': 'error', 'message': message }, encoder=LazyEncoder)