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.

Reply via email to