Skip to content

Commit 1744a80

Browse files
added image functionality for events
1 parent 0ee61af commit 1744a80

6 files changed

Lines changed: 51 additions & 7 deletions

File tree

server/event/admin.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
from django.contrib import admin
2-
from .models import Event
2+
from .models import Event, EventImage
33

44
# Register your models here.
5+
class EventImageInline(admin.TabularInline):
6+
model = EventImage
7+
extra = 1
58

6-
admin.site.register(Event)
9+
@admin.register(Event)
10+
class EventAdmin(admin.ModelAdmin):
11+
inlines = [EventImageInline]
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
# Generated by Django 5.2.8 on 2025-12-20 03:03
2+
3+
import django.db.models.deletion
4+
from django.db import migrations, models
5+
6+
7+
class Migration(migrations.Migration):
8+
9+
dependencies = [
10+
('event', '0002_event_tags'),
11+
]
12+
13+
operations = [
14+
migrations.CreateModel(
15+
name='EventImage',
16+
fields=[
17+
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
18+
('image', models.ImageField(upload_to='event_images/')),
19+
('event', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='images', to='event.event')),
20+
],
21+
),
22+
]

server/event/models.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,4 +24,13 @@ class Event(models.Model):
2424

2525

2626
def __str__(self):
27-
return f"Event: {self.event_name} hosted by {self.organizer.username}"
27+
return f"Event: {self.event_name} hosted by {self.organizer.username}"
28+
29+
class EventImage(models.Model):
30+
event = models.ForeignKey(
31+
"Event",
32+
related_name="images",
33+
on_delete=models.CASCADE
34+
)
35+
36+
image = models.ImageField(upload_to="event_images/")

server/event/serializers.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,21 @@
22
from .models import Event
33
from user.serializers import UserSerializer
44
from tag.models import Tag
5+
from tag.serializers import TagSerializer
6+
from .models import EventImage
57

6-
class TagSerializer(serializers.ModelSerializer):
8+
class EventImageSerializer(serializers.ModelSerializer):
79
class Meta:
8-
model = Tag
9-
fields = ["id", "name"]
10+
model = EventImage
11+
fields = ["id", "image"]
1012

1113
class EventSerializer(serializers.ModelSerializer):
1214
organizer = UserSerializer(read_only=True)
1315
participants = UserSerializer(many=True, read_only=True)
1416
tags = TagSerializer(many=True, read_only=True)
17+
images = EventImageSerializer(many=True, read_only=True)
1518

1619
class Meta:
1720
model = Event
18-
fields = ("id", "organizer", "participants", "event_name", "tags","event_description","event_date", "event_location", "created_at" )
21+
fields = ("id", "organizer", "participants", "event_name", "tags","event_description","event_date", "event_location","images", "created_at" )
1922
read_only_fields = ("created_at",)

server/server/settings.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,9 +160,11 @@
160160
PROJECT_ROOT = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) # <- '/' directory
161161

162162
STATIC_URL = "/static/"
163+
MEDIA_URL = "/media/"
163164

164165
# STATIC_ROOT is where the static files get copied to when "collectstatic" is run.
165166
STATIC_ROOT = "static_files"
167+
MEDIA_ROOT = BASE_DIR / "media"
166168

167169
# This is where to _find_ static files when 'collectstatic' is run.
168170
# These files are then copied to the STATIC_ROOT location.

server/server/urls.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818
from django.contrib import admin
1919
from django.urls import include, path
2020
from rest_framework_simplejwt.views import TokenObtainPairView, TokenRefreshView
21+
from django.conf import settings
22+
from django.conf.urls.static import static
2123

2224
urlpatterns = [
2325
# admin
@@ -36,3 +38,4 @@
3638
path("api/tag/", include("tag.urls")),
3739
path("api/advertising/", include("advertising.urls")),
3840
]
41+
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

0 commit comments

Comments
 (0)