From 1b4057bfb538da799a63dede7b7a7b72a1f5342e Mon Sep 17 00:00:00 2001
From: Julian Leucker <leuckerj@gmail.com>
Date: Mon, 26 Jul 2021 17:07:26 +0200
Subject: [PATCH] Fix bugs regarding profile creation

---
 .../abi/migrations/0002_additionalprofilefield.py     |  4 +++-
 aleksis/apps/abi/model_extensions.py                  | 11 ++++++++---
 aleksis/apps/abi/models.py                            |  5 ++++-
 3 files changed, 15 insertions(+), 5 deletions(-)

diff --git a/aleksis/apps/abi/migrations/0002_additionalprofilefield.py b/aleksis/apps/abi/migrations/0002_additionalprofilefield.py
index 0ed991e..3b69960 100644
--- a/aleksis/apps/abi/migrations/0002_additionalprofilefield.py
+++ b/aleksis/apps/abi/migrations/0002_additionalprofilefield.py
@@ -1,8 +1,9 @@
-# Generated by Django 3.2.4 on 2021-07-26 14:01
+# Generated by Django 3.2.4 on 2021-07-26 14:54
 
 import django.contrib.sites.managers
 from django.db import migrations, models
 import django.db.models.deletion
+import uuid
 
 
 class Migration(migrations.Migration):
@@ -19,6 +20,7 @@ class Migration(migrations.Migration):
                 ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                 ('extended_data', models.JSONField(default=dict, editable=False)),
                 ('name', models.CharField(max_length=255)),
+                ('field_name_field', models.UUIDField(default=uuid.UUID('5d46e4fa-2ae8-4565-a4ee-3a78272bae3e', editable=False)),
                 ('site', models.ForeignKey(default=1, editable=False, on_delete=django.db.models.deletion.CASCADE, to='sites.site')),
             ],
             options={
diff --git a/aleksis/apps/abi/model_extensions.py b/aleksis/apps/abi/model_extensions.py
index e260c6f..c34c5af 100644
--- a/aleksis/apps/abi/model_extensions.py
+++ b/aleksis/apps/abi/model_extensions.py
@@ -1,3 +1,5 @@
+from django.db.utils import ProgrammingError
+
 from jsonstore import fields
 
 from .models import AdditionalProfileField, Profile
@@ -5,8 +7,11 @@ from .models import AdditionalProfileField, Profile
 def update_profile_fields():
     for obj in AdditionalProfileField.objects.all():
         try:
-            Profile.field(**{object.field_name: fields.CharField(max_length=255, verbose_name=object.name)})
+            Profile.field(**{obj.field_name: fields.CharField(max_length=255, verbose_name=obj.name)})
+            Profile.fields[obj.field_name] = obj.name
         except ValueError:
             pass
-
-update_profile_fields()
+try:
+    update_profile_fields()
+except ProgrammingError:
+    pass
diff --git a/aleksis/apps/abi/models.py b/aleksis/apps/abi/models.py
index cbb8caf..fe2b613 100644
--- a/aleksis/apps/abi/models.py
+++ b/aleksis/apps/abi/models.py
@@ -1,7 +1,9 @@
 from django.db import models
+from django.utils.text import slugify
 from django.utils.translation import gettext as _
 
 from jsonstore import fields
+import uuid
 
 from aleksis.core.mixins import ExtensibleModel
 from aleksis.core.models import Person
@@ -39,6 +41,7 @@ class AbiGroup(ExtensibleModel):
 
 
 class Profile(ExtensibleModel):
+    fields = {}
     person = models.OneToOneField(
         to=AbiPerson, on_delete=models.CASCADE, verbose_name=_("Person"), related_name="profile"
     )
@@ -56,7 +59,7 @@ class Profile(ExtensibleModel):
 
 class AdditionalProfileField(ExtensibleModel):
     name = models.CharField(max_length=255)
-    field_name_field = models.UUIDField(editable=False)
+    field_name_field = models.UUIDField(editable=False, default=uuid.uuid4())
 
     @property
     def field_name(self):
-- 
GitLab