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/model/Download_access.py

76 lines
3.2 KiB
Python

from Persistent import Persistent, quote
class Download_access( Persistent ):
"""
Access for a particular user to a downloadable product. This object is used to create unique
per-customer product download links without requiring the user to have a Luminotes account.
"""
def __init__( self, object_id, revision = None, item_number = None, transaction_id = None ):
"""
Create a download access record with the given id.
@type object_id: unicode
@param object_id: id of the download access
@type revision: datetime or NoneType
@param revision: revision timestamp of the object (optional, defaults to now)
@type item_number: unicode or NoneType
@param item_number: number of the item to which download access is granted (optional)
@type transaction_id: unicode or NoneType
@param transaction_id: payment processor id for the transaction used to pay for this download
(optional)
@rtype: Download_access
@return: newly constructed download access object
"""
Persistent.__init__( self, object_id, revision )
self.__item_number = item_number
self.__transaction_id = transaction_id
@staticmethod
def create( object_id, item_number = None, transaction_id = None ):
"""
Convenience constructor for creating a new download access object.
@type item_number: unicode or NoneType
@param item_number: number of the item to which download access is granted (optional)
@type transaction_id: unicode or NoneType
@param transaction_id: payment processor id for the transaction used to pay for this download
(optional)
@rtype: Download_access
@return: newly constructed download access object
"""
return Download_access( object_id, item_number = item_number, transaction_id = transaction_id )
@staticmethod
def sql_load( object_id, revision = None ):
# download access objects don't store old revisions
if revision:
raise NotImplementedError()
return "select id, revision, item_number, transaction_id from download_access where id = %s;" % quote( object_id )
@staticmethod
def sql_load_by_transaction_id( transaction_id ):
return "select id, revision, item_number, transaction_id from download_access where transaction_id = %s;" % quote( transaction_id )
@staticmethod
def sql_id_exists( object_id, revision = None ):
if revision:
raise NotImplementedError()
return "select id from download_access where id = %s;" % quote( object_id )
def sql_exists( self ):
return Download_access.sql_id_exists( self.object_id )
def sql_create( self ):
return "insert into download_access ( id, revision, item_number, transaction_id ) values ( %s, %s, %s, %s );" % \
( quote( self.object_id ), quote( self.revision ), quote( self.__item_number ), quote( self.__transaction_id ) )
def sql_update( self ):
return "update download_access set revision = %s, item_number = %s, transaction_id = %s where id = %s;" % \
( quote( self.revision ), quote( self.__item_number ), quote( self.__transaction_id ), quote( self.object_id ) )
item_number = property( lambda self: self.__item_number )
transaction_id = property( lambda self: self.__transaction_id )