def __init__(self, name, data=None, type_=None): self._name = name self.id = None self._url = None self._acl = None self.current_user = None # TODO self._metadata = { 'owner': 'unknown' } if self.current_user and self.current_user is not None: self._metadata['owner'] = self.current_user.id pattern = re.compile('\.([^.]*)$') extension = pattern.findall(name) if extension: self.extension = extension[0].lower() else: self.extension = '' if type_: self._type = type_ else: self._type = mime_types.get(self.extension, 'text/plain') if data is None: self._source = None elif isinstance(data, BytesIO): self._source = data elif isinstance(data, file_type): data.seek(0, os.SEEK_SET) self._source = BytesIO(data.read()) elif isinstance(data, buffer_type): self._source = BytesIO(data) elif PY2: import cStringIO if isinstance(data, cStringIO.OutputType): data.seek(0, os.SEEK_SET) self._source = BytesIO(data.getvalue()) else: raise TypeError('data must be a StringIO / buffer / file instance') else: raise TypeError('data must be a StringIO / buffer / file instance') if self._source: self._source.seek(0, os.SEEK_END) self._metadata['size'] = self._source.tell() self._source.seek(0, os.SEEK_SET) checksum = hashlib.md5() checksum.update(self._source.getvalue()) self._metadata['_checksum'] = checksum.hexdigest()
def __init__(self, name, data=None, type_=None): self._name = name self.id = None self._url = None self._acl = None self.current_user = None # TODO self._metadata = {'owner': 'unknown'} if self.current_user and self.current_user is not None: self._metadata['owner'] = self.current_user.id pattern = re.compile('\.([^.]*)$') extension = pattern.findall(name) if extension: self.extension = extension[0].lower() else: self.extension = '' if type_: self._type = type_ else: self._type = mime_types.get(self.extension, 'text/plain') if data is None: self._source = None elif isinstance(data, BytesIO): self._source = data elif isinstance(data, file_type): data.seek(0, os.SEEK_SET) self._source = BytesIO(data.read()) elif isinstance(data, buffer_type): self._source = BytesIO(data) elif PY2: import cStringIO if isinstance(data, cStringIO.OutputType): data.seek(0, os.SEEK_SET) self._source = BytesIO(data.getvalue()) else: raise TypeError( 'data must be a StringIO / buffer / file instance') else: raise TypeError('data must be a StringIO / buffer / file instance') if self._source: self._source.seek(0, os.SEEK_END) self._metadata['size'] = self._source.tell() self._source.seek(0, os.SEEK_SET)
def __init__(self, name, data=None, type_=None): self._name = name self.id = None self._url = None self._acl = None self.current_user = None # TODO self._metadata = { 'owner': 'unknown' } if self.current_user and self.current_user is not None: self._metadata['owner'] = self.current_user.id pattern = re.compile('\.([^.]*)$') extension = pattern.findall(name) if extension: extension = extension[0].lower() else: extension = None if type_: self._type = type_ else: self._type = mime_types.get(extension, 'text/plain') if data is None: # self._source = cStringIO.StringIO() self._source = None elif isinstance(data, cStringIO.OutputType): self._source = StringIO.StringIO(data.getvalue()) elif isinstance(data, StringIO.StringIO): self._source = data elif isinstance(data, file): data.seek(0, os.SEEK_SET) self._source = StringIO.StringIO(data.read()) elif isinstance(data, buffer): self._source = StringIO.StringIO(data) else: raise TypeError('data must be a StringIO / buffer / file instance') if self._source: self._source.seek(0, os.SEEK_END) self._metadata['size'] = self._source.tell() self._source.seek(0, os.SEEK_SET)
def __init__(self, name, data=None, type_=None): self._name = name self.id = None self._url = None self._acl = None self.current_user = None # TODO self._metadata = { 'owner': 'unknown' } if self.current_user and self.current_user is not None: self._metadata['owner'] = self.current_user.id pattern = re.compile('\.([^.]*)$') extension = pattern.findall(name) if extension: self.extension = extension[0].lower() else: self.extension = '' if type_: self._type = type_ else: self._type = mime_types.get(self.extension, 'text/plain') if data is None: self._source = None elif hasattr(data, 'seek') and hasattr(data, 'read'): data.seek(0, os.SEEK_SET) self._source = BytesIO(data.read()) elif hasattr(data, 'encode'): self._source = BytesIO(data.encode()) else: self._source = BytesIO(data) if self._source: self._source.seek(0, os.SEEK_END) self._metadata['size'] = self._source.tell() self._source.seek(0, os.SEEK_SET)