Jul 14 - Using CDN - Phase 4a
This commit is contained in:
@@ -76,10 +76,12 @@ class LocalBackend:
|
||||
def abs_local_path(self, key):
|
||||
return os.path.normpath(os.path.join(self._static_folder(), key))
|
||||
|
||||
def media_url(self, key):
|
||||
def media_url(self, key, external=False):
|
||||
if not key:
|
||||
return ''
|
||||
return url_for('static', filename=key)
|
||||
# external=True yields an absolute URL (scheme+host) for API responses
|
||||
# consumed off-origin (the iPad); templates call with external=False.
|
||||
return url_for('static', filename=key, _external=external)
|
||||
|
||||
def read(self, key):
|
||||
with open(self.abs_local_path(key), 'rb') as fh:
|
||||
@@ -164,13 +166,14 @@ class S3Backend:
|
||||
# not exist) so transition code / callers can still reference it.
|
||||
return self._local.abs_local_path(key)
|
||||
|
||||
def media_url(self, key):
|
||||
def media_url(self, key, external=False):
|
||||
if not key:
|
||||
return ''
|
||||
if self.fallback and not self._head(key):
|
||||
# Object not in R2 yet — serve the local copy during transition.
|
||||
if self._local.exists(key):
|
||||
return self._local.media_url(key)
|
||||
return self._local.media_url(key, external=external)
|
||||
# Presigned R2 URLs are always absolute; the external flag is moot.
|
||||
return self._client.generate_presigned_url(
|
||||
'get_object',
|
||||
Params={'Bucket': self.bucket, 'Key': key},
|
||||
@@ -259,8 +262,8 @@ def save(file_obj, subfolder):
|
||||
return get_backend().save(file_obj, subfolder)
|
||||
|
||||
|
||||
def media_url(key):
|
||||
return get_backend().media_url(key)
|
||||
def media_url(key, external=False):
|
||||
return get_backend().media_url(key, external=external)
|
||||
|
||||
|
||||
def read(key):
|
||||
|
||||
Reference in New Issue
Block a user