Beispiel #1
0
def move(request, url):
    url, _ = canonicalize_url(url)
    p = get_object_or_404(Page, url=url)
    
    if request.method == 'POST':
        node_form = MoveNodeForm(p, request.POST)
        if node_form.is_valid():
            old_url = p.url
            p = node_form.save()
            url_form = PageMoveForm(request.POST, instance=p)
            if url_form.is_valid():
                p = url_form.save()
                new_url = p.calculated_url
                if old_url != new_url:
                    message = "Moved from '%s' to '%s'." % (old_url, p.calculated_url)
                else:
                    message = "Moved without changing url."
                reversion.revision.comment = message
                reversion.revision.user = request.user
                
                return HttpResponseRedirect(p.get_absolute_url())
        else:
            url_form = PageMoveForm(request.POST, instance=p)
    else:
        url_form = PageMoveForm(instance=p)
        node_form = MoveNodeForm(p)
    
    return render_to_response('podstakannik/move.html', {'url_form' : url_form, 'node_form' : node_form, 'page' : p}, context_instance=RequestContext(request))
Beispiel #2
0
def testCMSMenuForm(request, menuid):
    from django.http import HttpResponseRedirect
    from vcms.www.models.menu import CMSMenu
    from mptt.exceptions import InvalidMove
    from mptt.forms import MoveNodeForm
    from django.conf import settings

    menu = get_object_or_404(CMSMenu, id=menuid)
    if request.method == 'POST':
        form = MoveNodeForm(menu,
                            request.POST,
                            valid_targets=CMSMenu.objects.all())
        if form.is_valid():
            try:
                menu = form.save()
            except InvalidMove:
                pass
    else:
        form = MoveNodeForm(menu)

    return render_to_response('testmovemenu.html', {
        'form': form,
        'menu': menu,
        'page_info': _get_page_parameters()
    },
                              context_instance=RequestContext(request))
    def test_movenodeform_save(self):
        c = Category.objects.get(pk=2)
        form = MoveNodeForm(
            c,
            {
                "target": "5",
                "position": "first-child",
            },
        )
        self.assertTrue(form.is_valid())
        form.save()

        self.assertTreeEqual(
            Category.objects.all(),
            """
            1 - 1 0 1 20
            5 1 1 1 2 13
            2 5 1 2 3 8
            3 2 1 3 4 5
            4 2 1 3 6 7
            6 5 1 2 9 10
            7 5 1 2 11 12
            8 1 1 1 14 19
            9 8 1 2 15 16
            10 8 1 2 17 18
        """,
        )
 def post(self, request, *args, **kwargs):
     form = MoveNodeForm(self.files, request.POST)
     if form.is_valid():
         try:
             print(form.data['target'])
             files = form.save()
             return HttpResponseRedirect('/')
         except InvalidMove:
             print('invalid')
             return HttpResponseRedirect('/')
     return HttpResponseRedirect('/')
    def move_view(self, request, object_id, extra_context=None):
        """The 'move node' admin view for this model."""

        opts = self.model._meta
        app_label = opts.app_label

        obj = self.get_object(request, object_id)

        if not self.has_change_permission(request, obj):
            raise PermissionDenied

        if obj is None:
            raise Http404(_('%(name)s object with primary key %(key)r does not exist.') % {'name': force_unicode(opts.verbose_name), 'key': object_id})

        if request.POST: # The user has already confirmed the deletion.
            form = MoveNodeForm(obj, request.POST)
            if form.is_valid():
                if "johnny" in django_settings.INSTALLED_APPS:
                    from johnny.cache import invalidate
                    invalidate(self.model)

                form.save()

            self.message_user(request, ugettext('%s has been moved to a new position.') %
                obj)
            return HttpResponseRedirect("../../")
        else:
            form = MoveNodeForm(obj)

        object_name = force_unicode(opts.verbose_name)

        context = {
            "title": _('Move: %s') % force_unicode(obj),
            "form": form,
            "object_name": unicode(obj),
            "object": obj,
            "opts": opts,
            #"root_path": self.admin_site.root_path,
            "app_label": app_label,
        }
        context.update(extra_context or {})
        context_instance = template.RequestContext(request, current_app=self.admin_site.name)
        return render_to_response(self.delete_confirmation_template or [
            "admin/%s/%s/move_node.html" % (app_label, opts.object_name.lower()),
            "admin/%s/move_node.html" % app_label,
            "admin/move_node.html"
        ], context, context_instance=context_instance)
Beispiel #6
0
 def get_form(self, form_class=None):
     if self.request.method == 'POST':
         form = MoveNodeForm(Genre, self.request.POST)
         if form.is_valid():
             try:
                 category = form.save()
                 return HttpResponseRedirect(category.get_absolute_url())
             except InvalidMove:
                 pass
     else:
         '''
         from pprint import pprint
         import pdb; pdb.set_trace()
         TypeError: int() argument must be a string, a bytes-like object or a number, not 'DeferredAttribute'
         '''
         form = MoveNodeForm(Genre)
     return form
Beispiel #7
0
def move_category(request, category_pk):
    category = get_object_or_404(PoiCategory, pk=category_pk)
    if request.method == 'POST':
        form = MoveNodeForm(category, request.POST)
        if form.is_valid():
            try:
                category = form.save()
                return HttpResponseRedirect(category.get_absolute_url())
            except InvalidMove:
                pass
    else:
        form = MoveNodeForm(category)

    return render('poi/poi-form.html', {
        'form': form,
        'category': category,
        'category_tree': PoiCategory.objects.all(),
    })
Beispiel #8
0
def move_category(request, pk):
    category = get_object_or_404(models.PartCategory, pk=pk)
    if request.method == 'POST':
        form = MoveNodeForm(category, request.POST)
        if form.is_valid():
            try:
                category = form.save()
                return HttpResponseRedirect(category.get_absolute_url())
            except InvalidMove:
                pass
    else:
        form = MoveNodeForm(category)

    return render(
        request, 'PnbPartKeepr/test/footprint_form.html', {
            'form': form,
            'category': category,
            'category_tree': models.PartCategory.objects.all(),
        })
Beispiel #9
0
    def test_movenodeform_save(self):
        c = Category.objects.get(pk=2)
        form = MoveNodeForm(c, {
            'target': '5',
            'position': 'first-child',
        })
        self.assertTrue(form.is_valid())
        form.save()

        self.assertTreeEqual(Category.objects.all(), '''
            1 - 1 0 1 20
            5 1 1 1 2 13
            2 5 1 2 3 8
            3 2 1 3 4 5
            4 2 1 3 6 7
            6 5 1 2 9 10
            7 5 1 2 11 12
            8 1 1 1 14 19
            9 8 1 2 15 16
            10 8 1 2 17 18
        ''')
Beispiel #10
0
    def test_movenodeform_save(self):
        c = Category.objects.get(pk=2)
        form = MoveNodeForm(c, {
            'target': '5',
            'position': 'first-child',
        })
        self.assertTrue(form.is_valid())
        form.save()

        self.assertTreeEqual(Category.objects.all(), '''
            1 - 1 0 1 20
            5 1 1 1 2 13
            2 5 1 2 3 8
            3 2 1 3 4 5
            4 2 1 3 6 7
            6 5 1 2 9 10
            7 5 1 2 11 12
            8 1 1 1 14 19
            9 8 1 2 15 16
            10 8 1 2 17 18
        ''')
Beispiel #11
0
def move_genre(request, genre_pk):
    genre = get_object_or_404(Genre, pk=genre_pk)

    if request.method == "POST":
        form = MoveNodeForm(genre, request.POST)

        if form.is_valid():
            try:
                genre = form.save()
                return render(request, "tutorial/genres.html",
                              {'genres': Genre.objects.all()})

            except InvalidMove:
                pass
    else:
        form = MoveNodeForm(genre)

    return render('tutorial/move_genre.html', {
        'form': form,
        'genre': genre,
        'genre_tree': Genre.objects.all()
    })
Beispiel #12
0
def move_category(request, pk=None):
    category = get_object_or_404(Genre, pk=pk)
    if request.method == 'POST':
        form = MoveNodeForm(category, request.POST)
        if form.is_valid():
            try:
                category = form.save()
                return HttpResponseRedirect(reverse_lazy('genre:list'))
            except InvalidMove:
                pass
    else:
        form = MoveNodeForm(category)
    '''
    Be caution on the render. The given example from http://django-mptt.readthedocs.io/en/latest/forms.html#forms
    is outdated for long time
    '''
    return render(request,
                  'genre_move.html',
                  context={
                      'form': form,
                      'category': category,
                      'category_tree': Genre.objects.all(),
                  })
Beispiel #13
0
def testCMSMenuForm(request, menuid):
    from django.http import HttpResponseRedirect
    from vcms.www.models.menu import CMSMenu
    from mptt.exceptions import InvalidMove
    from mptt.forms import MoveNodeForm
    from django.conf import settings

    menu = get_object_or_404(CMSMenu, id=menuid)
    if request.method == 'POST':
        form = MoveNodeForm(menu, request.POST, valid_targets=CMSMenu.objects.all())
        if form.is_valid():
            try:
                menu = form.save()
            except InvalidMove:
                pass
    else:
        form = MoveNodeForm(menu)

    return render_to_response('testmovemenu.html',
                              {'form': form
                               ,'menu': menu
                               , 'page_info': _get_page_parameters() },
                              context_instance=RequestContext(request))
Beispiel #14
0
    def move(self, request, object_id):
        '''Move Treeitem form'''
        model = self.model
        opts = model._meta

        treeitem = self.get_object(request, unquote(object_id).rstrip('/move'))
        if request.method == 'POST':
            form = MoveNodeForm(treeitem, request.POST)
            if form.is_valid():
                form.save()
                return HttpResponse('<script type="text/javascript">window.close();</script>')
                return HttpResponseRedirect(
                    reverse('admin:catalog_treeitem_change', args=[treeitem.id,])
                )
        else:
            form = MoveNodeForm(treeitem)

        fields = form.base_fields.keys()
        fieldsets = [
            (None, {'fields': fields}),
        ]
        
        context = context_admin_helper(self, request, opts, treeitem)
        context.update({
            'title': _('Move %s') % force_unicode(opts.verbose_name),
            'adminform': helpers.AdminForm(
                form,
                fieldsets,
                {},
                (),
                model_admin=self,
            ),
            'errors': helpers.AdminErrorList(form, []),
        })
        context_instance = template.RequestContext(request, current_app=self.admin_site.name)
        return render_to_response('admin/catalog/move_node_form.html',
            context, context_instance=context_instance)