Les timestamps c'est merdique, maintenant tout est du datetime

This commit is contained in:
Pierre-Elliott Bécue 2015-10-03 14:09:08 +02:00
parent 4de62cd0a8
commit a1f27f9f1a
3 changed files with 64 additions and 43 deletions

View file

@ -638,26 +638,30 @@ class generalizedTimeFormat(Attr):
"""
__slots__ = ("stamp", "datetime",)
default = "19700101000000Z"
python_type = datetime.datetime
default = datetime_from_generalized_time_format("19700101000000Z")
def __unicode__(self):
return unicode(datetime_to_generalized_time_format(self.value))
def __float__(self):
return self.stamp
return from_generalized_time_format(unicode(self))
def __int__(self):
return int(self.stamp)
return int(float(self))
def __eq__(self, othertime):
if isinstance(othertime, generalizedTimeFormat):
return self.stamp == othertime.stamp
return self.value == othertime.value
elif isinstance(othertime, float):
return self.stamp == othertime
return float(self) == othertime
elif isinstance(othertime, int):
return self.stamp == othertime
return int(self) == othertime
elif isinstance(othertime, unicode) or isinstance(othertime, str):
resource = generalizedTimeFormat(othertime, conn=None, Parent=None)
return self.stamp == resource.stamp
return self == resource
elif isinstance(othertime, datetime.datetime):
return self.datetime == othertime
return self.value == othertime
else:
return False
@ -666,16 +670,16 @@ class generalizedTimeFormat(Attr):
def __lt__(self, othertime):
if isinstance(othertime, generalizedTimeFormat):
return self.stamp < othertime.stamp
return self.value < othertime.value
elif isinstance(othertime, float):
return self.stamp < othertime
return float(self) < othertime
elif isinstance(othertime, int):
return self.stamp < othertime
return int(self) < othertime
elif isinstance(othertime, unicode) or isinstance(othertime, str):
resource = generalizedTimeFormat(othertime, conn=None, Parent=None)
return self.stamp < resource.stamp
return self < resource
elif isinstance(othertime, datetime.datetime):
return self.datetime < othertime
return self.value < othertime
else:
return False
@ -690,21 +694,9 @@ class generalizedTimeFormat(Attr):
def parse_value(self, gtf):
if isinstance(gtf, str) or isinstance(gtf, unicode):
if not ('Z' in gtf or '+' in gtf or '-' in gtf):
self.stamp = gtf
self.value = to_generalized_time_format(float(gtf))
self.datetime = datetime_from_generalized_time_format(self.value)
else:
self.stamp = from_generalized_time_format(gtf)
self.datetime = datetime_from_generalized_time_format(gtf)
self.value = gtf
elif isinstance(gtf, float):
self.stamp = gtf
self.value = to_generalized_time_format(gtf)
self.datetime = datetime_from_generalized_time_format(self.value)
self.value = datetime_from_generalized_time_format(gtf)
elif isinstance(gtf, datetime.datetime):
self.datetime = gtf
self.value = datetime_to_generalized_time_format(gtf)
self.value = gtf
self.stamp = from_generalized_time_format(self.value)
@crans_attribute