I have some code that has been working for a really long time, that suddenly
started throwing an exception.
In my app, I have to keep some different time zones around, so I have a Model
that carries the interesting stuff, and it acts as a tzinfo for convenience.
Like this:
class RegionModel(db.Model, datetime.tzinfo):
name = db.StringProperty()
gmtOffset = db.IntegerProperty()
tzName = db.StringProperty()
tzDstName = db.StringProperty()
def utcoffset(self, dt):
return datetime.timedelta(hours=self.gmtOffset) + self.dst(dt)
etc.
This has been working fine, but starting at 5/3 at 15:50, I'm getting this
exception:
2011-05-03 15:50:27.934
datetime.tzinfo.__new__(RegionModel) is not safe, use object.__new__()
Traceback (most recent call last):
File
"/base/python_runtime/python_lib/versions/1/google/appengine/ext/webapp/__init__.py",
line 698, in __call__
handler.get(*groups)
File "/base/data/home/apps/towngovernment/37.349853758361595417/main.py",
line 1691, in get
default = board.anyTown().nextLikelyMeetingTime()
File "/base/data/home/apps/towngovernment/37.349853758361595417/main.py",
line 248, in nextLikelyMeetingTime
t = self.nextLegalMeetingTime()
File "/base/data/home/apps/towngovernment/37.349853758361595417/main.py",
line 242, in nextLegalMeetingTime
now = self.region.currentLocalTime()
File
"/base/python_runtime/python_lib/versions/1/google/appengine/ext/db/__init__.py",
line 3491, in __get__
instance = get(reference_id)
File
"/base/python_runtime/python_lib/versions/1/google/appengine/ext/db/__init__.py",
line 1471, in get
return get_async(keys, **kwargs).get_result()
File
"/base/python_runtime/python_lib/versions/1/google/appengine/datastore/datastore_rpc.py",
line 644, in get_result
results = self.__extra_hook(results)
File
"/base/python_runtime/python_lib/versions/1/google/appengine/api/datastore.py",
line 488, in local_extra_hook
return extra_hook(result)
File
"/base/python_runtime/python_lib/versions/1/google/appengine/ext/db/__init__.py",
line 1441, in extra_hook
model = cls1.from_entity(entity)
File
"/base/python_runtime/python_lib/versions/1/google/appengine/ext/db/__init__.py",
line 1370, in from_entity
instance = cls(None, _from_entity=True, **entity_values)
File
"/base/python_runtime/python_lib/versions/1/google/appengine/ext/db/__init__.py",
line 767, in __new__
return super(Model, cls).__new__(cls)
TypeError: datetime.tzinfo.__new__(RegionModel) is not safe, use
object.__new__()
It appears that I suddenly need to start defining __init__ or __new__ or
something, but I'm out of my depth to know how to fix this. Also, everything
still works just fine in the development environment. It's only broken in
production.
Can one of you python gurus please tell me how to override __init__ or __new__
or whatever so that I don't break the db.Model stuff, and it allows me to
extend tzinfo with this class as I have been doing?
This is urgent!
Thanks.
-Joshua
--
You received this message because you are subscribed to the Google Groups
"Google App Engine" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/google-appengine?hl=en.