Skip to content

Commit 96d6647

Browse files
16 - AWS S3 File Upload
1 parent 3389638 commit 96d6647

File tree

11 files changed

+34
-8
lines changed

11 files changed

+34
-8
lines changed

src/db.sqlite3

0 Bytes
Binary file not shown.

src/ecommerce/aws/conf.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
import datetime
22
import os
33

4+
from .ignore import AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY
45

56
AWS_GROUP_NAME = "CFE_eCommerce_Group"
67
AWS_USERNAME = "cfe-ecommerce-user"
7-
AWS_ACCESS_KEY_ID = os.environ.get("AWS_ACCESS_KEY_ID", "AKIAJARK375PALZJC55Q")
8-
AWS_SECRET_ACCESS_KEY = os.environ.get("AWS_SECRET_ACCESS_KEY", "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")
8+
# AWS_ACCESS_KEY_ID = os.environ.get("AWS_ACCESS_KEY_ID", "AKIAJARK375PALZJC55Q")
9+
# AWS_SECRET_ACCESS_KEY = os.environ.get("AWS_SECRET_ACCESS_KEY", "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")
910

1011
AWS_FILE_EXPIRE = 200
1112
AWS_PRELOAD_METADATA = True

src/ecommerce/aws/ignore.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
import os
2+
AWS_ACCESS_KEY_ID = os.environ.get("AWS_ACCESS_KEY_ID", "AKIAI7CMDWSUQZA33PBQ")
3+
AWS_SECRET_ACCESS_KEY = os.environ.get("AWS_SECRET_ACCESS_KEY", "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")

src/ecommerce/aws/utils.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
from storages.backends.s3boto3 import S3Boto3Storage
22

33
StaticRootS3BotoStorage = lambda: S3Boto3Storage(location='static')
4-
MediaRootS3BotoStorage = lambda: S3Boto3Storage(location='media')
4+
MediaRootS3BotoStorage = lambda: S3Boto3Storage(location='media')
5+
ProtectedS3Storage = lambda: S3Boto3Storage(location='protected')

src/ecommerce/settings/base.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,13 @@
180180
MEDIA_ROOT = os.path.join(os.path.dirname(BASE_DIR), "static_cdn", "media_root")
181181

182182

183+
PROTECTED_ROOT = os.path.join(os.path.dirname(BASE_DIR), "static_cdn", "protected_media")
184+
185+
186+
187+
from ecommerce.aws.conf import *
188+
189+
183190
CORS_REPLACE_HTTPS_REFERER = False
184191
HOST_SCHEME = "http://"
185192
SECURE_PROXY_SSL_HEADER = None

src/ecommerce/settings/local.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,7 @@
178178

179179
PROTECTED_ROOT = os.path.join(os.path.dirname(BASE_DIR), "static_cdn", "protected_media")
180180

181-
# from ecommerce.aws.conf import *
181+
from ecommerce.aws.conf import *
182182

183183

184184
CORS_REPLACE_HTTPS_REFERER = False

src/ecommerce/settings/production.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,10 @@
186186
MEDIA_URL = '/media/'
187187
MEDIA_ROOT = os.path.join(os.path.dirname(BASE_DIR), "static_cdn", "media_root")
188188

189-
# from ecommerce.aws.conf import *
189+
190+
PROTECTED_ROOT = os.path.join(os.path.dirname(BASE_DIR), "static_cdn", "protected_media")
191+
192+
from ecommerce.aws.conf import *
190193

191194

192195
# https://kirr.co/vklau5

src/products/models.py

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
from django.db.models.signals import pre_save, post_save
99
from django.urls import reverse
1010

11+
from ecommerce.aws.utils import ProtectedS3Storage
1112
from ecommerce.utils import unique_slug_generator, get_filename
1213

1314
def get_filename_ext(filepath):
@@ -104,18 +105,28 @@ def product_pre_save_receiver(sender, instance, *args, **kwargs):
104105

105106
def upload_product_file_loc(instance, filename):
106107
slug = instance.product.slug
108+
id_ = 0
109+
try:
110+
id_ = instance.id
111+
except:
112+
Klass = instance.__class__
113+
qs = Klass.objects.all().order_by('-pk')
114+
id_ = qs.first() + 1
115+
107116
if not slug:
108117
slug = unique_slug_generator(instance.product)
109-
location = "product/{}/".format(slug)
118+
location = "product/{slug}/{id}/".format(slug=slug, id=id_)
110119
return location + filename #"path/to/filename.mp4"
111120

112121

122+
113123
class ProductFile(models.Model):
114124
product = models.ForeignKey(Product)
115125
file = models.FileField(
116126
upload_to=upload_product_file_loc,
117-
storage=FileSystemStorage(location=settings.PROTECTED_ROOT)
118-
)
127+
storage=ProtectedS3Storage(), #FileSystemStorage(location=settings.PROTECTED_ROOT)
128+
) # path
129+
#filepath = models.TextField() # '/protected/path/to/the/file/myfile.mp3'
119130
free = models.BooleanField(default=False) # purchase required
120131
user_required = models.BooleanField(default=False) # user doesn't matter
121132

Binary file not shown.

0 commit comments

Comments
 (0)