diff --git a/server/game_dev/admin.py b/server/game_dev/admin.py index a50a46a4..496d1122 100644 --- a/server/game_dev/admin.py +++ b/server/game_dev/admin.py @@ -27,9 +27,10 @@ class GameShowcaseAdmin(admin.ModelAdmin): class GamesAdmin(admin.ModelAdmin): - list_display = ("id", "name", "description", "completion", "active", "hostURL", "itchEmbedID", "thumbnail", "itchGameEmbedID", "itchGameWidth", - "itchGameHeight", "event") + list_display = ("id", "name", "description", "completion", "active", "hostURL", "itchEmbedID", "itchGamePlayableID", "itchGameWidth", + "itchGameHeight", "thumbnail") search_fields = ["name", "description"] + raw_id_fields = ["event"] class CommitteeAdmin(admin.ModelAdmin): diff --git a/server/game_dev/migrations/0005_alter_member_profile_picture.py b/server/game_dev/migrations/0006_alter_member_profile_picture.py similarity index 100% rename from server/game_dev/migrations/0005_alter_member_profile_picture.py rename to server/game_dev/migrations/0006_alter_member_profile_picture.py diff --git a/server/game_dev/migrations/0005_committee.py b/server/game_dev/migrations/0007_committee.py similarity index 100% rename from server/game_dev/migrations/0005_committee.py rename to server/game_dev/migrations/0007_committee.py diff --git a/server/game_dev/migrations/0006_committee_role.py b/server/game_dev/migrations/0008_committee_role.py similarity index 94% rename from server/game_dev/migrations/0006_committee_role.py rename to server/game_dev/migrations/0008_committee_role.py index 457afa83..f549b04b 100644 --- a/server/game_dev/migrations/0006_committee_role.py +++ b/server/game_dev/migrations/0008_committee_role.py @@ -6,7 +6,7 @@ class Migration(migrations.Migration): dependencies = [ - ('game_dev', '0005_committee'), + ('game_dev', '0007_committee'), ] operations = [ diff --git a/server/game_dev/migrations/0006_remove_game_isitch_alter_game_itchembedid.py b/server/game_dev/migrations/0009_remove_game_isitch_alter_game_itchembedid.py similarity index 100% rename from server/game_dev/migrations/0006_remove_game_isitch_alter_game_itchembedid.py rename to server/game_dev/migrations/0009_remove_game_isitch_alter_game_itchembedid.py diff --git a/server/game_dev/migrations/0007_alter_committee_id.py b/server/game_dev/migrations/0010_alter_committee_id.py similarity index 91% rename from server/game_dev/migrations/0007_alter_committee_id.py rename to server/game_dev/migrations/0010_alter_committee_id.py index fa9a4841..7f68ac7c 100644 --- a/server/game_dev/migrations/0007_alter_committee_id.py +++ b/server/game_dev/migrations/0010_alter_committee_id.py @@ -7,7 +7,7 @@ class Migration(migrations.Migration): dependencies = [ - ('game_dev', '0006_committee_role'), + ('game_dev', '0008_committee_role'), ] operations = [ diff --git a/server/game_dev/migrations/0007_rename_pathtothumbnail_game_thumbnail_and_more.py b/server/game_dev/migrations/0011_rename_pathtothumbnail_game_thumbnail_and_more.py similarity index 88% rename from server/game_dev/migrations/0007_rename_pathtothumbnail_game_thumbnail_and_more.py rename to server/game_dev/migrations/0011_rename_pathtothumbnail_game_thumbnail_and_more.py index d2b7f58d..1b3b6703 100644 --- a/server/game_dev/migrations/0007_rename_pathtothumbnail_game_thumbnail_and_more.py +++ b/server/game_dev/migrations/0011_rename_pathtothumbnail_game_thumbnail_and_more.py @@ -6,7 +6,7 @@ class Migration(migrations.Migration): dependencies = [ - ("game_dev", "0006_remove_game_isitch_alter_game_itchembedid"), + ("game_dev", "0009_remove_game_isitch_alter_game_itchembedid"), ] operations = [ diff --git a/server/game_dev/migrations/0008_alter_committee_role.py b/server/game_dev/migrations/0012_alter_committee_role.py similarity index 92% rename from server/game_dev/migrations/0008_alter_committee_role.py rename to server/game_dev/migrations/0012_alter_committee_role.py index ecd84c0c..ace476a7 100644 --- a/server/game_dev/migrations/0008_alter_committee_role.py +++ b/server/game_dev/migrations/0012_alter_committee_role.py @@ -6,7 +6,7 @@ class Migration(migrations.Migration): dependencies = [ - ('game_dev', '0007_alter_committee_id'), + ('game_dev', '0010_alter_committee_id'), ] operations = [ diff --git a/server/game_dev/migrations/0008_alter_event_date.py b/server/game_dev/migrations/0013_alter_event_date.py similarity index 84% rename from server/game_dev/migrations/0008_alter_event_date.py rename to server/game_dev/migrations/0013_alter_event_date.py index 13c0a175..89e026fa 100644 --- a/server/game_dev/migrations/0008_alter_event_date.py +++ b/server/game_dev/migrations/0013_alter_event_date.py @@ -6,7 +6,7 @@ class Migration(migrations.Migration): dependencies = [ - ("game_dev", "0007_rename_pathtothumbnail_game_thumbnail_and_more"), + ("game_dev", "0011_rename_pathtothumbnail_game_thumbnail_and_more"), ] operations = [ diff --git a/server/game_dev/migrations/0009_merge_20260129_2104.py b/server/game_dev/migrations/0014_merge_20260129_2104.py similarity index 61% rename from server/game_dev/migrations/0009_merge_20260129_2104.py rename to server/game_dev/migrations/0014_merge_20260129_2104.py index c7d68a0d..89cfc45f 100644 --- a/server/game_dev/migrations/0009_merge_20260129_2104.py +++ b/server/game_dev/migrations/0014_merge_20260129_2104.py @@ -6,8 +6,8 @@ class Migration(migrations.Migration): dependencies = [ - ('game_dev', '0005_alter_member_profile_picture'), - ('game_dev', '0008_alter_committee_role'), + ('game_dev', '0006_alter_member_profile_picture'), + ('game_dev', '0012_alter_committee_role'), ] operations = [ diff --git a/server/game_dev/migrations/0009_merge_20260131_1044.py b/server/game_dev/migrations/0015_merge_20260131_1044.py similarity index 62% rename from server/game_dev/migrations/0009_merge_20260131_1044.py rename to server/game_dev/migrations/0015_merge_20260131_1044.py index 1abbcd99..9be7a42a 100644 --- a/server/game_dev/migrations/0009_merge_20260131_1044.py +++ b/server/game_dev/migrations/0015_merge_20260131_1044.py @@ -6,8 +6,8 @@ class Migration(migrations.Migration): dependencies = [ - ('game_dev', '0005_alter_member_profile_picture'), - ('game_dev', '0008_alter_event_date'), + ('game_dev', '0006_alter_member_profile_picture'), + ('game_dev', '0013_alter_event_date'), ] operations = [ diff --git a/server/game_dev/migrations/0010_game_itchgameembedid_game_itchgameheight_and_more.py b/server/game_dev/migrations/0016_game_itchgameembedid_game_itchgameheight_and_more.py similarity index 94% rename from server/game_dev/migrations/0010_game_itchgameembedid_game_itchgameheight_and_more.py rename to server/game_dev/migrations/0016_game_itchgameembedid_game_itchgameheight_and_more.py index 3421ce96..4cf3312e 100644 --- a/server/game_dev/migrations/0010_game_itchgameembedid_game_itchgameheight_and_more.py +++ b/server/game_dev/migrations/0016_game_itchgameembedid_game_itchgameheight_and_more.py @@ -6,7 +6,7 @@ class Migration(migrations.Migration): dependencies = [ - ("game_dev", "0009_merge_20260131_1044"), + ("game_dev", "0015_merge_20260131_1044"), ] operations = [ diff --git a/server/game_dev/migrations/0010_merge_20260131_1118.py b/server/game_dev/migrations/0017_merge_20260131_1118.py similarity index 64% rename from server/game_dev/migrations/0010_merge_20260131_1118.py rename to server/game_dev/migrations/0017_merge_20260131_1118.py index 35027726..e7505aa1 100644 --- a/server/game_dev/migrations/0010_merge_20260131_1118.py +++ b/server/game_dev/migrations/0017_merge_20260131_1118.py @@ -6,8 +6,8 @@ class Migration(migrations.Migration): dependencies = [ - ('game_dev', '0009_merge_20260129_2104'), - ('game_dev', '0009_merge_20260131_1044'), + ('game_dev', '0014_merge_20260129_2104'), + ('game_dev', '0015_merge_20260131_1044'), ] operations = [ diff --git a/server/game_dev/migrations/0010_socialmedia.py b/server/game_dev/migrations/0018_socialmedia.py similarity index 97% rename from server/game_dev/migrations/0010_socialmedia.py rename to server/game_dev/migrations/0018_socialmedia.py index f266b880..87b9c0fa 100644 --- a/server/game_dev/migrations/0010_socialmedia.py +++ b/server/game_dev/migrations/0018_socialmedia.py @@ -7,7 +7,7 @@ class Migration(migrations.Migration): dependencies = [ - ("game_dev", "0009_merge_20260131_1044"), + ("game_dev", "0015_merge_20260131_1044"), ] operations = [ diff --git a/server/game_dev/migrations/0011_alter_gameshowcase_game.py b/server/game_dev/migrations/0019_alter_gameshowcase_game.py similarity index 90% rename from server/game_dev/migrations/0011_alter_gameshowcase_game.py rename to server/game_dev/migrations/0019_alter_gameshowcase_game.py index 120447ce..f527c3be 100644 --- a/server/game_dev/migrations/0011_alter_gameshowcase_game.py +++ b/server/game_dev/migrations/0019_alter_gameshowcase_game.py @@ -7,7 +7,7 @@ class Migration(migrations.Migration): dependencies = [ - ('game_dev', '0010_merge_20260131_1118'), + ('game_dev', '0017_merge_20260131_1118'), ] operations = [ diff --git a/server/game_dev/migrations/0011_merge_0010_merge_20260131_1118_0010_socialmedia.py b/server/game_dev/migrations/0020_merge_0010_merge_20260131_1118_0010_socialmedia.py similarity index 65% rename from server/game_dev/migrations/0011_merge_0010_merge_20260131_1118_0010_socialmedia.py rename to server/game_dev/migrations/0020_merge_0010_merge_20260131_1118_0010_socialmedia.py index 2034020c..091c62c4 100644 --- a/server/game_dev/migrations/0011_merge_0010_merge_20260131_1118_0010_socialmedia.py +++ b/server/game_dev/migrations/0020_merge_0010_merge_20260131_1118_0010_socialmedia.py @@ -6,8 +6,8 @@ class Migration(migrations.Migration): dependencies = [ - ("game_dev", "0010_merge_20260131_1118"), - ("game_dev", "0010_socialmedia"), + ("game_dev", "0017_merge_20260131_1118"), + ("game_dev", "0018_socialmedia"), ] operations = [] diff --git a/server/game_dev/migrations/0011_merge_20260205_1434.py b/server/game_dev/migrations/0021_merge_20260205_1434.py similarity index 62% rename from server/game_dev/migrations/0011_merge_20260205_1434.py rename to server/game_dev/migrations/0021_merge_20260205_1434.py index 99940f57..307c91e1 100644 --- a/server/game_dev/migrations/0011_merge_20260205_1434.py +++ b/server/game_dev/migrations/0021_merge_20260205_1434.py @@ -6,8 +6,8 @@ class Migration(migrations.Migration): dependencies = [ - ("game_dev", "0010_game_itchgameembedid_game_itchgameheight_and_more"), - ("game_dev", "0010_merge_20260131_1118"), + ("game_dev", "0016_game_itchgameembedid_game_itchgameheight_and_more"), + ("game_dev", "0017_merge_20260131_1118"), ] operations = [] diff --git a/server/game_dev/migrations/0012_merge_20260214_1112.py b/server/game_dev/migrations/0022_merge_20260214_1112.py similarity index 62% rename from server/game_dev/migrations/0012_merge_20260214_1112.py rename to server/game_dev/migrations/0022_merge_20260214_1112.py index b6b1587f..40df99c0 100644 --- a/server/game_dev/migrations/0012_merge_20260214_1112.py +++ b/server/game_dev/migrations/0022_merge_20260214_1112.py @@ -6,8 +6,8 @@ class Migration(migrations.Migration): dependencies = [ - ("game_dev", "0011_alter_gameshowcase_game"), - ("game_dev", "0011_merge_20260205_1434"), + ("game_dev", "0019_alter_gameshowcase_game"), + ("game_dev", "0021_merge_20260205_1434"), ] operations = [] diff --git a/server/game_dev/migrations/0012_remove_socialmedia_socialmedianame.py b/server/game_dev/migrations/0023_remove_socialmedia_socialmedianame.py similarity index 82% rename from server/game_dev/migrations/0012_remove_socialmedia_socialmedianame.py rename to server/game_dev/migrations/0023_remove_socialmedia_socialmedianame.py index e51428a5..7b19e278 100644 --- a/server/game_dev/migrations/0012_remove_socialmedia_socialmedianame.py +++ b/server/game_dev/migrations/0023_remove_socialmedia_socialmedianame.py @@ -6,7 +6,7 @@ class Migration(migrations.Migration): dependencies = [ - ("game_dev", "0011_merge_0010_merge_20260131_1118_0010_socialmedia"), + ("game_dev", "0020_merge_0010_merge_20260131_1118_0010_socialmedia"), ] operations = [ diff --git a/server/game_dev/migrations/0013_alter_game_itchgameembedid.py b/server/game_dev/migrations/0024_alter_game_itchgameembedid.py similarity index 91% rename from server/game_dev/migrations/0013_alter_game_itchgameembedid.py rename to server/game_dev/migrations/0024_alter_game_itchgameembedid.py index c1bc5534..d8aa8b76 100644 --- a/server/game_dev/migrations/0013_alter_game_itchgameembedid.py +++ b/server/game_dev/migrations/0024_alter_game_itchgameembedid.py @@ -6,7 +6,7 @@ class Migration(migrations.Migration): dependencies = [ - ("game_dev", "0012_merge_20260214_1112"), + ("game_dev", "0022_merge_20260214_1112"), ] operations = [ diff --git a/server/game_dev/migrations/0013_merge_20260214_1347.py b/server/game_dev/migrations/0025_merge_20260214_1347.py similarity index 60% rename from server/game_dev/migrations/0013_merge_20260214_1347.py rename to server/game_dev/migrations/0025_merge_20260214_1347.py index 9a1c3592..3fd5e451 100644 --- a/server/game_dev/migrations/0013_merge_20260214_1347.py +++ b/server/game_dev/migrations/0025_merge_20260214_1347.py @@ -6,8 +6,8 @@ class Migration(migrations.Migration): dependencies = [ - ('game_dev', '0011_alter_gameshowcase_game'), - ('game_dev', '0012_remove_socialmedia_socialmedianame'), + ('game_dev', '0019_alter_gameshowcase_game'), + ('game_dev', '0023_remove_socialmedia_socialmedianame'), ] operations = [ diff --git a/server/game_dev/migrations/0014_merge_20260214_1420.py b/server/game_dev/migrations/0026_merge_20260214_1420.py similarity index 61% rename from server/game_dev/migrations/0014_merge_20260214_1420.py rename to server/game_dev/migrations/0026_merge_20260214_1420.py index 767bc2ac..27f8e63c 100644 --- a/server/game_dev/migrations/0014_merge_20260214_1420.py +++ b/server/game_dev/migrations/0026_merge_20260214_1420.py @@ -6,8 +6,8 @@ class Migration(migrations.Migration): dependencies = [ - ("game_dev", "0013_alter_game_itchgameembedid"), - ("game_dev", "0013_merge_20260214_1347"), + ("game_dev", "0024_alter_game_itchgameembedid"), + ("game_dev", "0025_merge_20260214_1347"), ] operations = [] diff --git a/server/game_dev/migrations/0027_remove_game_itchgameembedid_game_itchgameplayableid.py b/server/game_dev/migrations/0027_remove_game_itchgameembedid_game_itchgameplayableid.py new file mode 100644 index 00000000..4dc7ce98 --- /dev/null +++ b/server/game_dev/migrations/0027_remove_game_itchgameembedid_game_itchgameplayableid.py @@ -0,0 +1,27 @@ +# Generated by Django 5.1.15 on 2026-02-21 06:56 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("game_dev", "0026_merge_20260214_1420"), + ] + + operations = [ + migrations.RemoveField( + model_name="game", + name="itchGameEmbedID", + ), + migrations.AddField( + model_name="game", + name="itchGamePlayableID", + field=models.PositiveBigIntegerField( + blank=True, + default=None, + help_text="If a game is playable and has a web demo stored on itch.io, please enter the embed developer ID", + null=True, + ), + ), + ] diff --git a/server/game_dev/models.py b/server/game_dev/models.py index d626275d..91d7290d 100644 --- a/server/game_dev/models.py +++ b/server/game_dev/models.py @@ -60,15 +60,11 @@ class CompletionStatus(models.IntegerChoices): blank=True, help_text="If game is stored on itch.io, please enter the itchEmbedID, i.e., 1000200" ) - - thumbnail = models.ImageField(upload_to="games/", null=True) - event = models.ForeignKey(Event, on_delete=models.SET_NULL, null=True, blank=True) - - itchGameEmbedID = models.PositiveBigIntegerField( + itchGamePlayableID = models.PositiveBigIntegerField( default=None, null=True, blank=True, - help_text="If a game has a web demo stored on itch.io, please enter the embed ID" + help_text="If a game is playable and has a web demo stored on itch.io, please enter the embed developer ID" ) itchGameWidth = models.PositiveBigIntegerField( @@ -78,6 +74,9 @@ class CompletionStatus(models.IntegerChoices): default=0 ) + thumbnail = models.ImageField(upload_to="games/", null=True) + event = models.ForeignKey(Event, on_delete=models.SET_NULL, null=True, blank=True) + def __str__(self): return str(self.name) diff --git a/server/game_dev/serializers.py b/server/game_dev/serializers.py index c576aaa3..941edb9f 100644 --- a/server/game_dev/serializers.py +++ b/server/game_dev/serializers.py @@ -34,21 +34,33 @@ def get_social_media(self, obj): class GamesSerializer(serializers.ModelSerializer): contributors = GameContributorSerializer( - many=True, - source="game_contributors", - read_only=True + many=True, source="game_contributors", read_only=True ) class Meta: model = Game - fields = ('id', 'name', 'description', 'completion', 'active', 'hostURL', 'itchEmbedID', 'thumbnail', 'event', 'itchGameEmbedID', - 'itchGameWidth', 'itchGameHeight', "contributors") + fields = ( + "id", + "name", + "description", + "completion", + "active", + "hostURL", + "itchEmbedID", + "thumbnail", + "event", + "itchGamePlayableID", + "itchGameWidth", + "itchGameHeight", + "contributors", + ) # Contributor serializer for name and role + class ShowcaseContributorSerializer(serializers.ModelSerializer): - name = serializers.CharField(source='member.name', read_only=True) + name = serializers.CharField(source="member.name", read_only=True) role = serializers.CharField(read_only=True) social_media = serializers.SerializerMethodField() @@ -63,18 +75,24 @@ def get_social_media(self, obj): # Serializer for GameShowcase class GameshowcaseSerializer(serializers.ModelSerializer): - game_id = serializers.IntegerField(source='game.id', read_only=True) - game_name = serializers.CharField(source='game.name', read_only=True) - game_description = serializers.CharField( - source='game.description', read_only=True) + game_id = serializers.IntegerField(source="game.id", read_only=True) + game_name = serializers.CharField(source="game.name", read_only=True) + game_description = serializers.CharField(source="game.description", read_only=True) game_cover_thumbnail = serializers.ImageField( - source='game.thumbnail', read_only=True) + source="game.thumbnail", read_only=True + ) contributors = serializers.SerializerMethodField() class Meta: model = GameShowcase - fields = ('game_id', 'game_name', 'game_description', - 'description', 'contributors', 'game_cover_thumbnail') + fields = ( + "game_id", + "game_name", + "game_description", + "description", + "contributors", + "game_cover_thumbnail", + ) def get_contributors(self, obj): # Always fetch contributors from GameContributor for the related game @@ -93,15 +111,9 @@ class Meta: class MemberSerializer(serializers.ModelSerializer): social_media = SocialMediaSerializer( - many=True, source="social_media_links", read_only=True) + many=True, source="social_media_links", read_only=True + ) class Meta: model = Member - fields = [ - "name", - "profile_picture", - "about", - "pronouns", - "social_media", - "pk" - ] + fields = ["name", "profile_picture", "about", "pronouns", "social_media", "pk"]