diff --git a/aleksis/apps/abi/migrations/0002_additionalprofilefield.py b/aleksis/apps/abi/migrations/0002_additionalprofilefield.py index 0ed991ecd836393a884a2846b7f865767f3d597d..3b699602ce9ada5c3518d4bfa32a252e827294ae 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 e260c6ff923bebdb7c17da392054aacb499fb2e6..c34c5af45ce81036f26402e38c2ebc5af9f97262 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 cbb8caf0738c728d2e0d32fb089e90776d43e11c..fe2b613193a9742d0cb0b0b6f7f5a327eb8e7af2 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):