def upload_file(filename, bucket, root=None, prefix='/static'): filepath = os.path.join(root, filename.lstrip('/')) if root else filename _file = bucket.new_key('{}/{}'.format(prefix, filename)) aggressive_headers = _get_aggressive_cache_headers(_file) _file.set_contents_from_filename(filepath, headers=aggressive_headers) _file.set_acl('public-read') return True
def upload_document(self, _id): if self.document.data is None or self.document.data == '': return None, None filename = secure_filename(self.document.data.filename) if filename == '': return None, None _filename = 'opportunity-{}-{}'.format(_id, filename) if current_app.config.get('UPLOAD_S3') is True: # upload file to s3 conn, bucket = connect_to_s3( current_app.config['AWS_ACCESS_KEY_ID'], current_app.config['AWS_SECRET_ACCESS_KEY'], current_app.config['UPLOAD_DESTINATION'] ) _document = bucket.new_key(_filename) aggressive_headers = _get_aggressive_cache_headers(_document) _document.set_contents_from_file(self.document.data, headers=aggressive_headers, replace=True) _document.set_acl('public-read') return _document.name, _document.generate_url(expires_in=0, query_auth=False) else: try: os.mkdir(current_app.config['UPLOAD_DESTINATION']) except: pass filepath = os.path.join(current_app.config['UPLOAD_DESTINATION'], _filename) self.document.data.save(filepath) return _filename, filepath
def upload_file(filename, bucket, root=None, prefix='/static'): filepath = os.path.join(root, filename.lstrip('/')) if root else filename _file = bucket.new_key( '{}/{}'.format(prefix, filename) ) aggressive_headers = _get_aggressive_cache_headers(_file) _file.set_contents_from_filename(filepath, headers=aggressive_headers) _file.set_acl('public-read') return True
def upload_document(self, _id): '''Take the document and filename and either upload it to S3 or the local uploads folder Arguments: _id: The id of the :py:class:`~purchasing.opportunities.models.Opportunity` the document will be attached to Returns: A two-tuple of (the document name, the document filepath/url) ''' if self.document.data is None or self.document.data == '': return None, None filename = secure_filename(self.document.data.filename) if filename == '': return None, None _filename = 'opportunity-{}-{}'.format(_id, filename) if current_app.config.get('UPLOAD_S3') is True: # upload file to s3 conn, bucket = connect_to_s3( current_app.config['AWS_ACCESS_KEY_ID'], current_app.config['AWS_SECRET_ACCESS_KEY'], current_app.config['UPLOAD_DESTINATION']) _document = bucket.new_key(_filename) aggressive_headers = _get_aggressive_cache_headers(_document) _document.set_contents_from_file(self.document.data, headers=aggressive_headers, replace=True) _document.set_acl('public-read') return _document.name, _document.generate_url(expires_in=0, query_auth=False) else: try: os.mkdir(current_app.config['UPLOAD_DESTINATION']) except: pass filepath = os.path.join(current_app.config['UPLOAD_DESTINATION'], _filename) self.document.data.save(filepath) return _filename, filepath
def upload_document(self, _id): '''Take the document and filename and either upload it to S3 or the local uploads folder Arguments: _id: The id of the :py:class:`~purchasing.opportunities.models.Opportunity` the document will be attached to Returns: A two-tuple of (the document name, the document filepath/url) ''' if self.document.data is None or self.document.data == '': return None, None filename = secure_filename(self.document.data.filename) if filename == '': return None, None _filename = 'opportunity-{}-{}'.format(_id, filename) if current_app.config.get('UPLOAD_S3') is True: # upload file to s3 conn, bucket = connect_to_s3( current_app.config['AWS_ACCESS_KEY_ID'], current_app.config['AWS_SECRET_ACCESS_KEY'], current_app.config['UPLOAD_DESTINATION'] ) _document = bucket.new_key(_filename) aggressive_headers = _get_aggressive_cache_headers(_document) _document.set_contents_from_file(self.document.data, headers=aggressive_headers, replace=True) _document.set_acl('public-read') return _document.name, _document.generate_url(expires_in=0, query_auth=False) else: try: os.mkdir(current_app.config['UPLOAD_DESTINATION']) except: pass filepath = os.path.join(current_app.config['UPLOAD_DESTINATION'], _filename) self.document.data.save(filepath) return _filename, filepath