diff --git a/stories/writingtogether/migrations/0001_initial.py b/stories/writingtogether/migrations/0001_initial.py index 01a8640..ad48f13 100644 --- a/stories/writingtogether/migrations/0001_initial.py +++ b/stories/writingtogether/migrations/0001_initial.py @@ -1,4 +1,4 @@ -# Generated by Django 3.1.7 on 2021-03-30 19:23 +# Generated by Django 3.1.7 on 2021-03-30 23:08 from django.conf import settings from django.db import migrations, models @@ -14,12 +14,29 @@ class Migration(migrations.Migration): ] operations = [ + migrations.CreateModel( + name='Participant', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('order_by', models.IntegerField()), + ], + ), migrations.CreateModel( name='Story', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(blank=True, max_length=256, null=True)), - ('created', models.DateTimeField()), + ('created', models.DateTimeField(auto_now_add=True)), + ], + ), + migrations.CreateModel( + name='StoryRound', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=256)), + ('created', models.DateTimeField(auto_now_add=True)), + ('number_of_rounds', models.IntegerField()), + ('participants', models.ManyToManyField(through='writingtogether.Participant', to=settings.AUTH_USER_MODEL)), ], ), migrations.CreateModel( @@ -28,7 +45,28 @@ class Migration(migrations.Migration): ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('text', models.TextField()), ('part_of', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='writingtogether.story')), + ('previous_part', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='writingtogether.storypart')), ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), ], ), + migrations.AddField( + model_name='story', + name='part_of_round', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='writingtogether.storyround'), + ), + migrations.AddField( + model_name='story', + name='started_by', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL), + ), + migrations.AddField( + model_name='participant', + name='story_round', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='writingtogether.storyround'), + ), + migrations.AddField( + model_name='participant', + name='user', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL), + ), ] diff --git a/stories/writingtogether/models.py b/stories/writingtogether/models.py index 113b3c4..5f2acab 100644 --- a/stories/writingtogether/models.py +++ b/stories/writingtogether/models.py @@ -1,15 +1,36 @@ from django.contrib.auth import get_user_model from django.db import models from django.db.models import CASCADE +from django.urls import reverse User = get_user_model() + +class StoryRound(models.Model): + name = models.CharField(max_length=256) + participants = models.ManyToManyField(User, through='Participant') + created = models.DateTimeField(auto_now_add=True) + number_of_rounds = models.IntegerField() + + def get_absolute_url(self): + return reverse('writing:detail', kwargs={'pk': self.pk}) + + +class Participant(models.Model): + user = models.ForeignKey(User, on_delete=CASCADE) + story_round = models.ForeignKey(StoryRound, on_delete=CASCADE) + order_by = models.IntegerField() + + class Story(models.Model): name = models.CharField(max_length=256, null=True, blank=True) - created = models.DateTimeField() + created = models.DateTimeField(auto_now_add=True) + part_of_round = models.ForeignKey(StoryRound, on_delete=CASCADE) + started_by = models.ForeignKey(User, on_delete=CASCADE) class StoryPart(models.Model): user = models.ForeignKey(User, on_delete=CASCADE) + previous_part = models.ForeignKey('StoryPart', on_delete=CASCADE, null=True, blank=True) text = models.TextField() - part_of = models.ForeignKey('Story', on_delete=CASCADE) \ No newline at end of file + part_of = models.ForeignKey('Story', on_delete=CASCADE)