]> git.parisson.com Git - telemeta.git/commitdiff
Remove WeakForeignKey - restore unused class for supporting initial migration
authorThomas Fillon <thomas@parisson.com>
Tue, 18 Jul 2017 13:41:37 +0000 (15:41 +0200)
committerThomas Fillon <thomas@parisson.com>
Tue, 18 Jul 2017 13:41:37 +0000 (15:41 +0200)
telemeta/migrations/0004_auto_20170718_1540.py [new file with mode: 0644]
telemeta/models/fields.py
telemeta/models/format.py
telemeta/models/location.py

diff --git a/telemeta/migrations/0004_auto_20170718_1540.py b/telemeta/migrations/0004_auto_20170718_1540.py
new file mode 100644 (file)
index 0000000..e934a25
--- /dev/null
@@ -0,0 +1,46 @@
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+import django.db.models.deletion
+import telemeta.models.fields
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('telemeta', '0003_auto_20170718_1502'),
+    ]
+
+    operations = [
+        migrations.AlterField(
+            model_name='format',
+            name='original_channels',
+            field=telemeta.models.fields.ForeignKey(related_name='format', on_delete=django.db.models.deletion.SET_NULL, default=None, blank=True, to='telemeta.NumberOfChannels', null=True, verbose_name='number of channels'),
+        ),
+        migrations.AlterField(
+            model_name='format',
+            name='physical_format',
+            field=telemeta.models.fields.ForeignKey(related_name='format', on_delete=django.db.models.deletion.SET_NULL, default=None, blank=True, to='telemeta.PhysicalFormat', null=True, verbose_name='physical format'),
+        ),
+        migrations.AlterField(
+            model_name='format',
+            name='tape_speed',
+            field=telemeta.models.fields.ForeignKey(related_name='format', on_delete=django.db.models.deletion.SET_NULL, default=None, blank=True, to='telemeta.TapeSpeed', null=True, verbose_name='tape speed (cm/s)'),
+        ),
+        migrations.AlterField(
+            model_name='format',
+            name='tape_vendor',
+            field=telemeta.models.fields.ForeignKey(related_name='format', on_delete=django.db.models.deletion.SET_NULL, default=None, blank=True, to='telemeta.TapeVendor', null=True, verbose_name='tape vendor'),
+        ),
+        migrations.AlterField(
+            model_name='format',
+            name='tape_wheel_diameter',
+            field=telemeta.models.fields.ForeignKey(related_name='format', on_delete=django.db.models.deletion.SET_NULL, default=None, blank=True, to='telemeta.TapeWheelDiameter', null=True, verbose_name='tape wheel diameter (cm)'),
+        ),
+        migrations.AlterField(
+            model_name='location',
+            name='current_location',
+            field=telemeta.models.fields.ForeignKey(related_name='past_names', on_delete=django.db.models.deletion.SET_NULL, default=None, blank=True, to='telemeta.Location', null=True, verbose_name='current location'),
+        ),
+    ]
index ef1cfc0142530724cfd80269e0c5c13b1b0d6bff..8629d0432b0864a6f0a5820cdca40fa385fd6c34 100644 (file)
@@ -198,6 +198,26 @@ class ForeignKey(models.ForeignKey):
         super(ForeignKey, self).__init__(to, **normalize_field(kwargs, 0))
 
 
+class WeakForeignKey(ForeignKey):
+    """A weak foreign key is the same as foreign key but without cascading
+    delete. Instead the reference is set to null when the referenced record
+    get deleted. This emulates the ON DELETE SET NULL sql behaviour.
+
+    This field is automatically allowed to be null, there's no need to pass
+    null=True.
+
+    The constructor arguments are normalized with normalize_field() by the
+    parent ForeignKey
+
+    Warning: must be used in conjunction with EnhancedQuerySet, EnhancedManager,
+    and EnhancedModel
+    """
+    def __init__(self, to, **kwargs):
+        kwargs['null'] = True
+        super(WeakForeignKey, self).__init__(to, **kwargs)
+
+
+
 class CharField(models.CharField):
     """This is a CharField with a default max_length of 250.
 
index 3a896067c4a19579de4a52c2567ebe919ec5c114..e9418d7283c1b7d2755531e39ac61b41d765d2eb 100644 (file)
@@ -38,8 +38,9 @@ class Format(ModelCore):
 
     item                  = ForeignKey('MediaItem', related_name="format", verbose_name = _("item"),
                                        blank=True, null=True, on_delete=models.SET_NULL)
-    physical_format       = WeakForeignKey(PhysicalFormat, related_name="format",
-                                     verbose_name = _("physical format"))
+    physical_format       = ForeignKey(PhysicalFormat, related_name="format",
+                                       verbose_name = _("physical format"),
+                                       blank=True, null=True, on_delete=models.SET_NULL)
     original_code         = CharField(_('original code'))
     original_number       = CharField(_('original number'))
     original_status       = CharField(_('original status'))
@@ -48,19 +49,23 @@ class Format(ModelCore):
     original_location     = ForeignKey('Location', related_name="format",
                                        verbose_name = _("original location"),
                                        blank=True, null=True, on_delete=models.SET_NULL)
-    original_channels     = WeakForeignKey(NumberOfChannels, related_name="format",
-                                        verbose_name = _("number of channels"))
+    original_channels     = ForeignKey(NumberOfChannels, related_name="format",
+                                       verbose_name = _("number of channels"),
+                                       blank=True, null=True, on_delete=models.SET_NULL)
     original_audio_quality = TextField(_('audio quality'))
     recording_system      = CharField(_('recording system'))
 
     # Tapes
-    tape_wheel_diameter = WeakForeignKey(TapeWheelDiameter, related_name="format",
-                                        verbose_name = _("tape wheel diameter (cm)"))
+    tape_wheel_diameter = ForeignKey(TapeWheelDiameter, related_name="format",
+                                     verbose_name = _("tape wheel diameter (cm)"),
+                                     blank=True, null=True, on_delete=models.SET_NULL)
     tape_thickness      = CharField(_('tape thickness (um)'))
-    tape_speed          = WeakForeignKey(TapeSpeed, related_name="format",
-                                        verbose_name = _("tape speed (cm/s)"))
-    tape_vendor         = WeakForeignKey(TapeVendor, related_name="format",
-                                        verbose_name = _("tape vendor"))
+    tape_speed          = ForeignKey(TapeSpeed, related_name="format",
+                                     verbose_name = _("tape speed (cm/s)"),
+                                     blank=True, null=True, on_delete=models.SET_NULL)
+    tape_vendor         = ForeignKey(TapeVendor, related_name="format",
+                                     verbose_name = _("tape vendor"),
+                                     blank=True, null=True, on_delete=models.SET_NULL)
     tape_reference      = CharField(_('tape reference'))
     sticker_presence    = BooleanField(_('sticker presence'))
 
index 019d054b8a2f0e31f16d36381762de6c94151ea7..f675c95c09cf2998e42217c04cd092ede1730d72 100644 (file)
@@ -38,8 +38,8 @@ class Location(ModelCore):
     name             = CharField(_('name'), unique=True, max_length=150, required=True)
     type             = IntegerField(_('type'), choices=TYPE_CHOICES, default=OTHER_TYPE, db_index=True)
     complete_type    = ForeignKey('LocationType', related_name="locations", verbose_name=_('complete type'))
-    current_location = WeakForeignKey('self', related_name="past_names",
-                                      verbose_name=_('current location'))
+    current_location = ForeignKey('self', related_name="past_names",
+                                  verbose_name=_('current location'), blank=True, null=True, on_delete=models.SET_NULL)
     latitude         = FloatField(null=True)
     longitude        = FloatField(null=True)
     is_authoritative = BooleanField(_('authoritative'))