Skip to content
Snippets Groups Projects
Commit b03dda51 authored by Julian's avatar Julian
Browse files

Create extra fields for the profile dynamically

parent 8b275ba9
No related branches found
No related tags found
1 merge request!1Resolve "Implement models"
# Generated by Django 3.2.4 on 2021-07-26 14:01
import django.contrib.sites.managers
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('sites', '0002_alter_domain_unique'),
('abi', '0001_initial'),
]
operations = [
migrations.CreateModel(
name='AdditionalProfileField',
fields=[
('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)),
('site', models.ForeignKey(default=1, editable=False, on_delete=django.db.models.deletion.CASCADE, to='sites.site')),
],
options={
'abstract': False,
},
managers=[
('objects', django.contrib.sites.managers.CurrentSiteManager()),
],
),
]
from jsonstore import fields
from .models import AdditionalProfileField, Profile
def update_profile_fields():
for object in AdditionalProfileField.objects.all():
try:
Profile.field(**{object.field_name: fields.CharField(max_length=255, verbose_name=object.name)})
except ValueError:
pass
\ No newline at end of file
from django.db import models from django.db import models
from django.utils.text import slugify
from django.utils.translation import gettext as _ from django.utils.translation import gettext as _
from jsonstore import fields
from aleksis.core.mixins import ExtensibleModel from aleksis.core.mixins import ExtensibleModel
from aleksis.core.models import Person from aleksis.core.models import Person
...@@ -52,6 +55,25 @@ class Profile(ExtensibleModel): ...@@ -52,6 +55,25 @@ class Profile(ExtensibleModel):
verbose_name = _("Personal profile") verbose_name = _("Personal profile")
verbose_name_plural = _("Personal profiles") verbose_name_plural = _("Personal profiles")
class AdditionalProfileField(ExtensibleModel):
name = models.CharField(max_length=255, help_text=_("Warning! This field can't be edited after creation!"))
@property
def field_name(self):
return "abi_" + slugify(self.name).replace("-", "_")
def __str__(self):
return self.name
def save(self, *args, **kwargs):
if self.pk is None:
super().save(*args, **kwargs)
from .model_extensions import update_profile_fields # noqa
update_profile_fields()
class RankingCategory(ExtensibleModel): class RankingCategory(ExtensibleModel):
name = models.CharField(max_length=255, verbose_name=_("Name")) name = models.CharField(max_length=255, verbose_name=_("Name"))
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment