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 test_movenodeform(self): self.maxDiff = 2000 form = MoveNodeForm(Genre.objects.get(pk=7)) # Required attribute on select widgets depends on Django versions. required_on_select = django.VERSION >= (1, 10) required_on_select_without_empty = required_on_select and django.VERSION < ( 1, 11) expected = ( '<tr><th><label for="id_target">Target:</label></th>' '<td><select name="target" size="10" id="id_target" {required}>' '<option value="" selected>---------</option>' '<option value="1"> Action</option>' '<option value="2">--- Platformer</option>' '<option value="3">------ 2D Platformer</option>' '<option value="4">------ 3D Platformer</option>' '<option value="5">------ 4D Platformer</option>' '<option value="6">--- Shootemup</option>' '<option value="8">------ Horizontal Scrolling Shootemup</option>' '<option value="9"> Role-playing Game</option>' '<option value="10">--- Action RPG</option>' '<option value="11">--- Tactical RPG</option>' '</select></td></tr>' '<tr><th><label for="id_position">Position:</label></th>' '<td><select name="position" id="id_position" {required_no_empty}>' '<option value="first-child">First child</option>' '<option value="last-child">Last child</option>' '<option value="left">Left sibling</option>' '<option value="right">Right sibling</option>' '</select></td></tr>').format( required='required' if required_on_select else '', required_no_empty='required' if required_on_select_without_empty else '') self.assertHTMLEqual(str(form), expected) form = MoveNodeForm(Genre.objects.get(pk=7), level_indicator='+--', target_select_size=5) self.assertIn('size="5"', str(form['target'])) self.assertInHTML('<option value="3">+--+-- 2D Platformer</option>', str(form['target'])) form = MoveNodeForm(Genre.objects.get(pk=7), position_choices=(('left', 'left'), )) self.assertHTMLEqual(str(form['position']), ( '<select id="id_position" name="position" {required}>' '<option value="left">left</option>' '</select>' ).format( required='required' if required_on_select_without_empty else ''))
def get(self, request, *args, **kwargs): form = MoveNodeForm(self.files) # return render(request, self.page, {'nodes':File.objects.all()}) return render(request, self.page, { 'form': form, 'files': self.files, 'files_tree': File.objects.all() })
def test_movenodeform(self): self.maxDiff = 2000 form = MoveNodeForm(Genre.objects.get(pk=7)) expected = ( '<tr><th><label for="id_target">Target:</label></th>' '<td><select name="target" size="10" id="id_target" required>' '<option value="" selected>---------</option>' '<option value="1"> Action</option>' '<option value="2">--- Platformer</option>' '<option value="3">------ 2D Platformer</option>' '<option value="4">------ 3D Platformer</option>' '<option value="5">------ 4D Platformer</option>' '<option value="6">--- Shootemup</option>' '<option value="8">------ Horizontal Scrolling Shootemup</option>' '<option value="9"> Role-playing Game</option>' '<option value="10">--- Action RPG</option>' '<option value="11">--- Tactical RPG</option>' "</select></td></tr>" '<tr><th><label for="id_position">Position:</label></th>' '<td><select name="position" id="id_position">' '<option value="first-child">First child</option>' '<option value="last-child">Last child</option>' '<option value="left">Left sibling</option>' '<option value="right">Right sibling</option>' "</select></td></tr>" ) self.assertHTMLEqual(str(form), expected) form = MoveNodeForm( Genre.objects.get(pk=7), level_indicator="+--", target_select_size=5 ) self.assertIn('size="5"', str(form["target"])) self.assertInHTML( '<option value="3">+--+-- 2D Platformer</option>', str(form["target"]) ) form = MoveNodeForm( Genre.objects.get(pk=7), position_choices=(("left", "left"),) ) self.assertHTMLEqual( str(form["position"]), ( '<select id="id_position" name="position">' '<option value="left">left</option>' "</select>" ), )
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 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(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 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)
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 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(), })