[Zope-dev] schema upgrades with zope.formlib + FIX
Johannes Raggam
raggam-nl at adm.at
Tue Feb 15 08:34:39 EST 2011
well, for schema upgrades, also following patch seems to be necessary:
>From c11064b8d8a7607d41071250f587f097f8c130a3 Mon Sep 17 00:00:00 2001
From: Johannes Raggam <raggam-nl at adm.at>
Date: Tue, 15 Feb 2011 14:29:56 +0100
Subject: [PATCH 2/2] gracefully set newvalue for upgraded schemas, where
oldvalue isn't available.
---
zope/formlib/form.py | 8 +++++++-
1 files changed, 7 insertions(+), 1 deletions(-)
diff --git a/zope/formlib/form.py b/zope/formlib/form.py
index 0d3ade3..ff10168 100755
--- a/zope/formlib/form.py
+++ b/zope/formlib/form.py
@@ -532,7 +532,13 @@ def applyData(context, form_fields, data,
adapters=None):
name = form_field.__name__
newvalue = data.get(name, form_field) # using form_field as
marker
- if (newvalue is not form_field) and (field.get(adapter) !=
newvalue):
+ try:
+ oldvalue = field.get(adapter)
+ except AttributeError:
+ # value not available after schema upgrade
+ # make sure that oldvalue != newwalue
+ oldvalue = not bool(newvalue)
+ if (newvalue is not form_field) and (oldvalue != newvalue):
descriptions.setdefault(interface,
[]).append(field.__name__)
field.set(adapter, newvalue)
--
1.7.1
On Tue, 2011-02-15 at 13:25 +0100, Hanno Schlichting wrote:
> On Tue, Feb 15, 2011 at 1:21 PM, Johannes Raggam <raggam-nl at adm.at> wrote:
> > while - IMO - zope.schema throws that error justifiably, i think
> > zope.formlib should handle it more gracefully in setUpEditWidgets. i
> > think, this error comes with every schema upgrade for zope.formlib based
> > edit-forms. so, what do you think of following patch?
>
> The usual approach is to add new attributes as class attributes to the
> persistent object. Or write an actual database upgrade step, either
> via something like zope.generations or with a GenericSetup upgrade
> step.
>
> But for zope.formlib it make indeed make sense to be more lenient
> here. So +0 on your patch.
>
> Hanno
--
johannes raggam / thet
python plone zope development
http://johannes.raggam.co.at/
mailto:johannes at raggam.co.at
http://bluedynamics.com/
More information about the Zope-Dev
mailing list