Skip to content

Commit 9b40734

Browse files
committed
fix(controller): app_settings boolean field cannot be set correctly
1 parent 849dd60 commit 9b40734

4 files changed

Lines changed: 47 additions & 4 deletions

File tree

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# Generated by Django 4.2.15 on 2024-09-24 09:01
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
('api', '0014_alter_certificate_app'),
10+
]
11+
12+
operations = [
13+
migrations.AlterField(
14+
model_name='appsettings',
15+
name='autodeploy',
16+
field=models.BooleanField(default=None),
17+
),
18+
migrations.AlterField(
19+
model_name='appsettings',
20+
name='autorollback',
21+
field=models.BooleanField(default=None),
22+
),
23+
migrations.AlterField(
24+
model_name='appsettings',
25+
name='routable',
26+
field=models.BooleanField(default=None),
27+
),
28+
]

rootfs/api/models/app.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,8 @@ def create(self, *args, **kwargs): # noqa
204204
try:
205205
self.appsettings_set.latest()
206206
except AppSettings.DoesNotExist:
207-
AppSettings.objects.create(owner=self.owner, app=self)
207+
AppSettings.objects.create(
208+
owner=self.owner, app=self, routable=True, autodeploy=True, autorollback=True)
208209
try:
209210
self.tls_set.latest()
210211
except TLS.DoesNotExist:

rootfs/api/models/appsettings.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,9 @@ class AppSettings(UuidAuditedModel):
1919

2020
owner = models.ForeignKey(User, on_delete=models.PROTECT)
2121
app = models.ForeignKey('App', on_delete=models.CASCADE)
22-
routable = models.BooleanField(default=True)
23-
autodeploy = models.BooleanField(default=True)
24-
autorollback = models.BooleanField(default=True)
22+
routable = models.BooleanField(default=None)
23+
autodeploy = models.BooleanField(default=None)
24+
autorollback = models.BooleanField(default=None)
2525
autoscale = models.JSONField(default=dict, blank=True)
2626
label = models.JSONField(default=dict, blank=True)
2727

@@ -70,6 +70,8 @@ def _update_field(self, field, previous_settings):
7070
# if nothing changed copy the settings from previous
7171
if new is None and old is not None:
7272
setattr(self, field, old)
73+
elif new is None and isinstance(self._meta.get_field(field), models.BooleanField):
74+
setattr(self, field, True)
7375
elif old != new:
7476
self.summary += ["{} changed {} from {} to {}".format(self.owner, field, old, new)]
7577

rootfs/api/tests/test_app_settings.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,13 +32,17 @@ def test_settings_routable(self, mock_requests):
3232
app_id = self.create_app()
3333
app = App.objects.get(id=app_id)
3434
self.assertTrue(app.appsettings_set.latest().routable)
35+
self.assertTrue(app.appsettings_set.latest().autodeploy)
36+
self.assertTrue(app.appsettings_set.latest().autorollback)
3537
# Set routable to false
3638
response = self.client.post(
3739
f'/v2/apps/{app.id}/settings',
3840
{'routable': False}
3941
)
4042
self.assertEqual(response.status_code, 201, response.data)
4143
self.assertFalse(app.appsettings_set.latest().routable)
44+
self.assertTrue(app.appsettings_set.latest().autodeploy)
45+
self.assertTrue(app.appsettings_set.latest().autorollback)
4246

4347
def test_settings_autodeploy(self, mock_requests):
4448
"""
@@ -47,14 +51,18 @@ def test_settings_autodeploy(self, mock_requests):
4751
# create app, expecting autodeploy to be true
4852
app_id = self.create_app()
4953
app = App.objects.get(id=app_id)
54+
self.assertTrue(app.appsettings_set.latest().routable)
5055
self.assertTrue(app.appsettings_set.latest().autodeploy)
56+
self.assertTrue(app.appsettings_set.latest().autorollback)
5157
# Set autodeploy to false
5258
response = self.client.post(
5359
f'/v2/apps/{app.id}/settings',
5460
{'autodeploy': False}
5561
)
5662
self.assertEqual(response.status_code, 201, response.data)
5763
self.assertFalse(app.appsettings_set.latest().autodeploy)
64+
self.assertTrue(app.appsettings_set.latest().routable)
65+
self.assertTrue(app.appsettings_set.latest().autorollback)
5866

5967
def test_settings_autorollback(self, mock_requests):
6068
"""
@@ -63,6 +71,8 @@ def test_settings_autorollback(self, mock_requests):
6371
# create app, expecting autorollback to be true
6472
app_id = self.create_app()
6573
app = App.objects.get(id=app_id)
74+
self.assertTrue(app.appsettings_set.latest().routable)
75+
self.assertTrue(app.appsettings_set.latest().autodeploy)
6676
self.assertTrue(app.appsettings_set.latest().autorollback)
6777
# Set autorollback to false
6878
response = self.client.post(
@@ -71,6 +81,8 @@ def test_settings_autorollback(self, mock_requests):
7181
)
7282
self.assertEqual(response.status_code, 201, response.data)
7383
self.assertFalse(app.appsettings_set.latest().autorollback)
84+
self.assertTrue(app.appsettings_set.latest().routable)
85+
self.assertTrue(app.appsettings_set.latest().autodeploy)
7486

7587
def test_autoscale(self, mock_requests):
7688
"""

0 commit comments

Comments
 (0)