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