f00809955c
* Modified Wiki.js to include invite_id parameter when necessary. * Increased storage quota (and price) for premium rate plan. * Added a note displayed when redeeming an invite, with links to signup and login.
79 lines
2.3 KiB
Python
79 lines
2.3 KiB
Python
from copy import copy
|
|
from model.User import User
|
|
|
|
|
|
class Stub_database( object ):
|
|
def __init__( self, connection = None ):
|
|
# map of object id to list of saved objects (presumably in increasing order of revisions)
|
|
self.objects = {}
|
|
self.user_notebook = {} # map of user_id to ( notebook_id, read_write, owner )
|
|
self.last_saved_obj = None
|
|
self.last_saved_user = None
|
|
self.__next_id = 0
|
|
|
|
def save( self, obj, commit = False ):
|
|
self.last_saved_obj = obj
|
|
if isinstance( obj, User ):
|
|
self.last_saved_user = obj
|
|
if obj.object_id in self.objects:
|
|
self.objects[ obj.object_id ].append( copy( obj ) )
|
|
else:
|
|
self.objects[ obj.object_id ] = [ copy( obj ) ]
|
|
|
|
def load( self, Object_type, object_id, revision = None ):
|
|
obj_list = self.objects.get( object_id )
|
|
|
|
if not obj_list:
|
|
return None
|
|
|
|
# if a particular revision wasn't requested, just return the most recently saved object
|
|
# matching the given object_id
|
|
if revision is None:
|
|
if not isinstance( obj_list[ -1 ], Object_type ):
|
|
return None
|
|
return copy( obj_list[ -1 ] )
|
|
|
|
# a particular revision was requested, so pick it out of the objects matching the given id
|
|
matching_objs = [ obj for obj in obj_list if str( obj.revision ) == str( revision ) ]
|
|
if len( matching_objs ) > 0:
|
|
if not isinstance( matching_objs[ -1 ], Object_type ):
|
|
return None
|
|
return copy( matching_objs[ -1 ] )
|
|
|
|
return None
|
|
|
|
def select_one( self, Object_type, sql_command ):
|
|
if callable( sql_command ):
|
|
result = sql_command( self )
|
|
if isinstance( result, list ):
|
|
if len( result ) == 0: return None
|
|
return result[ 0 ]
|
|
return result
|
|
|
|
raise NotImplementedError( sql_command )
|
|
|
|
def select_many( self, Object_type, sql_command ):
|
|
if callable( sql_command ):
|
|
result = sql_command( self )
|
|
if isinstance( result, list ):
|
|
return result
|
|
return [ result ]
|
|
|
|
raise NotImplementedError( sql_command )
|
|
|
|
def execute( self, sql_command, commit = False ):
|
|
if callable( sql_command ):
|
|
return sql_command( self )
|
|
|
|
raise NotImplementedError( sql_command )
|
|
|
|
def next_id( self, Object_type, commit = True ):
|
|
self.__next_id += 1
|
|
return unicode( self.__next_id )
|
|
|
|
def commit( self ):
|
|
pass
|
|
|
|
def close( self ):
|
|
pass
|