Re: [Zope] Can't add "date" property to new ZClass
It's a mildly annoying "feature" - you need to put a default date - 2000/01/01 will work fine. Instances must be created with a date in that field. Sometimes I think it's easier to leave them as strings....same goes for int fields - must have a default.,"loren stafford" <lstaffor-@icompression.com> wrote: ,original article:http://www.egroups.com/group/zope/?start=14438,> I'm creating a brand new ZClass (called "PDFClass"). It's my first ZClass.,> I've just added the Common Instance Property Sheet (called "PDFProperties").,> Now I'm trying to add properties to that property sheet. I added one,> "string" property OK, but now when I add the "date" property "pub_date", I,> get this error:,> Invalid Date-Time String: Sorry, an error occurred,> ,> Of course, the value is invalid -- I didn't put any value in the "Value",> box, because this is a class property, and values only make sense when the,> class is instantiated, right?,> ,> Is this Zope's problem or mine? -- Dr Ross Lazarus Associate Professor and Sub-Dean for Information Technology Faculty of Medicine, Room 126A, A27, University of Sydney, Camperdown, NSW 2006, Australia Tel: (+61 2) 93514429 Mobile: +61414872482 Fax: (+61 2) 93516646 Email: rossl@med.usyd.edu.au http://www.health.usyd.edu.au/people/rossl.htm
After adding the report to the Collector, I went back to Zope to see what would happen if I just put in a dummy value. It accepts it and goes on it's merry way. So then I finish up the class, and modify the PDFClass_addForm method to prompt for the class properties and the file ("File" is one of the base classes). The date field looks like this: <input type=text name="pub_date:date"> (You'd think ZClass could automatically put the properties on the _addForm, too.) Now it's time to try to create a test instance of the class. I get the _addForm, fill in all the fields and submit. Success! ...well, almost. There's a date in the new instance, but it's the dummy date I put in the class, not the date I specified for the instance. So I tried changing the form field to: <input type=text name="pub_date"> (no type override) ...same result. What's even weirder is that the method that displays objects with the "PDF File" meta-type created by this class doesn't seem to get any date at all from the object -- it shows up as empty -- neither the dummy class date nor the instance date I put in. Michel, is that what you meant by: "In fact, it should be smarter for instances also"? -- Loren
From: Dr. Ross Lazarus [mailto:rossl@med.usyd.edu.au] Sent: Monday, October 11, 1999 15:11 Subject: Re: [Zope] Can't add "date" property to new ZClass
It's a mildly annoying "feature" - you need to put a default date - 2000/01/01 will work fine. Instances must be created with a date in that field. Sometimes I think it's easier to leave them as strings....same goes for int fields - must have a default.
Loren Stafford wrote:
I'm creating a brand new ZClass (called "PDFClass"). It's my first ZClass. I've just added the Common Instance Property Sheet (called
"PDFProperties").
Now I'm trying to add properties to that property sheet. I added one "string" property OK, but now when I add the "date" property "pub_date", I get this error:
Zope Error Zope has encountered an error while publishing this resource. Invalid Date-Time String Sorry, a Zope error occurred.
Traceback (innermost last): File /opt/Zope-2.0.0/lib/python/ZPublisher/Publish.py, line 214, in publish_module File /opt/Zope-2.0.0/lib/python/ZPublisher/Publish.py, line 179, in publish File /opt/Zope-2.0.0/lib/python/Zope/__init__.py, line 201, in zpublisher_exception_hook (Object: PDFProperties) File /opt/Zope-2.0.0/lib/python/ZPublisher/Publish.py, line 165, in publish File /opt/Zope-2.0.0/lib/python/ZPublisher/mapply.py, line 160, in mapply (Object: manage_addProperty) File /opt/Zope-2.0.0/lib/python/ZPublisher/Publish.py, line 102, in call_object (Object: manage_addProperty) File /opt/Zope-2.0.0/lib/python/OFS/PropertySheets.py, line 403, in manage_addProperty (Object: PDFProperties) File /opt/Zope-2.0.0/lib/python/ZPublisher/Converters.py, line 157, in field2date File /opt/Zope-2.0.0/lib/python/DateTime/DateTime.py, line 499, in __init__ Invalid Date-Time String: Sorry, an error occurred
Of course, the value is invalid -- I didn't put any value in the "Value" box, because this is a class property, and values only make sense when the class is instantiated, right?
Is this Zope's problem or mine?
Zope's. It should be a little smarter than that. In fact, it should be smarter for instances also and just assume a sane value (like calling DateTime() with no arguments, which returns 'now'). Please submit to the Collector. Should be a pretty trivial fix if you want to take a hack at it and submit a patch, just sniff for a null value and insert DateTime() instead of DateTime(formvalue). -Michel
participants (2)
-
Dr. Ross Lazarus -
Loren Stafford