Remove the EventTimeSlot model

It was pointless and is replaced by 3 additionnal fields in the `Event`
model: `location`, `start_date`  and `end_date`.
This commit is contained in:
Martin Pépin 2017-04-05 00:00:41 +01:00
parent ec3a9a9658
commit 18ee33e1e0
2 changed files with 16 additions and 43 deletions

View file

@ -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=[

View file

@ -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"