Пример #1
0
 def __set__(self, obj, value):
     if value != self.default_value():
         if not isinstance(value, Blob):
             oldb = self.__get__(obj, type(obj))
             id = None
             if oldb:
                 id = oldb.id
             b = Blob(value=value, id=id)
             value = b
     super(BlobProperty, self).__set__(obj, value)
Пример #2
0
 def decode_blob(self, value):
     if not value:
         return None
     match = re.match("^s3:\/\/([^\/]*)\/(.*)$", value)
     if match:
         s3 = self.manager.get_s3_connection()
         bucket = s3.get_bucket(match.group(1), validate=False)
         key = bucket.get_key(match.group(2))
     else:
         return None
     if key:
         return Blob(file=key, id="s3://%s/%s" % (key.bucket.name, key.name))
     else:
         return None
Пример #3
0
 def decode_blob(self, value):
     if not value:
         return None
     match = re.match("^s3:\/\/([^\/]*)\/(.*)$", value)
     if match:
         s3 = self.manager.get_s3_connection()
         bucket = s3.get_bucket(match.group(1), validate=False)
         try:
             key = bucket.get_key(match.group(2))
         except S3ResponseError as e:
             if e.reason != "Forbidden":
                 raise
             return None
     else:
         return None
     if key:
         return Blob(file=key, id="s3://%s/%s" % (key.bucket.name, key.name))
     else:
         return None
Пример #4
0
 def __set__(self, obj, value):
     if value != self.default_value():
         if not isinstance(value, Blob):
             b = Blob(value=value)
             value = b
     Property.__set__(self, obj, value)
Пример #5
0
        if not value:
            return None
        match = re.match("^s3:\/\/([^\/]*)\/(.*)$", value)
        if match:
            s3 = self.manager.get_s3_connection()
            bucket = s3.get_bucket(match.group(1), validate=False)
            try:
                key = bucket.get_key(match.group(2))
            except S3ResponseError, e:
                if e.reason != "Forbidden":
                    raise
                return None
        else:
            return None
        if key:
            return Blob(file=key,
                        id="s3://%s/%s" % (key.bucket.name, key.name))
        else:
            return None

    def encode_string(self, value):
        """Convert ASCII, Latin-1 or UTF-8 to pure Unicode"""
        if not isinstance(value, str):
            return value
        try:
            return unicode(value, 'utf-8')
        except:
            # really, this should throw an exception.
            # in the interest of not breaking current
            # systems, however:
            arr = []
            for ch in value: