Luca Montecchiani
l.montecchiani at teamsystem.com
Thu May 24 17:36:56 EDT 2007
Hi all, after a while I figure out all the problems withe the new StringField objects and I've cooked a patch that works for me. The patch try to fix the following problems: 1- StringField not pickable anymore with modpython 3.3.10 2- StringField eval() problem with modpython 3.3.10 3- avoid to put the entire file content on Field __repr__ method please let me know if this could be an acceptable way to address all this compatibility problems. thanks in advance, luca -- Luca Montecchiani Software Di Base TeamSystem S.p.a. ------------------------------------------------------------------------------------------ Informativa ai sensi del D. Lgs. 196-30/06/2003. Il contenuto di questa e.mail e degli eventuali allegati, deve essere nella disponibilità del solo destinatario. Se ricevete per errore questa e-mail siete pregati di informarci (rispedendola al mittente) e di provvedere alla sua rimozione. Possono essere presenti informazioni riservate e non corrette (parzialmente o totalmente). Le e-mail in partenza e in arrivo possono essere oggetto di monitoraggio da parte di Teamsystem spa. Del contenuto è responsabile il mittente della presente. Chiunque venga in possesso non autorizzato di questa e-mail è vincolato dalla Legge a non leggerne il contenuto, a non copiarla, a non diffonderla e a non usarla. Informiamo che per l' esercizio dei diritti di cui all'art. 7 del d.lgs.196/2003 ci si può rivolgere al Titolare del trattamento Teamsystem S.r.l. via Gagarin 205 61100 PESARO per posta o fax, indicando sulla busta o sul foglio la dicitura "Inerente alla Privacy", o inviando una e-mail all' indirizzo privacy at teamsystem.com . ------------------------------------------------------------------------------------------ -------------- next part -------------- --- util.py.orig Wed Nov 22 12:15:54 2006 +++ util.py Thu May 24 23:06:42 2007 @@ -83,7 +83,12 @@ def __repr__(self): """Return printable representation.""" - return "Field(%s, %s)" % (`self.name`, `self.value`) + if self.file: + # avoid to put the entire file content in the + # returned string ! + return "Field(%s, %s)" % (`self.name`, `self.filename`) + else: + return "Field(%s, %s)" % (`self.name`, `self.value`) def __getattr__(self, name): if name != 'value': @@ -126,8 +131,8 @@ return self.file def __repr__(self): - """Return printable representation (to pass unit tests).""" - return "Field(%s, %s)" % (`self.name`, `self.value`) + # this is necessary if you want to eval a StringField + return self.value class FieldList(list): @@ -330,15 +335,18 @@ if disp_options.has_key("filename"): field = Field(name) field.filename = disp_options["filename"] + # file and headers attributes are only + # for Field objects because they will make + # a StringField unpickable + field.file = file + field.headers = headers else: field = StringField(file.read()) field.name = name - field.file = file field.type = ctype field.type_options = type_options field.disposition = disp field.disposition_options = disp_options - field.headers = headers self.list.append(field) def add_field(self, key, value):
|