def get_blobform_config(request, item, formname): """Helper function used in the create_ method to setup the create forms for blogform items. To create a new blogform item the creation is done in three steps: 1. Stage 1: The user selects a form from a list 2. Stage 2: The create dialog is rendered with the selected form 3. Stage 3: The item is validated and saved. :request: current request :item: item to build the form :formname: name of the form in the formconfig :returns: formconfig, item used to build a form. """ # First check if the fid parameter is provided fid = request.params.get('fid') or item.fid blobform = request.params.get('blobforms') if fid: log.debug("Stage 3: User has submitted data to create a new item") setattr(item, 'fid', fid) formfactory = BlobformForm.get_item_factory() formconfig = Config(parse(formfactory.load(fid).definition)) return item, formconfig.get_form(formname) elif blobform: log.debug("Stage 2: User has selected a blobform %s " % blobform) setattr(item, 'fid', blobform) formfactory = BlobformForm.get_item_factory() formconfig = Config(parse(formfactory.load(blobform).definition)) return item, formconfig.get_form(formname) else: log.debug("Stage 1: User is selecting a blobform") modul = get_item_modul(request, item) formconfig = get_form_config(modul, "blobform") return modul, formconfig
def render(request): """Will return a JSONResponse with a rendererd form. The form defintion and the formid is provided in the POST request.""" _ = request.translate form_config = request.POST.get("definition") config_name = request.POST.get("formid") out = [] try: config = Config(parse(form_config)) form_config = config.get_form(config_name) form = Form(form_config, None, request.db, csrf_token=request.session.get_csrf_token()) out.append(form.render(buttons=False, outline=False)) except Exception as ex: out.append(_('ERROR: %s' % str(ex))) data = {"form": "".join(out)} return JSONResponse(True, data, {"msg": "Ole!"})
def _get_config(config): return Config(parse(config.read()))
def get_form_config_from_db(fid, formname): """Return the blobform configuration for a given form.""" from ringo.model.form import Form factory = Form.get_item_factory() form = factory.load(fid) return Config(parse(form.definition.encode('utf-8'))).get_form(formname)