Skip to content

Commit bd6cd6c

Browse files
committed
Set the project to use cloudinary for media storage.
1 parent dde103b commit bd6cd6c

24 files changed

+74
-21
lines changed

.gitignore

+3
Original file line numberDiff line numberDiff line change
@@ -17,3 +17,6 @@ Thumbs.db
1717
# IDE-specific
1818
.vscode/
1919
*.idea/
20+
21+
# Environment varibles
22+
.env

db.sqlite3

4 KB
Binary file not shown.

manage.py

+2
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,10 @@
22
"""Django's command-line utility for administrative tasks."""
33
import os
44
import sys
5+
import dotenv
56

67

8+
dotenv.load_dotenv()
79
def main():
810
"""Run administrative tasks."""
911
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'quickdash.settings')

media/menu_images/doughnut.jpg

-83.2 KB
Binary file not shown.
-83.2 KB
Binary file not shown.

media/menu_images/hamburger.jpg

-69.5 KB
Binary file not shown.
-69.5 KB
Binary file not shown.

media/menu_images/ice-cream.jpg

-82.1 KB
Binary file not shown.
-82.1 KB
Binary file not shown.

media/menu_images/jollof-rice.jpg

-118 KB
Binary file not shown.
-118 KB
Binary file not shown.
-85.4 KB
Binary file not shown.
Binary file not shown.
-59 KB
Binary file not shown.
Binary file not shown.

orders/forms.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ class Meta:
1212
'restaurant': forms.TextInput(attrs={'class': 'form-control'}),
1313
'description': forms.Textarea(attrs={'rows': 4}),
1414
'rating': forms.NumberInput(attrs={'min': 0, 'max': 5, 'step': 0.1,}),
15-
'image': forms.FileInput(attrs={'class': 'form-control'}),
15+
# 'image': forms.FileInput(attrs={'class': 'form-control'}),
1616
'restaurant': forms.Select(attrs={'class': 'form-control'})
1717
}
1818

+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# Generated by Django 5.1.2 on 2024-12-04 00:11
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
('orders', '0008_restaurant_latitude_restaurant_longitude'),
10+
]
11+
12+
operations = [
13+
migrations.AlterField(
14+
model_name='item',
15+
name='image',
16+
field=models.ImageField(blank=True, null=True, upload_to='images/'),
17+
),
18+
]
+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# Generated by Django 5.1.2 on 2024-12-04 00:51
2+
3+
import cloudinary.models
4+
from django.db import migrations
5+
6+
7+
class Migration(migrations.Migration):
8+
9+
dependencies = [
10+
('orders', '0009_alter_item_image'),
11+
]
12+
13+
operations = [
14+
migrations.AlterField(
15+
model_name='item',
16+
name='image',
17+
field=cloudinary.models.CloudinaryField(blank=True, max_length=255, null=True, verbose_name='images'),
18+
),
19+
]

orders/models.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
from django.db import models
22
from django.conf import settings
33
from django.utils import timezone
4+
from cloudinary.models import CloudinaryField
45

56

67

@@ -27,7 +28,7 @@ class Item(models.Model):
2728
price = models.DecimalField(max_digits=6, decimal_places=2)
2829
description = models.TextField(blank=True, null=True)
2930
rating = models.DecimalField(max_digits=3, decimal_places=1)
30-
image = models.ImageField(upload_to='menu_images/')
31+
image = CloudinaryField('images', blank=True, null=True)
3132
date_added = models.DateTimeField(auto_now_add=True)
3233
restaurant = models.ForeignKey(
3334
Restaurant,

quickdash/middlewares.py

-15
This file was deleted.

quickdash/settings.py

+22-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
import os
22
import dj_database_url
33
from pathlib import Path
4+
import cloudinary
5+
import cloudinary.uploader
6+
import cloudinary.api
47

58
# Build paths inside the project like this: BASE_DIR / 'subdir'.
69
BASE_DIR = Path(__file__).resolve().parent.parent
@@ -35,7 +38,10 @@
3538
'django.contrib.contenttypes',
3639
'django.contrib.sessions',
3740
'django.contrib.messages',
41+
42+
'cloudinary_storage',
3843
'django.contrib.staticfiles',
44+
'cloudinary',
3945

4046
'core.apps.CoreConfig',
4147
'users.apps.UsersConfig',
@@ -53,7 +59,6 @@
5359
'django.contrib.messages.middleware.MessageMiddleware',
5460
'django.middleware.clickjacking.XFrameOptionsMiddleware',
5561
'whitenoise.middleware.WhiteNoiseMiddleware',
56-
'quickdash.middlewares.ServeMediaFileMiddleware',
5762
]
5863

5964
ROOT_URLCONF = 'quickdash.urls'
@@ -145,6 +150,22 @@
145150
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
146151

147152

153+
# Cloudinary configuration
154+
CLOUDINARY_STORAGE = {
155+
'CLOUD_NAME': os.environ.get('CLOUDINARY_CLOUD_NAME'),
156+
'API_KEY': os.environ.get('CLOUDINARY_API_KEY'),
157+
'API_SECRET': os.environ.get('CLOUDINARY_API_SECRET')
158+
}
159+
160+
DEFAULT_FILE_STORAGE = 'cloudinary_storage.storage.MediaCloudinaryStorage'
161+
162+
cloudinary.config(
163+
cloud_name=CLOUDINARY_STORAGE['CLOUD_NAME'],
164+
api_key=CLOUDINARY_STORAGE['API_KEY'],
165+
api_secret=CLOUDINARY_STORAGE['API_SECRET'],
166+
secure=True
167+
)
168+
148169

149170

150171
# Default primary key field type

quickdash/urls.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,6 @@
88
path('', include('core.urls')),
99
path('', include('users.urls')),
1010
path('', include('orders.urls')),
11-
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
11+
]
1212

1313
# urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

quickdash/wsgi.py

+3
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,12 @@
88
"""
99

1010
import os
11+
import dotenv
1112

1213
from django.core.wsgi import get_wsgi_application
1314

15+
dotenv.load_dotenv()
16+
1417
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'quickdash.settings')
1518

1619
application = get_wsgi_application()

requirements.txt

+3-2
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,13 @@ click==8.1.7
77
click-didyoumean==0.3.1
88
click-plugins==1.1.1
99
click-repl==0.3.0
10+
cloudinary==1.32.0
1011
colorama==0.4.6
1112
cron-descriptor==1.4.5
1213
dj-database-url==2.3.0
1314
Django==5.1.3
1415
django-background-tasks==1.2.8
16+
django-cloudinary-storage==0.3.0
1517
django-common-helpers==0.9.2
1618
django-timezone-field==7.0
1719
geographiclib==2.0
@@ -32,8 +34,7 @@ six==1.16.0
3234
sqlparse==0.5.2
3335
typing_extensions==4.12.2
3436
tzdata==2024.2
35-
urllib3==2.2.3
36-
uvicorn==0.32.1
37+
urllib3==1.26.20
3738
vine==5.1.0
3839
waitress==3.0.2
3940
wcwidth==0.2.13

0 commit comments

Comments
 (0)