def render(self, **kwargs): """render the form as html or json""" request = self.request if request.format != 'html': meth = getattr(self, 'render_%s_format' % request.format, None) if meth is not None: return meth(**kwargs) else: raise NotFound() if request.model_class: request.model_class = model_class = I18NModel(request.model_class, request) request.model_label = model_label = model_class.label request.model_plural = model_plural = model_class.plural else: model_class = request.model_class model_label = model_plural = '' self.update_resources() kwargs.update( main = get_renderer('pyramid_formalchemy:templates/admin/master.pt').implementation(), model_class=model_class, model_name=request.model_name, model_label=model_label, model_plural=model_plural, breadcrumb=self.breadcrumb(**kwargs), actions=request.actions, F_=get_translator()), return kwargs
def delete_link(): return lambda item: ''' <form action="%(url)s" method="POST" class="ui-grid-icon ui-state-error ui-corner-all"> <input type="submit" class="ui-icon ui-icon-circle-close" title="%(label)s" value="%(label)s" /> </form> ''' % dict(url=self.request.fa_url(self.request.model_name, _pk(item), 'delete'), label=get_translator(request=self.request)('delete'))
def edit_link(): return lambda item: ''' <form action="%(url)s" method="GET" class="ui-grid-icon ui-widget-header ui-corner-all"> <input type="submit" class="ui-grid-icon ui-icon ui-icon-pencil" title="%(label)s" value="%(label)s" /> </form> ''' % dict(url=self.request.fa_url(self.request.model_name, _pk(item), 'edit'), label=get_translator(request=self.request)('edit'))
def edit_link(): return lambda item: ''' <form action="%(url)s" method="GET" class="ui-grid-icon ui-widget-header ui-corner-all"> <input type="submit" class="ui-grid-icon ui-icon ui-icon-pencil" title="%(label)s" value="%(label)s" /> </form> ''' % dict(url=model_url('edit_%s' % self.member_name, id=_pk(item)), label=get_translator()('edit'))
def render(self, **kwargs): """render the form as html or json""" request = self.request if request.format != 'html': meth = getattr(self, 'render_%s_format' % request.format, None) if meth is not None: return meth(**kwargs) else: raise NotFound() if request.model_class: request.model_class = model_class = I18NModel( request.model_class, request) request.model_label = model_label = model_class.label request.model_plural = model_plural = model_class.plural else: model_class = request.model_class model_label = model_plural = '' self.update_resources() kwargs.update(main=get_renderer( 'pyramid_formalchemy:templates/admin/master.pt').implementation(), model_class=model_class, model_name=request.model_name, model_label=model_label, model_plural=model_plural, breadcrumb=self.breadcrumb(**kwargs), actions=request.actions, F_=get_translator()), return kwargs
def delete_link(): return lambda item: ''' <form action="%(url)s" method="POST" class="ui-grid-icon ui-state-error ui-corner-all"> <input type="submit" class="ui-icon ui-icon-circle-close" title="%(label)s" value="%(label)s" /> <input type="hidden" name="_method" value="DELETE" /> </form> ''' % dict(url=model_url(self.member_name, id=_pk(item)), label=get_translator()('delete'))
def delete_link(): return lambda item: '''<form action="%(url)sdelete/%(id)s" method="POST"> <input type="submit" class="icon delete" title="%(label)s" value="" /> <input type="hidden" name="_method" value="DELETE" /> </form> ''' % dict( url=model_URL, id=_pk(item), label=get_translator().gettext('delete'))
def get_linker(action, modelname=modelname): _ = get_translator().gettext label = action == "edit" and _("edit") or _("delete") return lambda item: '<a href="%s" title="%s" class="icon %s">%s</a>' % ( h.url_for(controller=controller, modelname=modelname, action=action, id=_pk(item)), label, action, label, )
def delete_link(): return lambda item: ''' <form action="%(url)s" method="POST" class="ui-grid-icon ui-state-error ui-corner-all"> <input type="submit" class="ui-icon ui-icon-circle-close" title="%(label)s" value="%(label)s" /> </form> ''' % dict(url=self.request.fa_url(self.request.model_name, _pk(item), 'delete'), label=get_translator(request=self.request) ('delete'))
def delete_link(): model_url = url('models', modelname=modelname) return lambda item: '''<form action="%(url)s/%(id)s" method="POST"> <input type="submit" class="icon delete" title="%(label)s" value="" /> <input type="hidden" name="_method" value="DELETE" /> </form> ''' % dict(url=model_url, id=_pk(item), label=get_translator().gettext( 'delete'))
def get_translator(self, **kwargs): """return a GNUTranslations object in the most convenient way """ if 'F_' in kwargs: return kwargs.pop('F_') if 'lang' in kwargs: lang = kwargs.pop('lang') else: lang = 'en' return get_translator(lang=lang).gettext
def delete(self, modelname, id): """Delete an instance of the given model type""" F_ = get_translator().gettext fs = self._model_fieldsets[modelname] S = self.Session() instance = S.query(fs.model.__class__).get(id) key = _pk(instance) S.delete(instance) S.commit() message = F_(_("Deleted %s %s")) % (modelname.encode("utf-8", "ignore"), key) flash(message) redirect_to(controller=self._name, modelname=modelname, action="list", id=None)
def render(self, **kwargs): """render the form as html or json""" request = self.request if request.format != 'html': meth = getattr(self, 'render_%s_format' % request.format, None) if meth is not None: return meth(**kwargs) else: return exc.HTTPNotfound() kwargs.update( main = get_renderer('formalchemy:ext/pyramid/forms/master.pt').implementation(), model_name=self.model_name, breadcrumb=self.breadcrumb(**kwargs), F_=get_translator().gettext) return kwargs
def render(self, **kwargs): """render the form as html or json""" request = self.request if request.format != 'html': meth = getattr(self, 'render_%s_format' % request.format, None) if meth is not None: return meth(**kwargs) else: raise NotFound() kwargs.update( main = get_renderer('pyramid_formalchemy:templates/admin/master.pt').implementation(), model_name=request.model_name, breadcrumb=self.breadcrumb(**kwargs), F_=get_translator()) return kwargs
def delete(self, modelname, id, format='html'): """Delete an instance of the given model type""" F_ = get_translator().gettext fs = self._model_fieldsets[modelname] S = self.Session() instance = S.query(fs.model.__class__).get(id) key = _pk(instance) S.delete(instance) S.commit() if format == 'html': message = F_(_('Deleted %s %s')) % (modelname.encode( 'utf-8', 'ignore'), key) flash(message) redirect(url('models', modelname=modelname)) else: return self.render_json(status=0)
def delete(self, modelname, id, format='html'): """Delete an instance of the given model type""" F_ = get_translator().gettext fs = self._model_fieldsets[modelname] S = self.Session() instance = S.query(fs.model.__class__).get(id) key = _pk(instance) S.delete(instance) S.commit() if format == 'html': message = F_(_('Deleted %s %s')) % (modelname.encode('utf-8', 'ignore'), key) flash(message) redirect(url('models', modelname=modelname)) else: return self.render_json(status=0)
def render(self, format='html', **kwargs): """render the form as html or json""" if format != 'html': meth = getattr(self, 'render_%s_format' % format, None) if meth is not None: return meth(**kwargs) else: abort(404) kwargs.update(model_name=self.model_name or self.member_name, prefix_name=self.prefix_name, collection_name=self.collection_name, member_name=self.member_name, breadcrumb=self.breadcrumb(**kwargs), F_=get_translator()) if self.engine: return self.engine.render(self.template, **kwargs) else: return render(self.template, extra_vars=kwargs)
def render(self, *ids, **options): fieldsets = [] if ids: ids = [self.get(id).__name__ for id in ids] else: ids = self._fs_dict.keys() for id, title in self._fs: if id in ids: fs = self._fs_dict[id] fs.focus = False fieldsets.append(dict(id=id, title=title, fs=fs)) kwargs = dict(footer='', header='') kwargs.update(self._options) return self.template.render_unicode(id=self._id, rid=str(random())[2:], fieldsets=fieldsets, options=dumps(options), F_=get_translator(request=self._request), **kwargs)
def render(self, *ids, **options): fieldsets = [] if ids: ids = [self.get(id).__name__ for id in ids] else: ids = self._fs_dict.keys() for id, title in self._fs: if id in ids: fs = self._fs_dict[id] fs.focus = False fieldsets.append(dict(id=id, title=title, fs=fs)) kwargs = dict(footer='', header='') kwargs.update(self._options) return self.template.render_unicode( id=self._id, rid=str(random())[2:], fieldsets=fieldsets, options=dumps(options), F_=get_translator(request=self.__request), **kwargs)
def edit(self, modelname, id=None): """Edit (or create, if `id` is None) an instance of the given model type""" F_ = get_translator().gettext fs = self._model_fieldsets[modelname] S = self.Session() if id: instance = S.query(fs.model.__class__).get(id) c.fs = fs.bind(instance) title = "Edit" else: c.fs = fs.bind(fs.model.__class__, session=S) title = "New object" if request.method == "POST": c.fs = c.fs.bind(data=request.params) log.debug("saving %s w/ %s" % (c.fs.model.id, request.POST)) if c.fs.validate(): c.fs.sync() S.flush() if not id: # needed if the object does not exist in db if not object_session(c.fs.model): S.save(c.fs.model) message = _("Created %s %s") else: S.refresh(c.fs.model) message = _("Modified %s %s") S.commit() message = F_(message) % (modelname.encode("utf-8", "ignore"), _pk(c.fs.model)) flash(message) redirect_to(modelname=modelname, action="list", id=None) return self._engine( "admin_edit", c=c, action=title, id=id, controller=self._name, modelname=modelname, custom_css=self._custom_css, custom_js=self._custom_js, )
def _update_args(cls, kw): kw['F_'] = get_translator(kw.get('lang', None)).gettext kw['html'] = helpers return kw
def edit_link(): model_url = url('models', modelname=modelname) return lambda item: '<a href="%(url)s/%(id)s" title="%(label)s" class="icon edit">%(label)s</a>' % dict( url=model_url, id=_pk(item), label=get_translator().gettext('edit'))
def edit(self, modelname, id=None, format='html'): """Edit (or create, if `id` is None) an instance of the given model type""" saved = 1 if id and id.endswith('.json'): id = id[:-5] format = 'json' if request.method == 'POST' or format == 'json': if id: prefix = '%s-%s' % (modelname, id) else: prefix = '%s-' % modelname if request.method == 'PUT': items = json.load(request.body_file).items() request.method = 'POST' elif '_method' not in request.POST: items = request.POST.items() format = 'json' else: items = None if items: for k, v in items: if not k.startswith(prefix): if isinstance(v, list): for val in v: request.POST.add('%s-%s' % (prefix, k), val) else: request.POST.add('%s-%s' % (prefix, k), v) fs = self._model_fieldsets[modelname] S = self.Session() if id: instance = S.query(fs.model.__class__).get(id) assert instance, id title = 'Edit' else: instance = fs.model.__class__ title = 'New object' if request.method == 'POST': F_ = get_translator().gettext c.fs = fs.bind(instance, data=request.POST, session=not id and S or None) if c.fs.validate(): c.fs.sync() S.flush() if not id: # needed if the object does not exist in db if not object_session(c.fs.model): S.add(c.fs.model) message = _('Created %s %s') else: S.refresh(c.fs.model) message = _('Modified %s %s') S.commit() saved = 0 if format == 'html': message = F_(message) % (modelname.encode('utf-8', 'ignore'), _pk(c.fs.model)) flash(message) redirect(url('models', modelname=modelname)) else: c.fs = fs.bind(instance, session=not id and S or None) if format == 'html': return self._engine('admin_edit', c=c, action=title, id=id, modelname=modelname, custom_css = self._custom_css, custom_js = self._custom_js) else: return self.render_json(fs=c.fs, status=saved, model=modelname)
def _update_args(cls, kw): kw['F_'] = get_translator(lang=kw.get('lang', None), request=kw.get('request', None)) kw['html'] = helpers return kw
def edit(self, modelname, id=None, format='html'): """Edit (or create, if `id` is None) an instance of the given model type""" saved = 1 if id and id.endswith('.json'): id = id[:-5] format = 'json' if request.method == 'POST' or format == 'json': if id: prefix = '%s-%s' % (modelname, id) else: prefix = '%s-' % modelname if request.method == 'PUT': items = json.load(request.body_file).items() request.method = 'POST' elif '_method' not in request.POST: items = request.POST.items() format = 'json' else: items = None if items: for k, v in items: if not k.startswith(prefix): if isinstance(v, list): for val in v: request.POST.add('%s-%s' % (prefix, k), val) else: request.POST.add('%s-%s' % (prefix, k), v) fs = self._model_fieldsets[modelname] S = self.Session() if id: instance = S.query(fs.model.__class__).get(id) assert instance, id title = 'Edit' else: instance = fs.model.__class__ title = 'New object' if request.method == 'POST': F_ = get_translator().gettext c.fs = fs.bind(instance, data=request.POST, session=not id and S or None) if c.fs.validate(): c.fs.sync() S.flush() if not id: # needed if the object does not exist in db if not object_session(c.fs.model): S.add(c.fs.model) message = _('Created %s %s') else: S.refresh(c.fs.model) message = _('Modified %s %s') S.commit() saved = 0 if format == 'html': message = F_(message) % (modelname.encode( 'utf-8', 'ignore'), _pk(c.fs.model)) flash(message) redirect(url('models', modelname=modelname)) else: c.fs = fs.bind(instance, session=not id and S or None) if format == 'html': return self._engine('admin_edit', c=c, action=title, id=id, modelname=modelname, custom_css=self._custom_css, custom_js=self._custom_js) else: return self.render_json(fs=c.fs, status=saved, model=modelname)
def edit_link(): return lambda item: '<a href="%(url)sedit/%(id)s" title="%(label)s" class="icon edit">%(label)s</a>' % dict( url=model_URL, id=_pk(item), label=get_translator().gettext('edit'))