Merge branch 'master' of https://git.fet.at/bofh/fet2020
This commit is contained in:
@@ -26,4 +26,4 @@ def add_log_action(request, form, app_label, model, add=True):
|
|||||||
)
|
)
|
||||||
|
|
||||||
def create_random_id():
|
def create_random_id():
|
||||||
return str(uuid.uuid4())[:36]
|
return str(uuid.uuid4())[:8]
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# Generated by Django 4.0.6 on 2022-07-30 22:34
|
# Generated by Django 4.1.2 on 2022-12-21 11:42
|
||||||
|
|
||||||
import datetime
|
import datetime
|
||||||
from django.db import migrations, models
|
from django.db import migrations, models
|
||||||
@@ -11,106 +11,219 @@ class Migration(migrations.Migration):
|
|||||||
initial = True
|
initial = True
|
||||||
|
|
||||||
dependencies = [
|
dependencies = [
|
||||||
('tasks', '0002_alter_task_options_task_slug_task_slug_id_and_more'),
|
("tasks", "0004_set_fields_unique"),
|
||||||
]
|
]
|
||||||
|
|
||||||
operations = [
|
operations = [
|
||||||
migrations.CreateModel(
|
migrations.CreateModel(
|
||||||
name='Attachment',
|
name="Attachment",
|
||||||
fields=[
|
fields=[
|
||||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
(
|
||||||
('title', models.CharField(max_length=128, verbose_name='Titel')),
|
"id",
|
||||||
('slug', models.SlugField()),
|
models.AutoField(
|
||||||
('description', models.TextField(blank=True, null=True)),
|
auto_created=True,
|
||||||
|
primary_key=True,
|
||||||
|
serialize=False,
|
||||||
|
verbose_name="ID",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
("title", models.CharField(max_length=128, verbose_name="Titel")),
|
||||||
|
("slug", models.SlugField()),
|
||||||
|
("description", models.TextField(blank=True, null=True)),
|
||||||
],
|
],
|
||||||
options={
|
options={
|
||||||
'verbose_name': 'Anhang Ordner',
|
"verbose_name": "Anhang Ordner",
|
||||||
'verbose_name_plural': 'Anhang Ordner',
|
"verbose_name_plural": "Anhang Ordner",
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
migrations.CreateModel(
|
migrations.CreateModel(
|
||||||
name='TopicGroup',
|
name="TopicGroup",
|
||||||
fields=[
|
fields=[
|
||||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
(
|
||||||
('title', models.CharField(max_length=128, verbose_name='Titel')),
|
"id",
|
||||||
('shortterm', models.CharField(blank=True, max_length=128, unique=True)),
|
models.AutoField(
|
||||||
('slug', models.SlugField(unique=True)),
|
auto_created=True,
|
||||||
('short_description', models.TextField(blank=True, null=True)),
|
primary_key=True,
|
||||||
('order', models.PositiveSmallIntegerField(blank=True, null=True, unique=True, verbose_name='Reihenfolge')),
|
serialize=False,
|
||||||
|
verbose_name="ID",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
("title", models.CharField(max_length=128, verbose_name="Titel")),
|
||||||
|
(
|
||||||
|
"shortterm",
|
||||||
|
models.CharField(blank=True, max_length=128, unique=True),
|
||||||
|
),
|
||||||
|
("slug", models.SlugField(unique=True)),
|
||||||
|
("short_description", models.TextField(blank=True, null=True)),
|
||||||
|
(
|
||||||
|
"order",
|
||||||
|
models.PositiveSmallIntegerField(
|
||||||
|
blank=True, null=True, unique=True, verbose_name="Reihenfolge"
|
||||||
|
),
|
||||||
|
),
|
||||||
],
|
],
|
||||||
options={
|
options={
|
||||||
'verbose_name': 'Themenbereich',
|
"verbose_name": "Themenbereich",
|
||||||
'verbose_name_plural': 'Themenbereiche',
|
"verbose_name_plural": "Themenbereiche",
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
migrations.CreateModel(
|
migrations.CreateModel(
|
||||||
name='Topic',
|
name="Topic",
|
||||||
fields=[
|
fields=[
|
||||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
(
|
||||||
('title', models.CharField(max_length=128, verbose_name='Titel')),
|
"id",
|
||||||
('slug', models.SlugField()),
|
models.AutoField(
|
||||||
('archive', models.BooleanField(default=False, verbose_name='Archiv')),
|
auto_created=True,
|
||||||
('description', models.TextField(blank=True, null=True)),
|
primary_key=True,
|
||||||
('task_list', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='tasks.tasklist')),
|
serialize=False,
|
||||||
('topic_group', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='intern.topicgroup', verbose_name='Themenbereich')),
|
verbose_name="ID",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
("title", models.CharField(max_length=128, verbose_name="Titel")),
|
||||||
|
("slug", models.SlugField()),
|
||||||
|
("archive", models.BooleanField(default=False, verbose_name="Archiv")),
|
||||||
|
("description", models.TextField(blank=True, null=True)),
|
||||||
|
(
|
||||||
|
"task_list",
|
||||||
|
models.ForeignKey(
|
||||||
|
blank=True,
|
||||||
|
null=True,
|
||||||
|
on_delete=django.db.models.deletion.CASCADE,
|
||||||
|
to="tasks.tasklist",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
(
|
||||||
|
"topic_group",
|
||||||
|
models.ForeignKey(
|
||||||
|
on_delete=django.db.models.deletion.CASCADE,
|
||||||
|
to="intern.topicgroup",
|
||||||
|
verbose_name="Themenbereich",
|
||||||
|
),
|
||||||
|
),
|
||||||
],
|
],
|
||||||
options={
|
options={
|
||||||
'verbose_name': 'Thema',
|
"verbose_name": "Thema",
|
||||||
'verbose_name_plural': 'Themen',
|
"verbose_name_plural": "Themen",
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
migrations.CreateModel(
|
migrations.CreateModel(
|
||||||
name='FileUpload',
|
name="FileUpload",
|
||||||
fields=[
|
fields=[
|
||||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
(
|
||||||
('title', models.CharField(blank=True, max_length=128, verbose_name='Titel')),
|
"id",
|
||||||
('file_field', models.FileField(upload_to='uploads/intern/files/', verbose_name='Dokument')),
|
models.AutoField(
|
||||||
('date', models.DateField(default=datetime.date.today, verbose_name='Datum')),
|
auto_created=True,
|
||||||
('attachment', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='intern.attachment', verbose_name='Anhang Ordner')),
|
primary_key=True,
|
||||||
|
serialize=False,
|
||||||
|
verbose_name="ID",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
(
|
||||||
|
"title",
|
||||||
|
models.CharField(blank=True, max_length=128, verbose_name="Titel"),
|
||||||
|
),
|
||||||
|
(
|
||||||
|
"file_field",
|
||||||
|
models.FileField(
|
||||||
|
upload_to="uploads/intern/files/", verbose_name="Dokument"
|
||||||
|
),
|
||||||
|
),
|
||||||
|
(
|
||||||
|
"date",
|
||||||
|
models.DateField(default=datetime.date.today, verbose_name="Datum"),
|
||||||
|
),
|
||||||
|
(
|
||||||
|
"attachment",
|
||||||
|
models.ForeignKey(
|
||||||
|
on_delete=django.db.models.deletion.CASCADE,
|
||||||
|
to="intern.attachment",
|
||||||
|
verbose_name="Anhang Ordner",
|
||||||
|
),
|
||||||
|
),
|
||||||
],
|
],
|
||||||
options={
|
options={
|
||||||
'verbose_name': 'Datei',
|
"verbose_name": "Datei",
|
||||||
'verbose_name_plural': 'Dateien',
|
"verbose_name_plural": "Dateien",
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
migrations.CreateModel(
|
migrations.CreateModel(
|
||||||
name='Etherpad',
|
name="Etherpad",
|
||||||
fields=[
|
fields=[
|
||||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
(
|
||||||
('title', models.CharField(max_length=128, verbose_name='Titel')),
|
"id",
|
||||||
('slug_id', models.CharField(default=fet2020.utils.create_random_id, editable=False, max_length=8, unique=True)),
|
models.AutoField(
|
||||||
('etherpad_key', models.CharField(blank=True, max_length=50)),
|
auto_created=True,
|
||||||
('date', models.DateField(default=datetime.date.today, verbose_name='Datum')),
|
primary_key=True,
|
||||||
('attachment', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='intern.attachment', verbose_name='Anhang Ordner')),
|
serialize=False,
|
||||||
|
verbose_name="ID",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
("title", models.CharField(max_length=128, verbose_name="Titel")),
|
||||||
|
(
|
||||||
|
"slug_id",
|
||||||
|
models.CharField(
|
||||||
|
default=fet2020.utils.create_random_id,
|
||||||
|
editable=False,
|
||||||
|
max_length=8,
|
||||||
|
unique=True,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
("etherpad_key", models.CharField(blank=True, max_length=50)),
|
||||||
|
(
|
||||||
|
"date",
|
||||||
|
models.DateField(default=datetime.date.today, verbose_name="Datum"),
|
||||||
|
),
|
||||||
|
(
|
||||||
|
"attachment",
|
||||||
|
models.ForeignKey(
|
||||||
|
on_delete=django.db.models.deletion.CASCADE,
|
||||||
|
to="intern.attachment",
|
||||||
|
verbose_name="Anhang Ordner",
|
||||||
|
),
|
||||||
|
),
|
||||||
],
|
],
|
||||||
options={
|
options={
|
||||||
'verbose_name': 'Etherpad',
|
"verbose_name": "Etherpad",
|
||||||
'verbose_name_plural': 'Etherpads',
|
"verbose_name_plural": "Etherpads",
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
migrations.AddField(
|
migrations.AddField(
|
||||||
model_name='attachment',
|
model_name="attachment",
|
||||||
name='topic',
|
name="topic",
|
||||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='intern.topic', verbose_name='Thema'),
|
field=models.ForeignKey(
|
||||||
|
on_delete=django.db.models.deletion.CASCADE,
|
||||||
|
to="intern.topic",
|
||||||
|
verbose_name="Thema",
|
||||||
|
),
|
||||||
),
|
),
|
||||||
migrations.AddConstraint(
|
migrations.AddConstraint(
|
||||||
model_name='topic',
|
model_name="topic",
|
||||||
constraint=models.UniqueConstraint(fields=('slug', 'topic_group'), name='unique_intern_slug_topic_group'),
|
constraint=models.UniqueConstraint(
|
||||||
|
fields=("slug", "topic_group"), name="unique_intern_slug_topic_group"
|
||||||
|
),
|
||||||
),
|
),
|
||||||
migrations.AddConstraint(
|
migrations.AddConstraint(
|
||||||
model_name='topic',
|
model_name="topic",
|
||||||
constraint=models.UniqueConstraint(fields=('title', 'topic_group'), name='unique_intern_title_topic_group'),
|
constraint=models.UniqueConstraint(
|
||||||
|
fields=("title", "topic_group"), name="unique_intern_title_topic_group"
|
||||||
|
),
|
||||||
),
|
),
|
||||||
migrations.AddConstraint(
|
migrations.AddConstraint(
|
||||||
model_name='etherpad',
|
model_name="etherpad",
|
||||||
constraint=models.UniqueConstraint(fields=('title', 'date', 'attachment'), name='unique_intern_etherpad'),
|
constraint=models.UniqueConstraint(
|
||||||
|
fields=("title", "date", "attachment"), name="unique_intern_etherpad"
|
||||||
|
),
|
||||||
),
|
),
|
||||||
migrations.AddConstraint(
|
migrations.AddConstraint(
|
||||||
model_name='attachment',
|
model_name="attachment",
|
||||||
constraint=models.UniqueConstraint(fields=('slug', 'topic'), name='unique_intern_slug_topic'),
|
constraint=models.UniqueConstraint(
|
||||||
|
fields=("slug", "topic"), name="unique_intern_slug_topic"
|
||||||
|
),
|
||||||
),
|
),
|
||||||
migrations.AddConstraint(
|
migrations.AddConstraint(
|
||||||
model_name='attachment',
|
model_name="attachment",
|
||||||
constraint=models.UniqueConstraint(fields=('title', 'topic'), name='unique_intern_title_topic'),
|
constraint=models.UniqueConstraint(
|
||||||
|
fields=("title", "topic"), name="unique_intern_title_topic"
|
||||||
|
),
|
||||||
),
|
),
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -1,117 +1,103 @@
|
|||||||
# Generated by Django 4.0.6 on 2022-07-30 10:47
|
# Generated by Django 4.1.2 on 2022-12-21 11:42
|
||||||
|
|
||||||
import datetime
|
import datetime
|
||||||
import logging
|
|
||||||
|
|
||||||
import fet2020.utils
|
|
||||||
import uuid
|
|
||||||
from django.db import migrations, models
|
from django.db import migrations, models
|
||||||
import django.db.models.deletion
|
import django.db.models.deletion
|
||||||
import django.db.models.expressions
|
import fet2020.utils
|
||||||
from django.utils.text import slugify
|
|
||||||
import time
|
|
||||||
logger = logging.getLogger(__name__)
|
|
||||||
|
|
||||||
|
|
||||||
def forwards_func(apps, schema_editor):
|
|
||||||
Tasks = apps.get_model("tasks", "Task")
|
|
||||||
past_ids=[]
|
|
||||||
for elem in Tasks.objects.all():
|
|
||||||
for i in range(4):
|
|
||||||
sid = fet2020.utils.create_random_id()
|
|
||||||
if not sid in past_ids: break
|
|
||||||
time.sleep(0.1)
|
|
||||||
elem.slug_id = sid
|
|
||||||
elem.slug = elem.slug_id + "-" + slugify(elem.title)
|
|
||||||
past_ids.append(sid)
|
|
||||||
|
|
||||||
logger.info(f"Task: {elem}")
|
|
||||||
logger.info(f"Slug ID: {elem.slug_id}")
|
|
||||||
logger.info(f"Slug: {elem.slug}")
|
|
||||||
|
|
||||||
elem.save()
|
|
||||||
|
|
||||||
TaskLists = apps.get_model("tasks", "TaskList")
|
|
||||||
for elem in TaskLists.objects.all():
|
|
||||||
elem.shortterm = slugify(elem.name)
|
|
||||||
elem.slug = slugify(elem.shortterm)
|
|
||||||
elem.save()
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
dependencies = [
|
dependencies = [
|
||||||
('tasks', '0001_initial'),
|
("tasks", "0001_initial"),
|
||||||
]
|
]
|
||||||
|
|
||||||
operations = [
|
operations = [
|
||||||
migrations.AlterModelOptions(
|
migrations.AlterModelOptions(
|
||||||
name='task',
|
name="task",
|
||||||
options={'ordering': ('task_list', django.db.models.expressions.OrderBy(django.db.models.expressions.F('due_date'), descending=True, nulls_first=True)), 'verbose_name': 'Aufgabe', 'verbose_name_plural': 'Aufgaben'},
|
|
||||||
),
|
|
||||||
# remove unique=True to set value, and then set option unique=True
|
|
||||||
migrations.AddField(
|
|
||||||
model_name='task',
|
|
||||||
name='slug',
|
|
||||||
field=models.SlugField(blank=True),
|
|
||||||
),
|
|
||||||
# remove unique=True to set value, and then set option unique=True
|
|
||||||
migrations.AddField(
|
|
||||||
model_name='task',
|
|
||||||
name='slug_id',
|
|
||||||
field=models.CharField(default=fet2020.utils.create_random_id, editable=False, max_length=36),
|
|
||||||
),
|
|
||||||
# remove unique=True to set value, and then set option unique=True
|
|
||||||
migrations.AddField(
|
|
||||||
model_name='tasklist',
|
|
||||||
name='shortterm',
|
|
||||||
field=models.CharField(blank=True, max_length=128),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='task',
|
|
||||||
name='title',
|
|
||||||
field=models.CharField(max_length=128, verbose_name='Titel'),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='tasklist',
|
|
||||||
name='name',
|
|
||||||
field=models.CharField(max_length=128),
|
|
||||||
),
|
|
||||||
migrations.CreateModel(
|
|
||||||
name='Document',
|
|
||||||
fields=[
|
|
||||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
||||||
('title', models.CharField(max_length=128, verbose_name='Titel')),
|
|
||||||
('slug_id', models.CharField(default=fet2020.utils.create_random_id, editable=False, max_length=8, unique=True)),
|
|
||||||
('etherpad_key', models.CharField(blank=True, max_length=50)),
|
|
||||||
('date', models.DateField(default=datetime.date.today, verbose_name='Datum')),
|
|
||||||
('task', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='tasks.task')),
|
|
||||||
],
|
|
||||||
options={
|
options={
|
||||||
'verbose_name': 'Dokument',
|
"ordering": (
|
||||||
'verbose_name_plural': 'Dokumente',
|
"task_list",
|
||||||
|
models.OrderBy(
|
||||||
|
models.F("due_date"), descending=True, nulls_first=True
|
||||||
|
),
|
||||||
|
),
|
||||||
|
"verbose_name": "Aufgabe",
|
||||||
|
"verbose_name_plural": "Aufgaben",
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
migrations.RunPython(forwards_func),
|
migrations.AddField(
|
||||||
# unique=True after setting value
|
model_name="task",
|
||||||
migrations.AlterField(
|
name="slug",
|
||||||
model_name='task',
|
field=models.SlugField(blank=True, null=True),
|
||||||
name='slug',
|
),
|
||||||
field=models.SlugField(blank=True, unique=True),
|
migrations.AddField(
|
||||||
|
model_name="task",
|
||||||
|
name="slug_id",
|
||||||
|
field=models.CharField(
|
||||||
|
default=fet2020.utils.create_random_id,
|
||||||
|
editable=False,
|
||||||
|
max_length=8,
|
||||||
|
null=True,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name="tasklist",
|
||||||
|
name="shortterm",
|
||||||
|
field=models.CharField(blank=True, max_length=128, null=True),
|
||||||
),
|
),
|
||||||
migrations.AlterField(
|
migrations.AlterField(
|
||||||
model_name='task',
|
model_name="task",
|
||||||
name='slug_id',
|
name="title",
|
||||||
field=models.CharField(default=fet2020.utils.create_random_id, editable=False, max_length=36, unique=True),
|
field=models.CharField(max_length=128, verbose_name="Titel"),
|
||||||
),
|
),
|
||||||
migrations.AlterField(
|
migrations.AlterField(
|
||||||
model_name='tasklist',
|
model_name="tasklist",
|
||||||
name='shortterm',
|
name="name",
|
||||||
field=models.CharField(blank=True, max_length=128, unique=True),
|
field=models.CharField(max_length=128),
|
||||||
),
|
),
|
||||||
migrations.AlterField(
|
migrations.AlterField(
|
||||||
model_name='tasklist',
|
model_name="tasklist",
|
||||||
name='slug',
|
name="slug",
|
||||||
field=models.SlugField(blank=True, unique=True),
|
field=models.SlugField(blank=True, null=True),
|
||||||
|
),
|
||||||
|
migrations.CreateModel(
|
||||||
|
name="Document",
|
||||||
|
fields=[
|
||||||
|
(
|
||||||
|
"id",
|
||||||
|
models.AutoField(
|
||||||
|
auto_created=True,
|
||||||
|
primary_key=True,
|
||||||
|
serialize=False,
|
||||||
|
verbose_name="ID",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
("title", models.CharField(max_length=128, verbose_name="Titel")),
|
||||||
|
(
|
||||||
|
"slug_id",
|
||||||
|
models.CharField(
|
||||||
|
default=fet2020.utils.create_random_id,
|
||||||
|
editable=False,
|
||||||
|
max_length=8,
|
||||||
|
unique=True,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
("etherpad_key", models.CharField(blank=True, max_length=50)),
|
||||||
|
(
|
||||||
|
"date",
|
||||||
|
models.DateField(default=datetime.date.today, verbose_name="Datum"),
|
||||||
|
),
|
||||||
|
(
|
||||||
|
"task",
|
||||||
|
models.ForeignKey(
|
||||||
|
on_delete=django.db.models.deletion.CASCADE, to="tasks.task"
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
options={
|
||||||
|
"verbose_name": "Dokument",
|
||||||
|
"verbose_name_plural": "Dokumente",
|
||||||
|
},
|
||||||
),
|
),
|
||||||
]
|
]
|
||||||
|
|||||||
29
fet2020/tasks/migrations/0003_populate_unique_values.py
Normal file
29
fet2020/tasks/migrations/0003_populate_unique_values.py
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
# Generated by Django 4.1.2 on 2022-12-21 11:43
|
||||||
|
|
||||||
|
from django.db import migrations
|
||||||
|
import fet2020.utils
|
||||||
|
|
||||||
|
|
||||||
|
def forwards_func(apps, schema_editor):
|
||||||
|
Tasks = apps.get_model("tasks", "Task")
|
||||||
|
for elem in Tasks.objects.all():
|
||||||
|
elem.slug_id = fet2020.utils.create_random_id()
|
||||||
|
elem.slug = elem.slug_id + "-" + slugify(elem.title)
|
||||||
|
elem.save(update_fields=["slug_id", "slug"])
|
||||||
|
|
||||||
|
TaskLists = apps.get_model("tasks", "TaskList")
|
||||||
|
for elem in TaskLists.objects.all():
|
||||||
|
elem.shortterm = slugify(elem.name)
|
||||||
|
elem.slug = slugify(elem.shortterm)
|
||||||
|
elem.save(update_fields=["shortterm", "slug"])
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
("tasks", "0002_alter_task_options_task_slug_task_slug_id_and_more"),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.RunPython(forwards_func, reverse_code=migrations.RunPython.noop),
|
||||||
|
]
|
||||||
39
fet2020/tasks/migrations/0004_set_fields_unique.py
Normal file
39
fet2020/tasks/migrations/0004_set_fields_unique.py
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
# Generated by Django 4.1.2 on 2022-12-21 11:43
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
import fet2020.utils
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
("tasks", "0003_populate_unique_values"),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="task",
|
||||||
|
name="slug",
|
||||||
|
field=models.SlugField(blank=True, unique=True),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="task",
|
||||||
|
name="slug_id",
|
||||||
|
field=models.CharField(
|
||||||
|
default=fet2020.utils.create_random_id,
|
||||||
|
editable=False,
|
||||||
|
max_length=8,
|
||||||
|
unique=True,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="tasklist",
|
||||||
|
name="shortterm",
|
||||||
|
field=models.CharField(blank=True, max_length=128, unique=True),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="tasklist",
|
||||||
|
name="slug",
|
||||||
|
field=models.SlugField(blank=True, unique=True),
|
||||||
|
),
|
||||||
|
]
|
||||||
Reference in New Issue
Block a user