SciPost Code Repository

Skip to content
Snippets Groups Projects
Commit 98eded4c authored by Jorran de Wit's avatar Jorran de Wit
Browse files

Fix migrations bug: CAUTION README!

This commit fixes the migration bug which made postgresql
think there still was a relation to a non-exisition table
called scipost_feedback, scipost_motion and scipost_nomination.

CAUTION! This will however reset all existing relations
with the Remark model to VGM models.
parent ec6d6f92
No related branches found
No related tags found
No related merge requests found
......@@ -12,87 +12,7 @@ class Migration(migrations.Migration):
('scipost', '0038_nomination_webpage'),
]
state_operations = [
migrations.RemoveField(
model_name='feedback',
name='VGM',
),
migrations.RemoveField(
model_name='feedback',
name='by',
),
migrations.RemoveField(
model_name='motion',
name='VGM',
),
migrations.RemoveField(
model_name='motion',
name='in_agreement',
),
migrations.RemoveField(
model_name='motion',
name='in_disagreement',
),
migrations.RemoveField(
model_name='motion',
name='in_notsure',
),
migrations.RemoveField(
model_name='motion',
name='put_forward_by',
),
migrations.DeleteModel(
name='NewsItem',
),
migrations.RemoveField(
model_name='nomination',
name='VGM',
),
migrations.RemoveField(
model_name='nomination',
name='by',
),
migrations.RemoveField(
model_name='nomination',
name='in_agreement',
),
migrations.RemoveField(
model_name='nomination',
name='in_disagreement',
),
migrations.RemoveField(
model_name='nomination',
name='in_notsure',
),
migrations.AlterField(
model_name='remark',
name='feedback',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='virtualmeetings.Feedback'),
),
migrations.AlterField(
model_name='remark',
name='motion',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='virtualmeetings.Motion'),
),
migrations.AlterField(
model_name='remark',
name='nomination',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='virtualmeetings.Nomination'),
),
migrations.DeleteModel(
name='Feedback',
),
migrations.DeleteModel(
name='Motion',
),
migrations.DeleteModel(
name='Nomination',
),
migrations.DeleteModel(
name='VGM',
),
]
operations = [
migrations.SeparateDatabaseAndState(state_operations=state_operations)
# I'm in a vacuum state.
# Please don't remove me though...
]
# -*- coding: utf-8 -*-
# Generated by Django 1.10.3 on 2017-05-04 11:59
from __future__ import unicode_literals
from django.db import migrations
from django.db.migrations.exceptions import InvalidMigrationPlan
class Migration(migrations.Migration):
dependencies = [
('scipost', '0050_auto_20170416_2152'),
]
operations = [
migrations.AlterModelTable(
name='Feedback',
table='scipost_feedback',
),
migrations.AlterModelTable(
name='Motion',
table='scipost_motion',
),
migrations.AlterModelTable(
name='Nomination',
table='scipost_nomination',
),
migrations.AlterModelTable(
name='VGM',
table='scipost_vgm',
),
migrations.RemoveField(
model_name='remark',
name='feedback',
),
migrations.RemoveField(
model_name='remark',
name='motion',
),
migrations.RemoveField(
model_name='remark',
name='nomination',
),
]
def apply(self, *args, **kwargs):
'''Forward apply the migration only if user explictly accepts the migration.'''
print('\n\nDue to earlier migration issues, this migration will remove the Remark foreignkey'
' data to `Feedback`, `Motion` and `Nomination`. Please make a backup to'
' be able to *manually* fix the relations afterwards.')
go_ahead = input(' Do you want to continue? [y/N] ')
if go_ahead == 'y':
return super().apply(*args, **kwargs)
else:
raise InvalidMigrationPlan
# -*- coding: utf-8 -*-
# Generated by Django 1.10.3 on 2017-05-04 12:04
from __future__ import unicode_literals
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('scipost', '0051_auto_20170504_1359'),
]
database_operations = [
migrations.AlterModelTable('Motion', 'virtualmeetings_motion'),
migrations.AlterModelTable('Feedback', 'virtualmeetings_feedback'),
migrations.AlterModelTable('Nomination', 'virtualmeetings_nomination'),
migrations.AlterModelTable('VGM', 'virtualmeetings_vgm'),
migrations.AlterField(
model_name='motion',
name='VGM',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='virtualmeetings.VGM'),
),
migrations.AlterField(
model_name='feedback',
name='VGM',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='virtualmeetings.VGM'),
),
migrations.AlterField(
model_name='nomination',
name='VGM',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='virtualmeetings.VGM'),
),
]
state_operations = [
migrations.RemoveField(
model_name='feedback',
name='VGM',
),
migrations.RemoveField(
model_name='feedback',
name='by',
),
migrations.RemoveField(
model_name='motion',
name='VGM',
),
migrations.RemoveField(
model_name='motion',
name='in_agreement',
),
migrations.RemoveField(
model_name='motion',
name='in_disagreement',
),
migrations.RemoveField(
model_name='motion',
name='in_notsure',
),
migrations.RemoveField(
model_name='motion',
name='put_forward_by',
),
migrations.RemoveField(
model_name='nomination',
name='VGM',
),
migrations.RemoveField(
model_name='nomination',
name='by',
),
migrations.RemoveField(
model_name='nomination',
name='in_agreement',
),
migrations.RemoveField(
model_name='nomination',
name='in_disagreement',
),
migrations.RemoveField(
model_name='nomination',
name='in_notsure',
),
migrations.DeleteModel('Motion'),
migrations.DeleteModel('Feedback'),
migrations.DeleteModel('Nomination'),
migrations.DeleteModel('VGM')
]
operations = [
migrations.SeparateDatabaseAndState(
database_operations=database_operations,
state_operations=state_operations)
]
# -*- coding: utf-8 -*-
# Generated by Django 1.10.3 on 2017-05-04 13:38
from __future__ import unicode_literals
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('virtualmeetings', '0001_initial'),
('scipost', '0052_auto_20170504_1404'),
]
operations = [
migrations.AddField(
model_name='remark',
name='feedback',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='virtualmeetings.Feedback'),
),
migrations.AddField(
model_name='remark',
name='motion',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='virtualmeetings.Motion'),
),
migrations.AddField(
model_name='remark',
name='nomination',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='virtualmeetings.Nomination'),
),
]
# -*- coding: utf-8 -*-
# Generated by Django 1.10.3 on 2017-05-04 19:04
from __future__ import unicode_literals
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('scipost', '0053_auto_20170504_1538'),
]
state_operations = [
migrations.DeleteModel(
name='NewsItem',
),
]
operations = [
migrations.SeparateDatabaseAndState(
state_operations=state_operations)
]
......@@ -24,10 +24,7 @@ class Migration(migrations.Migration):
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('date', models.DateField()),
('feedback', models.TextField()),
],
options={
'db_table': 'scipost_feedback',
},
]
),
migrations.CreateModel(
name='Motion',
......@@ -42,10 +39,7 @@ class Migration(migrations.Migration):
('nr_D', models.PositiveIntegerField(default=0)),
('voting_deadline', models.DateTimeField(default=django.utils.timezone.now, verbose_name='voting deadline')),
('accepted', models.NullBooleanField()),
],
options={
'db_table': 'scipost_motion',
},
]
),
migrations.CreateModel(
name='Nomination',
......@@ -62,10 +56,7 @@ class Migration(migrations.Migration):
('nr_D', models.PositiveIntegerField(default=0)),
('voting_deadline', models.DateTimeField(default=django.utils.timezone.now, verbose_name='voting deadline')),
('accepted', models.NullBooleanField()),
],
options={
'db_table': 'scipost_nomination',
},
]
),
migrations.CreateModel(
name='VGM',
......@@ -74,10 +65,7 @@ class Migration(migrations.Migration):
('start_date', models.DateField()),
('end_date', models.DateField()),
('information', models.TextField(default='')),
],
options={
'db_table': 'scipost_vgm',
},
]
),
migrations.AddField(
model_name='nomination',
......
......@@ -21,9 +21,6 @@ class VGM(models.Model):
end_date = models.DateField()
information = models.TextField(default='')
class Meta:
db_table = 'scipost_vgm'
def __str__(self):
return 'From %s to %s' % (self.start_date.strftime('%Y-%m-%d'),
self.end_date.strftime('%Y-%m-%d'))
......@@ -33,14 +30,11 @@ class Feedback(models.Model):
"""
Feedback, suggestion or criticism on any aspect of SciPost.
"""
VGM = models.ForeignKey(VGM, blank=True, null=True)
by = models.ForeignKey(Contributor)
VGM = models.ForeignKey('virtualmeetings.VGM', blank=True, null=True)
by = models.ForeignKey('scipost.Contributor')
date = models.DateField()
feedback = models.TextField()
class Meta:
db_table = 'scipost_feedback'
def __str__(self):
return '%s: %s' % (self.by, self.feedback[:50])
......@@ -61,8 +55,8 @@ class Nomination(models.Model):
"""
Nomination to an Editorial Fellowship.
"""
VGM = models.ForeignKey(VGM, blank=True, null=True)
by = models.ForeignKey(Contributor)
VGM = models.ForeignKey('virtualmeetings.VGM', blank=True, null=True)
by = models.ForeignKey('scipost.Contributor')
date = models.DateField()
first_name = models.CharField(max_length=30, default='')
last_name = models.CharField(max_length=30, default='')
......@@ -85,9 +79,6 @@ class Nomination(models.Model):
voting_deadline = models.DateTimeField('voting deadline', default=timezone.now)
accepted = models.NullBooleanField()
class Meta:
db_table = 'scipost_nomination'
def __str__(self):
return '%s %s (nominated by %s)' % (self.first_name,
self.last_name,
......@@ -154,27 +145,24 @@ class Motion(models.Model):
They are meant to be voted on at the annual VGM.
"""
category = models.CharField(max_length=10, choices=MOTION_CATEGORIES, default='General')
VGM = models.ForeignKey(VGM, blank=True, null=True)
VGM = models.ForeignKey('virtualmeetings.VGM', blank=True, null=True)
background = models.TextField()
motion = models.TextField()
put_forward_by = models.ForeignKey(Contributor)
put_forward_by = models.ForeignKey('scipost.Contributor')
date = models.DateField()
nr_A = models.PositiveIntegerField(default=0)
in_agreement = models.ManyToManyField(Contributor,
in_agreement = models.ManyToManyField('scipost.Contributor',
related_name='in_agreement_with_motion', blank=True)
nr_N = models.PositiveIntegerField(default=0)
in_notsure = models.ManyToManyField(Contributor,
in_notsure = models.ManyToManyField('scipost.Contributor',
related_name='in_notsure_with_motion', blank=True)
nr_D = models.PositiveIntegerField(default=0)
in_disagreement = models.ManyToManyField(Contributor,
in_disagreement = models.ManyToManyField('scipost.Contributor',
related_name='in_disagreement_with_motion',
blank=True)
voting_deadline = models.DateTimeField('voting deadline', default=timezone.now)
accepted = models.NullBooleanField()
class Meta:
db_table = 'scipost_motion'
def __str__(self):
return self.motion[:32]
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment