From f3b12b1d784167f6afd50b24d45627a6d0e15c9e Mon Sep 17 00:00:00 2001
From: Kazuhiko Shiozaki <kazuhiko@nexedi.com>
Date: Thu, 13 Dec 2007 21:18:36 +0000
Subject: [PATCH] improve pickle size of DateTime.

git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@18319 20353a03-c40f-0410-a6d1-a30d3c3de9de
---
 product/ERP5Type/patches/DateTimePatch.py | 22 ++++++++++------------
 1 file changed, 10 insertions(+), 12 deletions(-)

diff --git a/product/ERP5Type/patches/DateTimePatch.py b/product/ERP5Type/patches/DateTimePatch.py
index 71b076f224..2797d8aa7f 100644
--- a/product/ERP5Type/patches/DateTimePatch.py
+++ b/product/ERP5Type/patches/DateTimePatch.py
@@ -31,20 +31,18 @@ from DateTime import DateTime as DateTimeKlass
 STATE_KEY = 'str'
 
 def DateTime__setstate__(self, state):
-  if len(state) != 1 or STATE_KEY not in state:
+  if isinstance(state, tuple):
+    self._parse_args(*state)
+  elif len(state) != 1 or STATE_KEY not in state:
+    # For original pickle representation
     self.__dict__.update(state)
   else:
-    # For backward compatibility
+    # For r15569 implementation
     self._parse_args(state[STATE_KEY])
 
 DateTimeKlass.__setstate__ = DateTime__setstate__
-  
-# This below is disabled, because this loses information at
-# millisecond level, and it breaks the simulation due to
-# divergency tests. I will not disable the above for backward
-# compatibility. -yo
-# 
-# def DateTime__getstate__(self):
-#   return {STATE_KEY: str(self)}
-# 
-# DateTimeKlass.__getstate__ = DateTime__getstate__
+
+def DateTime__getstate__(self):
+  return (self._t, self._tz)
+
+DateTimeKlass.__getstate__ = DateTime__getstate__
-- 
2.30.9