From 3d2ddd1e1cb1b1b6f7c1d63519f0d4d4c3da3267 Mon Sep 17 00:00:00 2001
From: "N. Geisler" <ngeisler@fachschaft.informatik.tu-darmstadt.de>
Date: Wed, 16 Oct 2019 21:05:13 +0200
Subject: [PATCH] add slug field to event model

---
 .../migrations/0009_add_event_slug_field.py   | 19 ++++++++++++++++++
 .../0010_populate_event_slug_field.py         | 20 +++++++++++++++++++
 .../0011_remove_null_event_slug_field.py      | 19 ++++++++++++++++++
 AKModel/models.py                             |  3 ++-
 4 files changed, 60 insertions(+), 1 deletion(-)
 create mode 100644 AKModel/migrations/0009_add_event_slug_field.py
 create mode 100644 AKModel/migrations/0010_populate_event_slug_field.py
 create mode 100644 AKModel/migrations/0011_remove_null_event_slug_field.py

diff --git a/AKModel/migrations/0009_add_event_slug_field.py b/AKModel/migrations/0009_add_event_slug_field.py
new file mode 100644
index 00000000..197e88c4
--- /dev/null
+++ b/AKModel/migrations/0009_add_event_slug_field.py
@@ -0,0 +1,19 @@
+# Generated by Django 2.2.6 on 2019-10-16 18:41
+
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+    dependencies = [
+        ('AKModel', '0008_akmodel_reuired_attributes'),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name='event',
+            name='slug',
+            field=models.SlugField(help_text='Short name of letters/numbers/dots/dashes/underscores used in URLs.',
+                                   max_length=32, null=True, verbose_name='Short Form'),
+        ),
+    ]
diff --git a/AKModel/migrations/0010_populate_event_slug_field.py b/AKModel/migrations/0010_populate_event_slug_field.py
new file mode 100644
index 00000000..e7972197
--- /dev/null
+++ b/AKModel/migrations/0010_populate_event_slug_field.py
@@ -0,0 +1,20 @@
+# Generated by Django 2.2.6 on 2019-10-16 18:41
+
+from django.db import migrations
+
+
+def gen_slug(apps, schema_editor):
+    event = apps.get_model('AKModel', 'Event')
+    for row in event.objects.all():
+        row.slug = ''.join(filter(str.isalnum, row.name.lower()))
+        row.save(update_fields=['slug'])
+
+
+class Migration(migrations.Migration):
+    dependencies = [
+        ('AKModel', '0009_add_event_slug_field'),
+    ]
+
+    operations = [
+        migrations.RunPython(gen_slug, reverse_code=migrations.RunPython.noop)
+    ]
diff --git a/AKModel/migrations/0011_remove_null_event_slug_field.py b/AKModel/migrations/0011_remove_null_event_slug_field.py
new file mode 100644
index 00000000..ab01b675
--- /dev/null
+++ b/AKModel/migrations/0011_remove_null_event_slug_field.py
@@ -0,0 +1,19 @@
+# Generated by Django 2.2.6 on 2019-10-16 18:42
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+    dependencies = [
+        ('AKModel', '0010_populate_event_slug_field'),
+    ]
+
+    operations = [
+        migrations.AlterField(
+            model_name='event',
+            name='slug',
+            field=models.SlugField(help_text='Short name of letters/numbers/dots/dashes/underscores used in URLs.',
+                                   max_length=32, unique=True, verbose_name='Short Form'),
+        ),
+
+    ]
diff --git a/AKModel/models.py b/AKModel/models.py
index 0a3d69dd..90ca93f1 100644
--- a/AKModel/models.py
+++ b/AKModel/models.py
@@ -1,5 +1,4 @@
 # Create your models here.
-
 from django.db import models
 from django.utils.translation import gettext_lazy as _
 
@@ -9,6 +8,8 @@ class Event(models.Model):
     """
     name = models.CharField(max_length=64, unique=True, verbose_name=_('Name'),
                             help_text=_('Name or iteration of the event'))
+    slug = models.SlugField(max_length=32, unique=True, verbose_name=_('Short Form'),
+                            help_text=_('Short name of letters/numbers/dots/dashes/underscores used in URLs.'))
     start = models.DateTimeField(verbose_name=_('Start'), help_text=_('Time the event begins'))
     end = models.DateTimeField(verbose_name=_('End'), help_text=_('Time the event ends'))
     place = models.CharField(max_length=128, blank=True, verbose_name=_('Place'),
-- 
GitLab