witten
/
luminotes
Archived
1
0
Fork 0
This repository has been archived on 2023-12-16. You can view files and clone it, but cannot push or open issues or pull requests.
luminotes/controller/test/Stub_object.py

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 )