Skip to content

Commit 0b5add4

Browse files
[fix] Avoided redundant SQL write query during CA/Cert creation #120
Closes #120. Co-authored-by: Federico Capoano <[email protected]>
1 parent 86f33aa commit 0b5add4

File tree

2 files changed

+7
-10
lines changed

2 files changed

+7
-10
lines changed

django_x509/base/models.py

+3-8
Original file line numberDiff line numberDiff line change
@@ -200,17 +200,12 @@ def clean(self):
200200
self._verify_extension_format()
201201

202202
def save(self, *args, **kwargs):
203-
generate = False
204-
if not self.pk and not self.certificate and not self.private_key:
205-
generate = True
206-
super().save(*args, **kwargs)
207-
if generate:
208-
# automatically determine serial number
203+
if self._state.adding and not self.certificate and not self.private_key:
204+
# auto generate serial number
209205
if not self.serial_number:
210206
self.serial_number = self._generate_serial_number()
211207
self._generate()
212-
kwargs['force_insert'] = False
213-
super().save(*args, **kwargs)
208+
super().save(*args, **kwargs)
214209

215210
@cached_property
216211
def x509(self):

django_x509/tests/test_cert.py

+4-2
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
from django.test import TestCase
55
from django.utils import timezone
66
from OpenSSL import crypto
7+
from openwisp_utils.tests import AssertNumQueriesSubTestMixin
78
from swapper import load_model
89

910
from .. import settings as app_settings
@@ -14,7 +15,7 @@
1415
Cert = load_model('django_x509', 'Cert')
1516

1617

17-
class TestCert(TestX509Mixin, TestCase):
18+
class TestCert(AssertNumQueriesSubTestMixin, TestX509Mixin, TestCase):
1819
"""
1920
tests for Cert model
2021
"""
@@ -81,7 +82,8 @@ class TestCert(TestX509Mixin, TestCase):
8182
"""
8283

8384
def test_new(self):
84-
cert = self._create_cert()
85+
with self.assertNumQueries(3):
86+
cert = self._create_cert()
8587
self.assertNotEqual(cert.certificate, '')
8688
self.assertNotEqual(cert.private_key, '')
8789
x509 = cert.x509

0 commit comments

Comments
 (0)