80 lines
2.3 KiB
Python
80 lines
2.3 KiB
Python
from datetime import datetime
|
|
from model.Persistent import Persistent, quote
|
|
|
|
|
|
def notz_quote( value ):
|
|
"""
|
|
Apparently, pysqlite2 chokes on timestamps that have a timezone when reading them out of the
|
|
database, so for purposes of the unit tests, strip off the timezone on all datetime objects.
|
|
"""
|
|
if isinstance( value, datetime ):
|
|
value = value.replace( tzinfo = None )
|
|
|
|
return quote( value )
|
|
|
|
|
|
class Stub_object( Persistent ):
|
|
def __init__( self, object_id, revision = None, value = None, value2 = None ):
|
|
Persistent.__init__( self, object_id, revision )
|
|
self.__value = value
|
|
self.__value2 = value2
|
|
|
|
@staticmethod
|
|
def sql_load( object_id, revision = None ):
|
|
if revision:
|
|
return "select * from stub_object where id = %s and revision = %s;" % ( quote( object_id ), notz_quote( revision ) )
|
|
|
|
return "select * from stub_object where id = %s order by revision desc limit 1;" % quote( object_id )
|
|
|
|
@staticmethod
|
|
def sql_id_exists( object_id, revision = None ):
|
|
if revision:
|
|
return "select id from stub_object where id = %s and revision = %s;" % ( quote( object_id ), notz_quote( revision ) )
|
|
|
|
return "select id from stub_object where id = %s order by revision desc limit 1;" % quote( object_id )
|
|
|
|
def sql_exists( self ):
|
|
return Stub_object.sql_id_exists( self.object_id, self.revision )
|
|
|
|
def sql_create( self ):
|
|
return \
|
|
"insert into stub_object ( id, revision, value, value2 ) " + \
|
|
"values ( %s, %s, %s, %s );" % \
|
|
( quote( self.object_id ), notz_quote( self.revision ), quote( self.__value ),
|
|
quote( self.__value2 ) )
|
|
|
|
def sql_update( self ):
|
|
return self.sql_create()
|
|
|
|
@staticmethod
|
|
def sql_load_em_all():
|
|
return "select * from stub_object;"
|
|
|
|
@staticmethod
|
|
def sql_create_table():
|
|
return \
|
|
"""
|
|
create table stub_object (
|
|
id text not null,
|
|
revision timestamp with time zone not null,
|
|
value integer,
|
|
value2 integer
|
|
);
|
|
"""
|
|
|
|
@staticmethod
|
|
def sql_tuple():
|
|
return "select 1, 2;"
|
|
|
|
def __set_value( self, value ):
|
|
self.update_revision()
|
|
self.__value = value
|
|
|
|
def __set_value2( self, value2 ):
|
|
self.update_revision()
|
|
self.__value2 = value2
|
|
|
|
value = property( lambda self: self.__value, __set_value )
|
|
value2 = property( lambda self: self.__value2, __set_value2 )
|
|
|