# HG changeset patch # User Sylvain Thénault # Date 1278497290 -7200 # Node ID 36206e846a2712c4763e6e4a202cab5f1140e667 # Parent e6cc50932720e6b1c49887b5e1a4da08dcee0f59 [form fields] smarter __str__ / __repr__ diff -r e6cc50932720 -r 36206e846a27 web/formfields.py --- a/web/formfields.py Wed Jul 07 10:48:07 2010 +0200 +++ b/web/formfields.py Wed Jul 07 12:08:10 2010 +0200 @@ -215,13 +215,24 @@ self.creation_rank = Field.__creation_rank Field.__creation_rank += 1 + def as_string(self, repr=True): + l = [u'<%s' % self.__class__.__name__] + for attr in ('name', 'eidparam', 'role', 'id', 'value'): + value = getattr(self, attr) + if value is not None and value is not _MARKER: + l.append('%s=%r' % (attr, value)) + if repr: + l.append('@%#x' % id(self)) + return u'%s>' % ' '.join(l) + def __unicode__(self): - return u'<%s name=%r eidparam=%s role=%r id=%r value=%r visible=%r @%x>' % ( - self.__class__.__name__, self.name, self.eidparam, self.role, - self.id, self.value, self.is_visible(), id(self)) + return self.as_string(False) + + def __str__(self): + return self.as_string(False).encode('UTF8') def __repr__(self): - return self.__unicode__().encode('utf-8') + return self.as_string(True).encode('UTF8') def init_widget(self, widget): if widget is not None: