Skip to content

Commit 0231c58

Browse files
committed
feat(django): explicitically define on_delete for ForeignKey fields for 2.0 compat
Also define all owner fields as PROTECT instead of delete see https://docs.djangoproject.com/en/1.9/ref/models/fields/#django.db.models.ForeignKey https://docs.djangoproject.com/en/1.9/releases/1.9/#foreignkey-and-onetoonefield-on-delete-argument
1 parent da2a0fb commit 0231c58

9 files changed

Lines changed: 73 additions & 16 deletions

File tree

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
# -*- coding: utf-8 -*-
2+
# Generated by Django 1.9.6 on 2016-06-07 22:59
3+
from __future__ import unicode_literals
4+
5+
from django.conf import settings
6+
from django.db import migrations, models
7+
import django.db.models.deletion
8+
9+
10+
class Migration(migrations.Migration):
11+
12+
dependencies = [
13+
('api', '0008_config_registry'),
14+
]
15+
16+
operations = [
17+
migrations.AlterField(
18+
model_name='app',
19+
name='owner',
20+
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to=settings.AUTH_USER_MODEL),
21+
),
22+
migrations.AlterField(
23+
model_name='build',
24+
name='owner',
25+
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to=settings.AUTH_USER_MODEL),
26+
),
27+
migrations.AlterField(
28+
model_name='certificate',
29+
name='owner',
30+
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to=settings.AUTH_USER_MODEL),
31+
),
32+
migrations.AlterField(
33+
model_name='config',
34+
name='owner',
35+
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to=settings.AUTH_USER_MODEL),
36+
),
37+
migrations.AlterField(
38+
model_name='domain',
39+
name='owner',
40+
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to=settings.AUTH_USER_MODEL),
41+
),
42+
migrations.AlterField(
43+
model_name='key',
44+
name='owner',
45+
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL),
46+
),
47+
migrations.AlterField(
48+
model_name='push',
49+
name='owner',
50+
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to=settings.AUTH_USER_MODEL),
51+
),
52+
migrations.AlterField(
53+
model_name='release',
54+
name='owner',
55+
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to=settings.AUTH_USER_MODEL),
56+
),
57+
]

rootfs/api/models/app.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ class App(UuidAuditedModel):
6262
Application used to service requests on behalf of end-users
6363
"""
6464

65-
owner = models.ForeignKey(settings.AUTH_USER_MODEL)
65+
owner = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.PROTECT)
6666
id = models.SlugField(max_length=24, unique=True, null=True,
6767
validators=[validate_id_is_docker_compatible,
6868
validate_reserved_names])

rootfs/api/models/build.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ class Build(UuidAuditedModel):
1313
Instance of a software build used by runtime nodes
1414
"""
1515

16-
owner = models.ForeignKey(settings.AUTH_USER_MODEL)
17-
app = models.ForeignKey('App')
16+
owner = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.PROTECT)
17+
app = models.ForeignKey('App', on_delete=models.CASCADE)
1818
image = models.TextField()
1919

2020
# optional fields populated by builder

rootfs/api/models/certificate.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ class Certificate(AuditedModel):
7474
"""
7575
Public and private key pair used to secure application traffic at the router.
7676
"""
77-
owner = models.ForeignKey(settings.AUTH_USER_MODEL)
77+
owner = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.PROTECT)
7878
name = models.CharField(max_length=253, unique=True, validators=[validate_label])
7979
# there is no upper limit on the size of an x.509 certificate
8080
certificate = models.TextField(validators=[validate_certificate])

rootfs/api/models/config.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ class Config(UuidAuditedModel):
1212
during runtime execution of the Application.
1313
"""
1414

15-
owner = models.ForeignKey(settings.AUTH_USER_MODEL)
16-
app = models.ForeignKey('App')
15+
owner = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.PROTECT)
16+
app = models.ForeignKey('App', on_delete=models.CASCADE)
1717
values = JSONField(default={}, blank=True)
1818
memory = JSONField(default={}, blank=True)
1919
cpu = JSONField(default={}, blank=True)

rootfs/api/models/domain.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,12 @@
55

66

77
class Domain(AuditedModel):
8-
owner = models.ForeignKey(settings.AUTH_USER_MODEL)
9-
app = models.ForeignKey('App')
8+
owner = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.PROTECT)
9+
app = models.ForeignKey('App', on_delete=models.CASCADE)
1010
domain = models.TextField(blank=False, null=False, unique=True)
1111
certificate = models.ForeignKey(
1212
'Certificate',
13-
models.SET_NULL,
13+
on_delete=models.SET_NULL,
1414
blank=True,
1515
null=True
1616
)

rootfs/api/models/key.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ def validate_base64(value):
1919
class Key(UuidAuditedModel):
2020
"""An SSH public key."""
2121

22-
owner = models.ForeignKey(settings.AUTH_USER_MODEL)
22+
owner = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
2323
id = models.CharField(max_length=128)
2424
public = models.TextField(unique=True, validators=[validate_base64])
2525
fingerprint = models.CharField(max_length=128, editable=False)

rootfs/api/models/push.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ class Push(UuidAuditedModel):
88
"""
99
Instance of a push used to trigger an application build
1010
"""
11-
owner = models.ForeignKey(settings.AUTH_USER_MODEL)
12-
app = models.ForeignKey('App')
11+
owner = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.PROTECT)
12+
app = models.ForeignKey('App', on_delete=models.CASCADE)
1313
sha = models.CharField(max_length=40)
1414

1515
fingerprint = models.CharField(max_length=255)

rootfs/api/models/release.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,13 @@ class Release(UuidAuditedModel):
1818
Releases contain a :class:`Build` and a :class:`Config`.
1919
"""
2020

21-
owner = models.ForeignKey(settings.AUTH_USER_MODEL)
22-
app = models.ForeignKey('App')
21+
owner = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.PROTECT)
22+
app = models.ForeignKey('App', on_delete=models.CASCADE)
2323
version = models.PositiveIntegerField()
2424
summary = models.TextField(blank=True, null=True)
2525

26-
config = models.ForeignKey('Config')
27-
build = models.ForeignKey('Build', null=True)
26+
config = models.ForeignKey('Config', on_delete=models.CASCADE)
27+
build = models.ForeignKey('Build', null=True, on_delete=models.CASCADE)
2828

2929
class Meta:
3030
get_latest_by = 'created'

0 commit comments

Comments
 (0)