Exemplo n.º 1
0
 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
Exemplo n.º 2
0
 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
Exemplo n.º 3
0
    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)
Exemplo n.º 4
0
    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)