Skip to content

Commit cd1c22b

Browse files
reading upload img to S3
1 parent 533b236 commit cd1c22b

File tree

2 files changed

+12
-14
lines changed

2 files changed

+12
-14
lines changed

classroom/business/teacher/classroom.py

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
import secrets
2+
import os
23

34
from django.conf import settings
45
from django.contrib.auth import get_user_model
6+
from django.core.files.storage import default_storage
57

68
from classroom.tasks import send_temp_password_for_new_students_task
79

@@ -73,19 +75,15 @@ def resend_password_emails(classroom, email):
7375
)
7476

7577

76-
def upload_reading_exercise_image(image, request=None):
77-
path = settings.MEDIA_ROOT / 'classroom' / 'reading_exercises' / 'uploaded_images' / image.name
78-
path.parent.mkdir(parents=True, exist_ok=True)
79-
if path.exists():
80-
unique_name = path.stem + secrets.token_urlsafe(nbytes=8)
81-
path = path.parent / f'{unique_name}{path.suffix}'
78+
def upload_reading_exercise_image(image):
79+
directory = 'classroom/reading_exercises/uploaded_images'
80+
path = f'{directory}/{image.name}'
8281

83-
with open(path, 'wb+') as destination:
84-
for chunk in image.chunks():
85-
destination.write(chunk)
82+
if default_storage.exists(path):
83+
img_name, img_ext = os.path.splitext(image.name)
84+
unique_name = img_name + secrets.token_urlsafe(nbytes=8)
85+
path = f'{directory}/{unique_name}{img_ext}'
8686

87-
rpath = path.relative_to(settings.BASE_DIR)
88-
url = '/' + str(rpath).replace('\\', '/')
89-
if request:
90-
url = request.build_absolute_uri(url)
87+
default_storage.save(path, image)
88+
url = default_storage.url(path)
9189
return url

classroom/views/exercise.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,6 @@ def upload_image(self, request):
4343
serializer = self.get_serializer(data=request.data)
4444
serializer.is_valid(raise_exception=True)
4545
image = serializer.validated_data['image']
46-
image_url = business.upload_reading_exercise_image(image, request=request)
46+
image_url = business.upload_reading_exercise_image(image)
4747
serializer = self.get_serializer(instance={'image_url': image_url})
4848
return Response(serializer.data)

0 commit comments

Comments
 (0)