@@ -28,12 +28,16 @@ def __str__(self):
2828
2929# GameContributor table: links Game, Member, and role (composite PK)
3030class GameContributor (models .Model ):
31- game = models .ForeignKey ('Game' , on_delete = models .CASCADE , related_name = 'game_contributors' )
32- member = models .ForeignKey ('Member' , on_delete = models .CASCADE , related_name = 'member_games' )
31+ game = models .ForeignKey (
32+ "Game" , on_delete = models .CASCADE , related_name = "game_contributors"
33+ )
34+ member = models .ForeignKey (
35+ "Member" , on_delete = models .CASCADE , related_name = "member_games"
36+ )
3337 role = models .CharField (max_length = 100 )
3438
3539 class Meta :
36- unique_together = ((' game' , ' member' ),)
40+ unique_together = ((" game" , " member" ),)
3741
3842 def __str__ (self ):
3943 return f"{ self .member .name } ({ self .role } ) for { self .game .name } "
@@ -60,13 +64,13 @@ class CompletionStatus(models.IntegerChoices):
6064 default = None ,
6165 null = True ,
6266 blank = True ,
63- help_text = "If game is stored on itch.io, please enter the itchEmbedID, i.e., 1000200"
67+ help_text = "If game is stored on itch.io, please enter the itchEmbedID, i.e., 1000200" ,
6468 )
6569 itchGamePlayableID = models .PositiveBigIntegerField (
6670 default = None ,
6771 null = True ,
6872 blank = True ,
69- help_text = "If a game is playable and has a web demo stored on itch.io, please enter the embed developer ID"
73+ help_text = "If a game is playable and has a web demo stored on itch.io, please enter the embed developer ID" ,
7074 )
7175 itchGameWidth = models .PositiveBigIntegerField (
7276 default = None ,
@@ -89,13 +93,23 @@ def clean(self):
8993 super ().clean ()
9094 if self .itchGamePlayableID :
9195 if not self .itchGameWidth :
92- raise ValidationError ({"itchGameWidth" : "Game width is required if itchGamePlayableID is set." })
96+ raise ValidationError (
97+ {
98+ "itchGameWidth" : "Game width is required if itchGamePlayableID is set."
99+ }
100+ )
93101 if not self .itchGameHeight :
94- raise ValidationError ({"itchGameHeight" : "Game height is required if itchGamePlayableID is set." })
102+ raise ValidationError (
103+ {
104+ "itchGameHeight" : "Game height is required if itchGamePlayableID is set."
105+ }
106+ )
95107
96108
97109class GameShowcase (models .Model ):
98- game = models .OneToOneField ('Game' , on_delete = models .CASCADE , related_name = 'game_showcases' )
110+ game = models .OneToOneField (
111+ "Game" , on_delete = models .CASCADE , related_name = "game_showcases"
112+ )
99113 description = models .TextField ()
100114
101115 def __str__ (self ):
@@ -104,41 +118,50 @@ def __str__(self):
104118
105119class Art (models .Model ):
106120 name = models .CharField (null = False , max_length = 200 )
107- description = models .CharField (max_length = 200 ,)
108- source_game = models .ForeignKey ('Game' , on_delete = models .CASCADE , related_name = 'game_artwork' )
109- media = models .ImageField (upload_to = 'art/' , null = False )
121+ description = models .CharField (
122+ max_length = 200 ,
123+ )
124+ source_game = models .ForeignKey (
125+ "Game" , on_delete = models .CASCADE , related_name = "game_artwork"
126+ )
127+ media = models .ImageField (upload_to = "art/" , null = False )
110128 active = models .BooleanField (default = True )
111129
112130 def __str__ (self ):
113131 return str (self .name )
114132
115133
116134class ArtContributor (models .Model ):
117- art = models .ForeignKey ('Art' , on_delete = models .CASCADE , related_name = 'contributors' )
118- member = models .ForeignKey ('Member' , on_delete = models .CASCADE , related_name = 'art_contributions' )
135+ art = models .ForeignKey (
136+ "Art" , on_delete = models .CASCADE , related_name = "contributors"
137+ )
138+ member = models .ForeignKey (
139+ "Member" , on_delete = models .CASCADE , related_name = "art_contributions"
140+ )
119141 role = models .CharField (max_length = 100 )
120142
121143 class Meta :
122144 constraints = [
123- models .UniqueConstraint (fields = [' art' , ' member' ], name = ' unique_art_member' )
145+ models .UniqueConstraint (fields = [" art" , " member" ], name = " unique_art_member" )
124146 ]
125- verbose_name = ' Art Contributor'
126- verbose_name_plural = ' Art Contributors'
147+ verbose_name = " Art Contributor"
148+ verbose_name_plural = " Art Contributors"
127149
128150 def __str__ (self ):
129151 return f"{ self .member .name } - { self .art .name } ({ self .role } )"
130152
131153
132154class ArtShowcase (models .Model ):
133155 description = models .CharField (max_length = 200 )
134- art = models .ForeignKey (Art , on_delete = models .CASCADE , related_name = ' showcase' )
156+ art = models .ForeignKey (Art , on_delete = models .CASCADE , related_name = " showcase" )
135157
136158 class Meta :
137159 constraints = [
138160 models .UniqueConstraint (
139- fields = ['art' ],
140- name = 'unique_artshowcase_per_art' ,
141- violation_error_message = 'Each art piece can only have one showcase.' )
161+ fields = ["art" ],
162+ name = "unique_artshowcase_per_art" ,
163+ violation_error_message = "Each art piece can only have one showcase." ,
164+ )
142165 ]
143166
144167 def __str__ (self ):
@@ -147,7 +170,9 @@ def __str__(self):
147170
148171class SocialMedia (models .Model ):
149172 link = models .URLField (max_length = 2083 )
150- member = models .ForeignKey ('Member' , on_delete = models .CASCADE , related_name = 'social_media_links' )
173+ member = models .ForeignKey (
174+ "Member" , on_delete = models .CASCADE , related_name = "social_media_links"
175+ )
151176 socialMediaUserName = models .CharField (max_length = 200 , blank = True )
152177
153178 def __str__ (self ):
@@ -164,7 +189,7 @@ class Committee(models.Model):
164189 "MARK" : "Marketing" ,
165190 "EV" : "Events OCM" ,
166191 "PRO" : "Projects OCM" ,
167- "FRE" : "Fresher Rep"
192+ "FRE" : "Fresher Rep" ,
168193 }
169194 role = models .CharField (max_length = 9 , choices = roles , default = "FRE" , unique = True )
170195
@@ -173,49 +198,3 @@ def get_member(self):
173198
174199 def __str__ (self ):
175200 return self .id .name
176-
177-
178- # Copied from issue-8-merge-40 therefore is just sample to work with
179- class Art (models .Model ):
180- name = models .CharField (null = False , max_length = 200 )
181- description = models .CharField (max_length = 200 ,)
182-
183- # Talk to the artwork team to change their model to meet the follow, remove the null and blank
184- source_game = models .ForeignKey ('Game' , on_delete = models .CASCADE , related_name = 'game_artwork' )
185- media = models .ImageField (upload_to = 'art/' , null = False )
186- active = models .BooleanField (default = True )
187-
188- def __str__ (self ):
189- return str (self .name )
190-
191-
192- class ArtContributor (models .Model ):
193- art = models .ForeignKey ('Art' , on_delete = models .CASCADE , related_name = 'contributors' )
194- member = models .ForeignKey ('Member' , on_delete = models .CASCADE , related_name = 'art_contributions' )
195- role = models .CharField (max_length = 100 )
196-
197- class Meta :
198- constraints = [
199- models .UniqueConstraint (fields = ['art' , 'member' ], name = 'unique_art_member' )
200- ]
201- verbose_name = 'Art Contributor'
202- verbose_name_plural = 'Art Contributors'
203-
204- def __str__ (self ):
205- return f"{ self .member .name } - { self .art .name } ({ self .role } )"
206-
207-
208- class ArtShowcase (models .Model ):
209- description = models .CharField (max_length = 200 )
210- art = models .ForeignKey (Art , on_delete = models .CASCADE , related_name = 'showcase' )
211-
212- class Meta :
213- constraints = [
214- models .UniqueConstraint (
215- fields = ['art' ],
216- name = 'unique_artshowcase_per_art' ,
217- violation_error_message = 'Each art piece can only have one showcase.' )
218- ]
219-
220- def __str__ (self ):
221- return f"ArtShowcase[Art={ str (self .art .name )} , Description={ self .description } ]"
0 commit comments