diff --git a/AKModel/migrations/0068_aktype_slug.py b/AKModel/migrations/0068_aktype_slug.py new file mode 100644 index 0000000000000000000000000000000000000000..c0b66dbe671c580fe2463e6daa469afdecb921e4 --- /dev/null +++ b/AKModel/migrations/0068_aktype_slug.py @@ -0,0 +1,43 @@ +# Generated by Django 5.1.6 on 2025-05-11 15:21 + +from django.db import migrations, models + + +def create_slugs(apps, schema_editor): + """ + Automatically generate slugs from existing type names + """ + AKType = apps.get_model("AKModel", "AKType") + for ak_type in AKType.objects.all(): + slug = ak_type.name.lower().split(" ")[0] + ak_type.slug = slug[:30] if len(slug) > 30 else slug + ak_type.save() + + +class Migration(migrations.Migration): + + dependencies = [ + ('AKModel', '0067_eventparticipant_requirements_and_more'), + ] + + operations = [ + migrations.AddField( + model_name='aktype', + name='slug', + field=models.SlugField(max_length=30, null=True, verbose_name='Slug'), + ), + migrations.RunPython(create_slugs, migrations.RunPython.noop), + migrations.AlterUniqueTogether( + name='aktype', + unique_together={('event', 'name')}, + ), + migrations.AlterField( + model_name='aktype', + name='slug', + field=models.SlugField(max_length=30, verbose_name='Slug'), + ), + migrations.AlterUniqueTogether( + name='aktype', + unique_together={('event', 'name'), ('event', 'slug')}, + ), + ] diff --git a/AKModel/models.py b/AKModel/models.py index 02160ec4a5024a2a76844ef30d63c80446f82b00..ce33bc0b31b5b15cc7dd8c81c2e5516a8dc64968 100644 --- a/AKModel/models.py +++ b/AKModel/models.py @@ -859,7 +859,7 @@ class AKType(models.Model): or to which group of people it is addressed. Types are specified per event and are an optional feature. """ name = models.CharField(max_length=128, verbose_name=_('Name'), help_text=_('Name describing the type')) - + slug = models.SlugField(max_length=30, blank=False, verbose_name=_('Slug'),) event = models.ForeignKey(to=Event, on_delete=models.CASCADE, verbose_name=_('Event'), help_text=_('Associated event')) @@ -867,7 +867,7 @@ class AKType(models.Model): verbose_name = _('AK Type') verbose_name_plural = _('AK Types') ordering = ['name'] - unique_together = ['event', 'name'] + unique_together = [['event', 'name'], ['event', 'slug']] def __str__(self): return self.name