def move_plugin(self, request): # only allow POST if request.method != "POST": return HttpResponse(str("error")) if 'plugin_id' in request.POST: # single plugin moving plugin = CMSPlugin.objects.get(pk=int(request.POST['plugin_id'])) if 'placeholder_id' in request.POST: placeholder = Placeholder.objects.get( pk=int(request.POST['placeholder_id'])) else: placeholder = plugin.placeholder # check permissions if not placeholder.has_change_permission(request): raise Http404 try: has_reached_plugin_limit(placeholder, plugin.plugin_type, plugin.language) except PluginLimitReached, e: return HttpResponseBadRequest(str(e)) # plugin positions are 0 based, so just using count here should give us 'last_position + 1' position = CMSPlugin.objects.filter( placeholder=placeholder).count() plugin.placeholder = placeholder plugin.position = position plugin.save()
def move_plugin(self, request): # only allow POST if request.method != "POST": return HttpResponse(str("error")) if 'plugin_id' in request.POST: # single plugin moving plugin = CMSPlugin.objects.get(pk=int(request.POST['plugin_id'])) if 'placeholder_id' in request.POST: placeholder = Placeholder.objects.get(pk=int(request.POST['placeholder_id'])) else: placeholder = plugin.placeholder # check permissions if not placeholder.has_change_permission(request): raise Http404 try: has_reached_plugin_limit(placeholder, plugin.plugin_type, plugin.language) except PluginLimitReached, e: return HttpResponseBadRequest(str(e)) # plugin positions are 0 based, so just using count here should give us 'last_position + 1' position = CMSPlugin.objects.filter(placeholder=placeholder).count() plugin.placeholder = placeholder plugin.position = position plugin.save()
def add_plugin(self, request): # only allow POST if request.method != "POST": raise Http404 plugin_type = request.POST['plugin_type'] if not has_plugin_permission(request.user, plugin_type, "add"): return HttpResponseForbidden( "You don't have permission to add plugins") placeholder_id = request.POST.get('placeholder', None) position = None language = self.get_language_from_request(request) parent = None # check if we got a placeholder (id) if placeholder_id: placeholder = get_object_or_404(Placeholder, pk=placeholder_id) else: # else get the parent_id parent_id = request.POST.get('parent_id', None) if not parent_id: # if we get neither a placeholder nor a parent, bail out raise Http404 parent = get_object_or_404(CMSPlugin, pk=parent_id) placeholder = parent.placeholder # check add permissions on placeholder if not placeholder.has_add_permission(request): return HttpResponseForbidden( _("You don't have permission to add content here.")) try: has_reached_plugin_limit(placeholder, plugin_type, language) except PluginLimitReached, e: return HttpResponseBadRequest(str(e))
def add_plugin(self, request): # only allow POST if request.method != "POST": raise Http404 plugin_type = request.POST['plugin_type'] if not has_plugin_permission(request.user, plugin_type, "add"): return HttpResponseForbidden("You don't have permission to add plugins") placeholder_id = request.POST.get('placeholder', None) position = None language = self.get_language_from_request(request) parent = None # check if we got a placeholder (id) if placeholder_id: placeholder = get_object_or_404(Placeholder, pk=placeholder_id) else: # else get the parent_id parent_id = request.POST.get('parent_id', None) if not parent_id: # if we get neither a placeholder nor a parent, bail out raise Http404 parent = get_object_or_404(CMSPlugin, pk=parent_id) placeholder = parent.placeholder # check add permissions on placeholder if not placeholder.has_add_permission(request): return HttpResponseForbidden(_("You don't have permission to add content here.")) try: has_reached_plugin_limit(placeholder, plugin_type, language) except PluginLimitReached, e: return HttpResponseBadRequest(str(e))
def move_plugin(self, request): """ POST request with following parameters: -plugin_id -placeholder_id -plugin_language (optional) -plugin_parent (optional) -plugin_order (array, optional) """ plugin = CMSPlugin.objects.get(pk=int(request.POST['plugin_id'])) placeholder = Placeholder.objects.get(pk=request.POST['placeholder_id']) parent_id = request.POST.get('plugin_parent', None) language = request.POST.get('plugin_language', plugin.language) if not parent_id: parent_id = None else: parent_id = int(parent_id) order = request.POST.getlist("plugin_order[]") if not self.has_move_plugin_permission(request, plugin, placeholder): return HttpResponseForbidden(_("You have no permission to move this plugin")) if plugin.parent_id != parent_id: if parent_id: parent = CMSPlugin.objects.get(pk=parent_id) if parent.placeholder_id != placeholder.pk: return HttpResponseBadRequest('parent must be in the same placeholder') if parent.language != language: return HttpResponseBadRequest('parent must be in the same language as plugin_language') else: parent = None plugin.move_to(parent, position='last-child') try: template = self.get_placeholder_template(request, placeholder) has_reached_plugin_limit(placeholder, plugin.plugin_type, plugin.language, template=template) except PluginLimitReached as er: return HttpResponseBadRequest(er) plugin.save() for child in plugin.get_descendants(include_self=True): child.placeholder = placeholder child.language = language child.save() plugins = CMSPlugin.objects.filter(parent=parent_id, placeholder=placeholder) for level_plugin in plugins: x = 0 for pk in order: if level_plugin.pk == int(pk): level_plugin.position = x level_plugin.save() break x += 1 self.post_move_plugin(request, plugin) json_response = {'reload': requires_reload(PLUGIN_MOVE_ACTION, [plugin])} return HttpResponse(simplejson.dumps(json_response), content_type='application/json')
def add_plugin(self, request): """ POST request should have the following data: - placeholder_id - plugin_type - plugin_language - plugin_parent (optional) """ plugin_type = request.POST['plugin_type'] placeholder_id = request.POST.get('placeholder_id', None) parent_id = request.POST.get('parent_id', None) if parent_id: warnings.warn("parent_id is deprecated and will be removed in 3.0.1, use plugin_parent instead", DeprecationWarning) if not parent_id: parent_id = request.POST.get('plugin_parent', None) placeholder = get_object_or_404(Placeholder, pk=placeholder_id) if not self.has_add_plugin_permission(request, placeholder, plugin_type): return HttpResponseForbidden(_('You do not have permission to add a plugin')) parent = None language = request.POST.get('plugin_language') or get_language_from_request(request) try: has_reached_plugin_limit(placeholder, plugin_type, language, template=self.get_placeholder_template(request, placeholder)) except PluginLimitReached as er: return HttpResponseBadRequest(er) # page add-plugin if not parent_id: position = request.POST.get('plugin_order', CMSPlugin.objects.filter(language=language, placeholder=placeholder).count()) # in-plugin add-plugin else: parent = get_object_or_404(CMSPlugin, pk=parent_id) placeholder = parent.placeholder position = request.POST.get('plugin_order', CMSPlugin.objects.filter(language=language, parent=parent).count()) # placeholder (non-page) add-plugin # Sanity check to make sure we're not getting bogus values from JavaScript: if settings.USE_I18N: if not language or not language in [lang[0] for lang in settings.LANGUAGES]: return HttpResponseBadRequest(_("Language must be set to a supported language!")) if parent and parent.language != language: return HttpResponseBadRequest(_("Parent plugin language must be same as language!")) else: language = settings.LANGUAGE_CODE plugin = CMSPlugin(language=language, plugin_type=plugin_type, position=position, placeholder=placeholder) if parent: plugin.position = CMSPlugin.objects.filter(parent=parent).count() plugin.insert_at(parent, position='last-child', save=False) plugin.save() self.post_add_plugin(request, placeholder, plugin) response = { 'url': force_unicode( reverse("admin:%s_%s_edit_plugin" % (self.model._meta.app_label, self.model._meta.module_name), args=[plugin.pk])), 'breadcrumb': plugin.get_breadcrumb(), } return HttpResponse(simplejson.dumps(response), content_type='application/json')
def move_plugin(self, request): """ POST request with following parameters: -plugin_id -placeholder_id -plugin_language (optional) -plugin_parent (optional) -plugin_order (array, optional) """ plugin = CMSPlugin.objects.get(pk=int(request.POST['plugin_id'])) placeholder = Placeholder.objects.get( pk=request.POST['placeholder_id']) parent_id = request.POST.get('plugin_parent', None) language = request.POST.get('plugin_language', plugin.language) if not parent_id: parent_id = None else: parent_id = int(parent_id) order = request.POST.getlist("plugin_order[]") if not self.has_move_plugin_permission(request, plugin, placeholder): return HttpResponseForbidden( _("You have no permission to move this plugin")) if plugin.parent_id != parent_id: if parent_id: parent = CMSPlugin.objects.get(pk=parent_id) if parent.placeholder_id != placeholder.pk: return HttpResponseBadRequest( 'parent must be in the same placeholder') if parent.language != language: return HttpResponseBadRequest( 'parent must be in the same language as plugin_language' ) else: parent = None plugin.move_to(parent, position='last-child') try: template = self.get_placeholder_template(request, placeholder) has_reached_plugin_limit(placeholder, plugin.plugin_type, plugin.language, template=template) except PluginLimitReached as er: return HttpResponseBadRequest(er) plugin.save() for child in plugin.get_descendants(include_self=True): child.placeholder = placeholder child.language = language child.save() plugins = CMSPlugin.objects.filter(parent=parent_id, placeholder=placeholder) for level_plugin in plugins: x = 0 for pk in order: if level_plugin.pk == int(pk): level_plugin.position = x level_plugin.save() break x += 1 self.post_move_plugin(request, plugin) json_response = { 'reload': requires_reload(PLUGIN_MOVE_ACTION, [plugin]) } return HttpResponse(simplejson.dumps(json_response), content_type='application/json')
def add_plugin(self, request): """ POST request should have the following data: - placeholder_id - plugin_type - plugin_language - plugin_parent (optional) """ plugin_type = request.POST['plugin_type'] placeholder_id = request.POST.get('placeholder_id', None) parent_id = request.POST.get('parent_id', None) if parent_id: warnings.warn( "parent_id is deprecated and will be removed in 3.0.1, use plugin_parent instead", DeprecationWarning) if not parent_id: parent_id = request.POST.get('plugin_parent', None) placeholder = get_object_or_404(Placeholder, pk=placeholder_id) if not self.has_add_plugin_permission(request, placeholder, plugin_type): return HttpResponseForbidden( _('You do not have permission to add a plugin')) parent = None language = request.POST.get( 'plugin_language') or get_language_from_request(request) try: has_reached_plugin_limit(placeholder, plugin_type, language, template=self.get_placeholder_template( request, placeholder)) except PluginLimitReached as er: return HttpResponseBadRequest(er) # page add-plugin if not parent_id: position = request.POST.get( 'plugin_order', CMSPlugin.objects.filter(language=language, placeholder=placeholder).count()) # in-plugin add-plugin else: parent = get_object_or_404(CMSPlugin, pk=parent_id) placeholder = parent.placeholder position = request.POST.get( 'plugin_order', CMSPlugin.objects.filter(language=language, parent=parent).count()) # placeholder (non-page) add-plugin # Sanity check to make sure we're not getting bogus values from JavaScript: if settings.USE_I18N: if not language or not language in [ lang[0] for lang in settings.LANGUAGES ]: return HttpResponseBadRequest( _("Language must be set to a supported language!")) if parent and parent.language != language: return HttpResponseBadRequest( _("Parent plugin language must be same as language!")) else: language = settings.LANGUAGE_CODE plugin = CMSPlugin(language=language, plugin_type=plugin_type, position=position, placeholder=placeholder) if parent: plugin.position = CMSPlugin.objects.filter(parent=parent).count() plugin.insert_at(parent, position='last-child', save=False) plugin.save() self.post_add_plugin(request, placeholder, plugin) response = { 'url': force_unicode( reverse( "admin:%s_%s_edit_plugin" % (self.model._meta.app_label, self.model._meta.module_name), args=[plugin.pk])), 'breadcrumb': plugin.get_breadcrumb(), } return HttpResponse(simplejson.dumps(response), content_type='application/json')