Пример #1
0
class StoreObject(object):
    def __init__(self, id=None, file=None, bucket=None, policy=None):
        self.connection = Storage(bucket, policy)
        self.storage = self.connection.instance
        self.bname = self.connection.name
        self.kobj = Key(self.storage)
        self.kobj.key = id
        self.policy = policy or PUBLIC_POLICY
        if file and os.path.exists(os.path.abspath(file)):
            self.file = file
        else:
            StoringException('File not specified.')
            
    def send(self):
        if self.kobj.exists():
            raise StoringException('Key <%s> is already in use' % self.kobj.key)
        else:
            self.kobj.set_contents_from_filename(self.file,policy=self.policy, cb=self.progress)
    
    def progress(self, part, complete):
        if part == complete:
            return True
        else:
            return False
    
    def __repr__(self):
        return self.kobj.__repr__()
    
    def delete(self):
        return self.kobj.delete()
        
    def set_meta(self, name, value):
        if name and value:
            self.kobj.set_metadata(name,value)
            
    @property 
    def url(self):
        return "http://s3.amazonaws.com/%s/%s" % (self.bname, self.kobj.key)