From 61553db52911ce9951243d4f78f9eb488d4e823d Mon Sep 17 00:00:00 2001 From: Daniel Dourvaris Date: Fri, 29 Jul 2016 17:27:38 +0300 Subject: [PATCH] deform: use pypi deform library and add helpers to deform scope directly to avoid passing it each time form is rendered --- pkgs/python-packages.nix | 11 ++++--- rhodecode/model/forms.py | 29 ++++++++++++------- .../templates/admin/integrations/edit.html | 3 +- 3 files changed, 25 insertions(+), 18 deletions(-) diff --git a/pkgs/python-packages.nix b/pkgs/python-packages.nix index 0430c790..6faf3321 100644 --- a/pkgs/python-packages.nix +++ b/pkgs/python-packages.nix @@ -572,14 +572,13 @@ }; }; deform = super.buildPythonPackage { - name = "deform-2.0a3.dev0"; + name = "deform-2.0a2"; buildInputs = with self; []; doCheck = false; - propagatedBuildInputs = with self; [Chameleon colander iso8601 peppercorn translationstring zope.deprecation]; - src = fetchgit { - url = "https://github.com/Pylons/deform"; - rev = "08fb9de077c76951f6e70e28d4bf060a209d3d39"; - sha256 = "0nmhajc4pfgp4lbwhs5szqfzswpij1qyr69m7qkyhncl2g2d759r"; + propagatedBuildInputs = with self; [Chameleon colander peppercorn translationstring zope.deprecation]; + src = fetchurl { + url = "https://pypi.python.org/packages/8d/b3/aab57e81da974a806dc9c5fa024a6404720f890a6dcf2e80885e3cb4609a/deform-2.0a2.tar.gz"; + md5 = "7a90d41f7fbc18002ce74f39bd90a5e4"; }; meta = { license = [ { fullName = "BSD-derived (http://www.repoze.org/LICENSE.txt)"; } ]; diff --git a/rhodecode/model/forms.py b/rhodecode/model/forms.py index d503d0d9..68bb3724 100644 --- a/rhodecode/model/forms.py +++ b/rhodecode/model/forms.py @@ -42,28 +42,37 @@ for SELECT use formencode.All(OneOf(list), Int()) """ import deform -from pkg_resources import resource_filename - -deform_templates = resource_filename('deform', 'templates') -rhodecode_templates = resource_filename('rhodecode', 'templates/forms') -search_path = (rhodecode_templates, deform_templates) - -deform.Form.set_zpt_renderer(search_path) - - import logging - import formencode + +from pkg_resources import resource_filename from formencode import All, Pipe from pylons.i18n.translation import _ from rhodecode import BACKENDS +from rhodecode.lib import helpers from rhodecode.model import validators as v log = logging.getLogger(__name__) +deform_templates = resource_filename('deform', 'templates') +rhodecode_templates = resource_filename('rhodecode', 'templates/forms') +search_path = (rhodecode_templates, deform_templates) + + +class RhodecodeFormZPTRendererFactory(deform.ZPTRendererFactory): + """ Subclass of ZPTRendererFactory to add rhodecode context variables """ + def __call__(self, template_name, **kw): + kw['h'] = helpers + return self.load(template_name)(**kw) + + +form_renderer = RhodecodeFormZPTRendererFactory(search_path) +deform.Form.set_default_renderer(form_renderer) + + def LoginForm(): class _LoginForm(formencode.Schema): allow_extra_fields = True diff --git a/rhodecode/templates/admin/integrations/edit.html b/rhodecode/templates/admin/integrations/edit.html index 20e2e943..3c86f8c9 100644 --- a/rhodecode/templates/admin/integrations/edit.html +++ b/rhodecode/templates/admin/integrations/edit.html @@ -38,7 +38,6 @@
- ## TODO: dan: find way to put h in the deform context properly - ${form.render(h=h) | n} + ${form.render() | n}