From 18ee33e1e0daed182439584e3bdc20fee2e1064b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20P=C3=A9pin?= Date: Wed, 5 Apr 2017 00:00:41 +0100 Subject: [PATCH] Remove the EventTimeSlot model It was pointless and is replaced by 3 additionnal fields in the `Event` model: `location`, `start_date` and `end_date`. --- gestion/migrations/0003_events.py | 49 ++++++++----------------------- gestion/models.py | 10 ++----- 2 files changed, 16 insertions(+), 43 deletions(-) diff --git a/gestion/migrations/0003_events.py b/gestion/migrations/0003_events.py index 5de9f17a..96cb63dd 100644 --- a/gestion/migrations/0003_events.py +++ b/gestion/migrations/0003_events.py @@ -8,45 +8,29 @@ import django.db.models.deletion def import_events(apps, schema_editor): - # Fetching the cof group - cof = apps.get_model("auth", "Group").objects.get(name="cof_buro") - - # First we deal with Events and Timeslots - OldEvent = apps.get_model("cof", "Event") - NewEvent = apps.get_model("gestion", "Event") - TimeSlot = apps.get_model("gestion", "EventTimeSlot") - # TODO: can it be done more efficiently? - for event in OldEvent.objects.all(): - new_event = NewEvent.objects.create( - title=event.title, - description=event.description, - image=event.image, - registration_open=event.registration_open, - old=event.old - ) - new_event.associations.add(cof) - TimeSlot.objects.create( - event=new_event, - location=event.location, - start_date=event.start_date, - end_date=event.end_date - ) - - # Then we migrate the other models + # Fetching the models that have be moved from cof to gestion model_names = [ - "EventCommentField", "EventCommentValue", "EventOption", + "Event", "EventCommentField", "EventCommentValue", "EventOption", "EventOptionChoice", "EventRegistration" ] models = [ (apps.get_model("cof", name), apps.get_model("gestion", name)) for name in model_names ] + + # Moving the data into the new table for OldModel, NewModel in models: NewModel.objects.bulk_create([ NewModel(**values) for values in OldModel.objects.values() ]) + # Linking all the existing event to the COF group + cof = apps.get_model("auth", "Group").objects.get(name="cof_buro") + _, NewEvent = models[0] + for event in NewEvent.objects.all(): + event.associations.add(cof) + def restore_events(apps, schema_editor): raise NotImplementedError @@ -66,6 +50,9 @@ class Migration(migrations.Migration): fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('title', models.CharField(max_length=200, verbose_name='Titre')), + ('location', models.CharField(max_length=200, verbose_name='Lieu')), + ('start_date', models.DateTimeField(blank=True, null=True, verbose_name='Date de début')), + ('end_date', models.DateTimeField(blank=True, null=True, verbose_name='Date de fin')), ('description', models.TextField(blank=True, verbose_name='Description')), ('image', models.ImageField(blank=True, null=True, upload_to='imgs/events/', verbose_name='Image')), ('registration_open', models.BooleanField(default=True, verbose_name='Inscriptions ouvertes')), @@ -76,16 +63,6 @@ class Migration(migrations.Migration): 'verbose_name': 'Événement', }, ), - migrations.CreateModel( - name='EventTimeSlot', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('location', models.CharField(max_length=200, verbose_name='Lieu')), - ('start_date', models.DateTimeField(blank=True, null=True, verbose_name='Date de début')), - ('end_date', models.DateTimeField(blank=True, null=True, verbose_name='Date de fin')), - ('event', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='gestion.Event')), - ], - ), migrations.CreateModel( name='EventCommentField', fields=[ diff --git a/gestion/models.py b/gestion/models.py index 272a18f5..c8983c50 100644 --- a/gestion/models.py +++ b/gestion/models.py @@ -121,6 +121,9 @@ class ClubUser(models.Model): class Event(models.Model): associations = models.ManyToManyField(Group, related_name="events") title = models.CharField("Titre", max_length=200) + location = models.CharField("Lieu", max_length=200) + start_date = models.DateTimeField("Date de début", blank=True, null=True) + end_date = models.DateTimeField("Date de fin", blank=True, null=True) description = models.TextField("Description", blank=True) image = models.ImageField( "Image", blank=True, null=True, upload_to="imgs/events/" @@ -137,13 +140,6 @@ class Event(models.Model): return self.title -class EventTimeSlot(models.Model): - event = models.ForeignKey(Event) - location = models.CharField("Lieu", max_length=200) - start_date = models.DateTimeField("Date de début", blank=True, null=True) - end_date = models.DateTimeField("Date de fin", blank=True, null=True) - - class EventCommentField(models.Model): TEXT = "text" CHAR = "char"