add helper functions to models

This commit is contained in:
Gesche 2021-04-19 00:20:04 +02:00
parent 02e1677c0d
commit f6c958eed3
1 changed files with 22 additions and 1 deletions

View File

@ -15,6 +15,10 @@ class StoryRound(models.Model):
def get_absolute_url(self): def get_absolute_url(self):
return reverse('writing:detail', kwargs={'pk': self.pk}) return reverse('writing:detail', kwargs={'pk': self.pk})
def get_next_story_part(self, user: User) -> 'StoryPart':
# TODO: implement, for each story get unfinished part and check user
pass
class Participant(models.Model): class Participant(models.Model):
user = models.ForeignKey(User, on_delete=CASCADE) user = models.ForeignKey(User, on_delete=CASCADE)
@ -27,10 +31,27 @@ class Story(models.Model):
created = models.DateTimeField(auto_now_add=True) created = models.DateTimeField(auto_now_add=True)
part_of_round = models.ForeignKey(StoryRound, on_delete=CASCADE) part_of_round = models.ForeignKey(StoryRound, on_delete=CASCADE)
started_by = models.ForeignKey(User, on_delete=CASCADE) started_by = models.ForeignKey(User, on_delete=CASCADE)
finished = models.BooleanField(default=False)
def get_first_unfinished_part(self):
if self.finished:
return None
first_part = StoryPart.objects.get(part_of_id=self.pk, previous_part__isnull=True)
last_unfinished_part = first_part
while last_unfinished_part.finished:
last_unfinished_part = StoryPart.objects.get(previous_part=last_unfinished_part)
return last_unfinished_part
class StoryPart(models.Model): class StoryPart(models.Model):
user = models.ForeignKey(User, on_delete=CASCADE) user = models.ForeignKey(User, on_delete=CASCADE)
previous_part = models.ForeignKey('StoryPart', on_delete=CASCADE, null=True, blank=True) previous_part = models.ForeignKey('StoryPart', on_delete=CASCADE, null=True, blank=True)
text = models.TextField() text = models.TextField(null=True, blank=True)
part_of = models.ForeignKey('Story', on_delete=CASCADE) part_of = models.ForeignKey('Story', on_delete=CASCADE)
@property
def finished(self):
return self.text