This commit is contained in:
2022-12-22 19:12:06 +01:00
5 changed files with 319 additions and 152 deletions

View File

@@ -26,4 +26,4 @@ def add_log_action(request, form, app_label, model, add=True):
)
def create_random_id():
return str(uuid.uuid4())[:36]
return str(uuid.uuid4())[:8]

View File

@@ -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
from django.db import migrations, models
@@ -11,106 +11,219 @@ class Migration(migrations.Migration):
initial = True
dependencies = [
('tasks', '0002_alter_task_options_task_slug_task_slug_id_and_more'),
("tasks", "0004_set_fields_unique"),
]
operations = [
migrations.CreateModel(
name='Attachment',
name="Attachment",
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', models.SlugField()),
('description', models.TextField(blank=True, null=True)),
(
"id",
models.AutoField(
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={
'verbose_name': 'Anhang Ordner',
'verbose_name_plural': 'Anhang Ordner',
"verbose_name": "Anhang Ordner",
"verbose_name_plural": "Anhang Ordner",
},
),
migrations.CreateModel(
name='TopicGroup',
name="TopicGroup",
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, 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')),
(
"id",
models.AutoField(
auto_created=True,
primary_key=True,
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={
'verbose_name': 'Themenbereich',
'verbose_name_plural': 'Themenbereiche',
"verbose_name": "Themenbereich",
"verbose_name_plural": "Themenbereiche",
},
),
migrations.CreateModel(
name='Topic',
name="Topic",
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', 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')),
(
"id",
models.AutoField(
auto_created=True,
primary_key=True,
serialize=False,
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={
'verbose_name': 'Thema',
'verbose_name_plural': 'Themen',
"verbose_name": "Thema",
"verbose_name_plural": "Themen",
},
),
migrations.CreateModel(
name='FileUpload',
name="FileUpload",
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')),
('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')),
(
"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"),
),
(
"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={
'verbose_name': 'Datei',
'verbose_name_plural': 'Dateien',
"verbose_name": "Datei",
"verbose_name_plural": "Dateien",
},
),
migrations.CreateModel(
name='Etherpad',
name="Etherpad",
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')),
('attachment', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='intern.attachment', verbose_name='Anhang Ordner')),
(
"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"),
),
(
"attachment",
models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE,
to="intern.attachment",
verbose_name="Anhang Ordner",
),
),
],
options={
'verbose_name': 'Etherpad',
'verbose_name_plural': 'Etherpads',
"verbose_name": "Etherpad",
"verbose_name_plural": "Etherpads",
},
),
migrations.AddField(
model_name='attachment',
name='topic',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='intern.topic', verbose_name='Thema'),
model_name="attachment",
name="topic",
field=models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE,
to="intern.topic",
verbose_name="Thema",
),
),
migrations.AddConstraint(
model_name='topic',
constraint=models.UniqueConstraint(fields=('slug', 'topic_group'), name='unique_intern_slug_topic_group'),
model_name="topic",
constraint=models.UniqueConstraint(
fields=("slug", "topic_group"), name="unique_intern_slug_topic_group"
),
),
migrations.AddConstraint(
model_name='topic',
constraint=models.UniqueConstraint(fields=('title', 'topic_group'), name='unique_intern_title_topic_group'),
model_name="topic",
constraint=models.UniqueConstraint(
fields=("title", "topic_group"), name="unique_intern_title_topic_group"
),
),
migrations.AddConstraint(
model_name='etherpad',
constraint=models.UniqueConstraint(fields=('title', 'date', 'attachment'), name='unique_intern_etherpad'),
model_name="etherpad",
constraint=models.UniqueConstraint(
fields=("title", "date", "attachment"), name="unique_intern_etherpad"
),
),
migrations.AddConstraint(
model_name='attachment',
constraint=models.UniqueConstraint(fields=('slug', 'topic'), name='unique_intern_slug_topic'),
model_name="attachment",
constraint=models.UniqueConstraint(
fields=("slug", "topic"), name="unique_intern_slug_topic"
),
),
migrations.AddConstraint(
model_name='attachment',
constraint=models.UniqueConstraint(fields=('title', 'topic'), name='unique_intern_title_topic'),
model_name="attachment",
constraint=models.UniqueConstraint(
fields=("title", "topic"), name="unique_intern_title_topic"
),
),
]

View File

@@ -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 logging
import fet2020.utils
import uuid
from django.db import migrations, models
import django.db.models.deletion
import django.db.models.expressions
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()
import fet2020.utils
class Migration(migrations.Migration):
dependencies = [
('tasks', '0001_initial'),
("tasks", "0001_initial"),
]
operations = [
migrations.AlterModelOptions(
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')),
],
name="task",
options={
'verbose_name': 'Dokument',
'verbose_name_plural': 'Dokumente',
"ordering": (
"task_list",
models.OrderBy(
models.F("due_date"), descending=True, nulls_first=True
),
),
"verbose_name": "Aufgabe",
"verbose_name_plural": "Aufgaben",
},
),
migrations.RunPython(forwards_func),
# unique=True after setting value
migrations.AlterField(
model_name='task',
name='slug',
field=models.SlugField(blank=True, unique=True),
migrations.AddField(
model_name="task",
name="slug",
field=models.SlugField(blank=True, null=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(
model_name='task',
name='slug_id',
field=models.CharField(default=fet2020.utils.create_random_id, editable=False, max_length=36, unique=True),
model_name="task",
name="title",
field=models.CharField(max_length=128, verbose_name="Titel"),
),
migrations.AlterField(
model_name='tasklist',
name='shortterm',
field=models.CharField(blank=True, max_length=128, unique=True),
model_name="tasklist",
name="name",
field=models.CharField(max_length=128),
),
migrations.AlterField(
model_name='tasklist',
name='slug',
field=models.SlugField(blank=True, unique=True),
model_name="tasklist",
name="slug",
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",
},
),
]

View 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),
]

View 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),
),
]