def __call__(self, form, form_opts=None, field_args={}): """ Render container. :param form: Form object :param form_opts: Form options :param field_args: Optional arguments that should be passed to template or the field """ context = helpers.get_render_ctx() def caller(**kwargs): return context.call(self.child_rule, form, form_opts, kwargs) args = dict(field_args) args['caller'] = caller return super(Container, self).__call__(form, form_opts, args)
def __call__(self, form, form_opts=None, field_args={}): """ Render macro rule. :param form: Form object :param form_opts: Form options :param field_args: Optional arguments that should be passed to the macro """ context = helpers.get_render_ctx() macro = self._resolve(context, self.macro_name) if not macro: raise ValueError('Cannot find macro %s in current context.' % self.macro_name) opts = dict(self.default_args) opts.update(field_args) return macro(**opts)
def __call__(self, form, form_opts=None, field_args={}): ctx = helpers.get_render_ctx() if '.' not in self.field_name and self.field_name in form.data: value = form.data[self.field_name] else: model = self._resolve(ctx, 'model') try: value = reduce(lambda m, n: getattr(m, n) if m else None, self.field_name.split('.'), model) except AttributeError: raise ValueError('Model %s does not have field %s' % (model, self.field_name)) view = self._resolve(ctx, 'admin_view') converter = view.model_form_converter(view.session, view) label = converter._get_label(self.field_name, {}) params = {'label': label, 'value': value} return super(ReadOnly, self).__call__(form, form_opts, params)
def __call__(self, form, form_opts=None, field_args={}): context = helpers.get_render_ctx() tmpl = jinja2.Template(self.template) return jinja2.Markup(tmpl.render(context))