From 99d7b23dc960217dff11701d56ebb5a77046511e Mon Sep 17 00:00:00 2001 From: Sabrina Demagny Date: Thu, 10 Apr 2025 09:11:56 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B(core)=20fix=20AccountService=20api?= =?UTF-8?q?=5Fkey=20field=20declaration?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Override save is a better way to auto generate api_key if it is not set. Default with random secret generate a new migration each time we run `make makemigrations`. --- .../0015_alter_accountservice_api_key.py | 18 ++++++++++++++++++ src/backend/core/models.py | 9 ++++++++- 2 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 src/backend/core/migrations/0015_alter_accountservice_api_key.py diff --git a/src/backend/core/migrations/0015_alter_accountservice_api_key.py b/src/backend/core/migrations/0015_alter_accountservice_api_key.py new file mode 100644 index 0000000..3c7997e --- /dev/null +++ b/src/backend/core/migrations/0015_alter_accountservice_api_key.py @@ -0,0 +1,18 @@ +# Generated by Django 5.1.8 on 2025-04-10 07:19 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('core', '0014_accountservice'), + ] + + operations = [ + migrations.AlterField( + model_name='accountservice', + name='api_key', + field=models.CharField(max_length=255, verbose_name='api key'), + ), + ] diff --git a/src/backend/core/models.py b/src/backend/core/models.py index 377c380..d89fc95 100644 --- a/src/backend/core/models.py +++ b/src/backend/core/models.py @@ -1107,7 +1107,6 @@ class AccountService(BaseModel): api_key = models.CharField( _("api key"), max_length=255, - default=secrets.token_urlsafe(32), ) scopes = ArrayField( models.CharField(max_length=255, validators=[validate_account_service_scope]), @@ -1123,6 +1122,14 @@ class AccountService(BaseModel): def __str__(self): return self.name + def save(self, *args, **kwargs): + """ + Override save method to generate a new api_key if it is not set. + """ + if not self.api_key: + self.api_key = secrets.token_urlsafe(32) + return super().save(*args, **kwargs) + @property def is_authenticated(self): """Indicate if the account service is authenticated."""