--- /dev/null
+# -*- 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'),
+ ),
+ ]
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.
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'))
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'))
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'))