[FIX] use correct default callable for a datetime to get the current datetime as of the object's creation

Add staticmethods to fields.time, fields.date and fields.datetime so they can generate default values which they can actually consume

bzr revid: xmo@openerp.com-20101012160130-jwgl7cok853fiyap
This commit is contained in:
Xavier Morel
2010-10-12 18:01:30 +02:00
parent d515172dd9
commit 040f2ce15b
3 changed files with 36 additions and 5 deletions
+3 -4
View File
@@ -33,11 +33,11 @@ class res_log(osv.osv_memory):
'res_id': fields.integer('Object ID'),
'secondary': fields.boolean('Secondary Log', help='Do not display this log if it belongs to the same object the user is working on'),
'create_date': fields.datetime('Created Date', readonly=True),
'read': field.boolean('Read status', help="If this log item has been read, get() should not send it to the client")
'read': fields.boolean('Read status', help="If this log item has been read, get() should not send it to the client")
}
_defaults = {
'user_id': lambda self,cr,uid,ctx: uid,
'create_date': time.strftime('%Y-%m-%d %H:%M:%S'),
'create_date': fields.datetime.now,
'context': "{}",
'read': False
}
@@ -51,7 +51,7 @@ class res_log(osv.osv_memory):
unread_logs = self.read(cr, uid, unread_log_ids,
['name','res_model','res_id'],
context=context)
self.write(cr, uid, ids, {'read': True}, context=context)
self.write(cr, uid, unread_log_ids, {'read': True}, context=context)
return unread_logs
def search(self, cr, uid, args, offset=0, limit=None, order=None, context=None, count=False):
@@ -64,5 +64,4 @@ class res_log(osv.osv_memory):
logs.update({log.res_model: res_dict})
res = map(lambda x: x.values(), logs.values())
return tools.flatten(res)
res_log()
+29
View File
@@ -32,6 +32,7 @@
# size
#
from collections import defaultdict
import datetime as DT
import string
import netsvc
import sys
@@ -189,14 +190,42 @@ class float(_column):
class date(_column):
_type = 'date'
@staticmethod
def today(*args):
""" Returns the current date in a format fit for being a
default value to a ``date`` field.
This method should be provided as is to the _defaults dict, it
should not be called.
"""
return DT.date.today().strftime(
tools.DEFAULT_SERVER_DATE_FORMAT)
class datetime(_column):
_type = 'datetime'
@staticmethod
def now(*args):
""" Returns the current datetime in a format fit for being a
default value to a ``datetime`` field.
This method should be provided as is to the _defaults dict, it
should not be called.
"""
return DT.datetime.now().strftime(
tools.DEFAULT_SERVER_DATETIME_FORMAT)
class time(_column):
_type = 'time'
@staticmethod
def now( *args):
""" Returns the current time in a format fit for being a
default value to a ``time`` field.
This method should be proivided as is to the _defaults dict,
it should not be called.
"""
return DT.datetime.now().strftime(
tools.DEFAULT_SERVER_TIME_FORMAT)
class binary(_column):
_type = 'binary'
+4 -1
View File
@@ -1323,7 +1323,10 @@ def get_server_timezone():
DEFAULT_SERVER_DATE_FORMAT = "%Y-%m-%d"
DEFAULT_SERVER_DATETIME_FORMAT = DEFAULT_SERVER_DATE_FORMAT + " %H:%M:%S"
DEFAULT_SERVER_TIME_FORMAT = "%H:%M:%S"
DEFAULT_SERVER_DATETIME_FORMAT = "%s %s" % (
DEFAULT_SERVER_DATE_FORMAT,
DEFAULT_SERVER_TIME_FORMAT)
def server_to_local_timestamp(src_tstamp_str, src_format, dst_format, dst_tz_name,
tz_offset=True, ignore_unparsable_time=True):