Skip to content

Commit

Permalink
Removed Read Serializer, Refactored list function for Item and Sublet…
Browse files Browse the repository at this point in the history
… in views to use a more abstract filtering method
  • Loading branch information
minghansun1 committed Nov 11, 2024
1 parent 4771b60 commit 846697f
Show file tree
Hide file tree
Showing 7 changed files with 155 additions and 191 deletions.
18 changes: 18 additions & 0 deletions backend/market/migrations/0004_rename_image_itemimage_images.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Generated by Django 5.0.2 on 2024-11-08 23:07

from django.db import migrations


class Migration(migrations.Migration):

dependencies = [
("market", "0003_alter_item_category_alter_item_seller_and_more"),
]

operations = [
migrations.RenameField(
model_name="itemimage",
old_name="image",
new_name="images",
),
]
18 changes: 18 additions & 0 deletions backend/market/migrations/0005_rename_images_itemimage_image.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Generated by Django 5.0.2 on 2024-11-08 23:10

from django.db import migrations


class Migration(migrations.Migration):

dependencies = [
("market", "0004_rename_image_itemimage_images"),
]

operations = [
migrations.RenameField(
model_name="itemimage",
old_name="images",
new_name="image",
),
]
21 changes: 21 additions & 0 deletions backend/market/migrations/0006_alter_itemimage_item.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# Generated by Django 5.0.2 on 2024-11-08 23:11

import django.db.models.deletion
from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
("market", "0005_rename_images_itemimage_image"),
]

operations = [
migrations.AlterField(
model_name="itemimage",
name="item",
field=models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE, related_name="images", to="market.item"
),
),
]
7 changes: 6 additions & 1 deletion backend/market/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -65,8 +65,13 @@ class Sublet(models.Model):
start_date = models.DateTimeField()
end_date = models.DateTimeField()

def delete(self, *args, **kwargs):
if self.item:
self.item.delete()
super().delete(*args, **kwargs)


# TODO: Verify that this S2 bucket exists. Check if we need to make it manually or will Django make it for us?
class ItemImage(models.Model):
item = models.ForeignKey(Item, on_delete=models.CASCADE)
item = models.ForeignKey(Item, on_delete=models.CASCADE, related_name="images")
image = models.ImageField(upload_to="marketplace/images")
32 changes: 7 additions & 25 deletions backend/market/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ class Meta:
# complex item serializer for use in C/U/D + getting info about a singular tag
class ItemSerializer(serializers.ModelSerializer):
# amenities = ItemSerializer(many=True, required=False)
# images = ItemImageURLSerializer(many=True, required=False)
images = ItemImageURLSerializer(many=True, required=False)

tags = serializers.PrimaryKeyRelatedField(
many=True, queryset=Tag.objects.all(), required=False
Expand All @@ -78,6 +78,7 @@ class ItemSerializer(serializers.ModelSerializer):
favorites = serializers.PrimaryKeyRelatedField(
many=True, queryset=User.objects.all(), required=False
)


class Meta:
model = Item
Expand All @@ -86,7 +87,7 @@ class Meta:
"created_at",
"seller",
"buyer",
# "images"
"images"
]
fields = [
"id",
Expand All @@ -100,7 +101,7 @@ class Meta:
"price",
"negotiable",
"expires_at",
# "images",
"images",
# images are now created/deleted through a separate endpoint (see urls.py)
# this serializer isn't used for getting,
# but gets on tags will include ids/urls for images
Expand Down Expand Up @@ -152,7 +153,8 @@ def destroy(self, instance):
raise serializers.ValidationError("You do not have permission to delete this item.")


class ItemSerializerRead(serializers.ModelSerializer):
# simple tag serializer for use when pulling all serializers/etc
class ItemSerializerSimple(serializers.ModelSerializer):
tags = serializers.PrimaryKeyRelatedField(
many=True, queryset=Tag.objects.all(), required=False
)
Expand All @@ -164,37 +166,18 @@ class ItemSerializerRead(serializers.ModelSerializer):

class Meta:
model = Item
read_only_fields = ["id", "created_at", "seller", "buyer"]
fields = [
"id",
"seller",
"tags",
"category",
"favorites",
"title",
"description",
"external_link",
"price",
"negotiable",
"expires_at",
"images",
]


# simple tag serializer for use when pulling all serializers/etc
class ItemSerializerSimple(serializers.ModelSerializer):
tags = serializers.PrimaryKeyRelatedField(
many=True, queryset=Tag.objects.all(), required=False
)
images = ItemImageURLSerializer(many=True, required=False)
category = serializers.PrimaryKeyRelatedField(
queryset=Category.objects.all(), required=True
)
seller = serializers.PrimaryKeyRelatedField(queryset=User.objects.all(), required=False)

class Meta:
model = Item
fields = [
read_only_fields = [
"id",
"seller",
"tags",
Expand All @@ -205,7 +188,6 @@ class Meta:
"negotiable",
"images",
]
read_only_fields = ["id", "seller"]


class SubletSerializer(serializers.ModelSerializer):
Expand Down
2 changes: 1 addition & 1 deletion backend/market/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@
# Image Creation
path("items/<item_id>/images/", CreateImages.as_view()),
# Image Deletion
path("items/images/<item_id>/", DeleteImage.as_view()),
path("items/images/<image_id>/", DeleteImage.as_view()),
]

urlpatterns = router.urls + additional_urls
Loading

0 comments on commit 846697f

Please sign in to comment.