From 533fed2bec5de5bee35e349721ccb436712ebd25 Mon Sep 17 00:00:00 2001 From: Eduardo Silva Date: Mon, 9 Feb 2026 20:36:30 -0300 Subject: [PATCH] Add api_v2 app with ApiKey model and initial migration --- api_v2/__init__.py | 0 api_v2/admin.py | 1 + api_v2/apps.py | 6 ++++++ api_v2/migrations/0001_initial.py | 33 +++++++++++++++++++++++++++++++ api_v2/migrations/__init__.py | 0 api_v2/models.py | 21 ++++++++++++++++++++ api_v2/tests.py | 1 + api_v2/views.py | 1 + wireguard_webadmin/settings.py | 3 ++- 9 files changed, 65 insertions(+), 1 deletion(-) create mode 100644 api_v2/__init__.py create mode 100644 api_v2/admin.py create mode 100644 api_v2/apps.py create mode 100644 api_v2/migrations/0001_initial.py create mode 100644 api_v2/migrations/__init__.py create mode 100644 api_v2/models.py create mode 100644 api_v2/tests.py create mode 100644 api_v2/views.py diff --git a/api_v2/__init__.py b/api_v2/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/api_v2/admin.py b/api_v2/admin.py new file mode 100644 index 0000000..846f6b4 --- /dev/null +++ b/api_v2/admin.py @@ -0,0 +1 @@ +# Register your models here. diff --git a/api_v2/apps.py b/api_v2/apps.py new file mode 100644 index 0000000..ca7483a --- /dev/null +++ b/api_v2/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class ApiV2Config(AppConfig): + default_auto_field = 'django.db.models.BigAutoField' + name = 'api_v2' diff --git a/api_v2/migrations/0001_initial.py b/api_v2/migrations/0001_initial.py new file mode 100644 index 0000000..20f35a7 --- /dev/null +++ b/api_v2/migrations/0001_initial.py @@ -0,0 +1,33 @@ +# Generated by Django 5.2.11 on 2026-02-09 23:31 + +import uuid + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ('wireguard', '0032_remove_peer_enabled_by_schedule'), + ] + + operations = [ + migrations.CreateModel( + name='ApiKey', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=64, unique=True)), + ('token', models.UUIDField(default=uuid.uuid4, unique=True)), + ('allow_restart', models.BooleanField(default=True)), + ('allow_reload', models.BooleanField(default=True)), + ('allow_export', models.BooleanField(default=True)), + ('enabled', models.BooleanField(default=True)), + ('uuid', models.UUIDField(default=uuid.uuid4, editable=False, unique=True)), + ('created', models.DateTimeField(auto_now_add=True)), + ('updated', models.DateTimeField(auto_now=True)), + ('allowed_instances', models.ManyToManyField(blank=True, related_name='api_keys', to='wireguard.wireguardinstance')), + ], + ), + ] diff --git a/api_v2/migrations/__init__.py b/api_v2/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/api_v2/models.py b/api_v2/models.py new file mode 100644 index 0000000..b32b107 --- /dev/null +++ b/api_v2/models.py @@ -0,0 +1,21 @@ +import uuid + +from django.db import models + +from wireguard.models import WireGuardInstance + + +class ApiKey(models.Model): + name = models.CharField(max_length=64, unique=True) + token = models.UUIDField(default=uuid.uuid4, unique=True) + allowed_instances = models.ManyToManyField(WireGuardInstance, blank=True, related_name='api_keys') + allow_restart = models.BooleanField(default=True) + allow_reload = models.BooleanField(default=True) + allow_export = models.BooleanField(default=True) + enabled = models.BooleanField(default=True) + + uuid = models.UUIDField(default=uuid.uuid4, editable=False, unique=True) + created = models.DateTimeField(auto_now_add=True) + updated = models.DateTimeField(auto_now=True) + def __str__(self): + return self.name \ No newline at end of file diff --git a/api_v2/tests.py b/api_v2/tests.py new file mode 100644 index 0000000..a39b155 --- /dev/null +++ b/api_v2/tests.py @@ -0,0 +1 @@ +# Create your tests here. diff --git a/api_v2/views.py b/api_v2/views.py new file mode 100644 index 0000000..60f00ef --- /dev/null +++ b/api_v2/views.py @@ -0,0 +1 @@ +# Create your views here. diff --git a/wireguard_webadmin/settings.py b/wireguard_webadmin/settings.py index 1f3983d..6cd04a1 100644 --- a/wireguard_webadmin/settings.py +++ b/wireguard_webadmin/settings.py @@ -49,7 +49,8 @@ INSTALLED_APPS = [ 'cluster', 'api', 'routing_templates', - 'scheduler.apps.SchedulerConfig' + 'scheduler.apps.SchedulerConfig', + 'api_v2' ] MIDDLEWARE = [