def blocks_reorder(request): assert_has_global_permission(user=request.user, codename=MANAGE_BLOCK_PERMISSION) def relocate_blocks(items, cls): for order, item in enumerate(items): if "#" in item: item_split = item.split("#") element_id = int(item_split[0]) placed_at = item_split[1] try: cls.objects.get(id=element_id, placed_at=placed_at, order=order) except cls.DoesNotExist: element = cls.objects.get(id=element_id) element.order = order element.placed_at = placed_at element.save() mimetype = "application/json" if request.is_ajax() and request.POST and "new_order" in request.POST: new_order = request.POST['new_order'] items = new_order.split(",") relocate_blocks(items, RegisteredBlock) return HttpResponse(dumps(True), mimetype=mimetype) return HttpResponseBadRequest(mimetype=mimetype)
def generate_blocks_configuration_for_content(request, block_id): assert_has_global_permission(user=request.user, codename=MANAGE_BLOCK_PERMISSION) try: reg_block = RegisteredBlock.objects.get(id=block_id) block = reg_block.get_registry_item() form = BlockConfigForm() form.fields['config'].set_config(block.get_config()) result = form.as_django_admin() result = result.replace('<fieldset class="module aligned">', '') result = result.replace('</fieldset>', '') result = result.replace('<div class="form-row">', '') result = result[::-1].replace('>vid/<', '', 1)[::-1] # previous replace just removes the last </div> ocurrence result = result.replace(_('Configuration'), _('Block specific configuration')) result += '<p class="help">Fill this field to overwrite the block configuration</p>' except RegisteredBlock.DoesNotExist: result = '' return HttpResponse(result, mimetype='text/html')
def generate_blocks_configuration(request, block_id): assert_has_global_permission(user=request.user, codename=MANAGE_BLOCK_PERMISSION) reg_block = RegisteredBlock.objects.get(id=block_id) block = reg_block.get_registry_item() config = block.get_config() if request.method == 'POST': form = BlockConfigForm(request.POST) form.fields['config'].set_config(config) if form.is_valid(): reg_block.config = form.cleaned_data['config'] reg_block.save() return HttpResponse('ok') else: form = BlockConfigForm() form.fields['config'].set_config(config) return render_to_response('blocks/block_config.html', { 'form': form, 'reg_block': reg_block, 'block': block, })
def add_block(request): assert_has_global_permission(user=request.user, codename=MANAGE_BLOCK_PERMISSION) if request.method == 'POST': form = AddBlockForm(request.POST) if form.is_valid(): registered_block = form.save() block = registered_block.get_registry_item() if registered_block.tied and (isinstance(block, ContentBlock) or isinstance(block, SectionBlock)): result = block.render(request, form.cleaned_data.get('place'), registered_block.tied, RequestContext(request)) else: result = block.render(request, form.cleaned_data.get('place'), RequestContext(request)) result = '<div class="blockWrapper">%s</div>' % result return HttpResponse(result) else: place = request.GET.get('place', None) if not place: raise Http404 form = AddBlockForm(initial={'place': place, 'contentid': request.GET.get('contentid', None), 'sectionid': request.GET.get('sectionid', None), }) return render_to_response('blocks/add_block.html', { 'form': form, })
def invalidate_cache(request, block_id): assert_has_global_permission(user=request.user, codename=MANAGE_BLOCK_PERMISSION) reg_block = RegisteredBlock.objects.get(id=block_id) reg_block.get_registry_item().invalidate_cache() return HttpResponse('ok')
def remove_block(request, block_id): assert_has_global_permission(user=request.user, codename=MANAGE_BLOCK_PERMISSION) reg_block = RegisteredBlock.objects.get(id=block_id) reg_block.delete() return HttpResponse('ok')