Format code

This commit is contained in:
Daniel Egger 2023-07-14 17:14:00 +02:00
parent e208fdabbc
commit e8178fa36a
20 changed files with 1941 additions and 504 deletions

View File

@ -10,9 +10,6 @@ from django.views import defaults as default_views
from django.views.decorators.csrf import csrf_exempt
from graphene_django.views import GraphQLView
from ratelimit.exceptions import Ratelimited
from wagtail import urls as wagtail_urls
from wagtail.admin import urls as wagtailadmin_urls
from wagtail.documents import urls as wagtaildocs_urls
from vbv_lernwelt.assignment.views import request_assignment_completion_status
from vbv_lernwelt.core.middleware.auth import django_view_authentication_exempt
@ -45,6 +42,9 @@ from vbv_lernwelt.feedback.views import (
get_feedback_for_circle,
)
from vbv_lernwelt.notify.views import email_notification_settings
from wagtail import urls as wagtail_urls
from wagtail.admin import urls as wagtailadmin_urls
from wagtail.documents import urls as wagtaildocs_urls
class SignedIntConverter(IntConverter):

View File

@ -1,10 +1,11 @@
# Generated by Django 3.2.13 on 2023-07-14 12:28
from django.db import migrations, models
import django.db.models.deletion
import uuid
import django.db.models.deletion
import wagtail.blocks
import wagtail.fields
from django.db import migrations, models
class Migration(migrations.Migration):
@ -12,67 +13,328 @@ class Migration(migrations.Migration):
initial = True
dependencies = [
('wagtailcore', '0083_workflowcontenttype'),
("wagtailcore", "0083_workflowcontenttype"),
]
operations = [
migrations.CreateModel(
name='Assignment',
name="Assignment",
fields=[
('page_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='wagtailcore.page')),
('assignment_type', models.CharField(choices=[('CASEWORK', 'CASEWORK'), ('PREP_ASSIGNMENT', 'PREP_ASSIGNMENT'), ('REFLECTION', 'REFLECTION')], default='CASEWORK', max_length=50)),
('intro_text', wagtail.fields.RichTextField(help_text='Erläuterung der Ausgangslage')),
('effort_required', models.CharField(blank=True, help_text='Zeitaufwand als Text', max_length=100)),
('performance_objectives', wagtail.fields.StreamField([('performance_objective', wagtail.blocks.StructBlock([('text', wagtail.blocks.TextBlock())]))], blank=True, help_text='Leistungsziele des Auftrags', use_json_field=True)),
('tasks', wagtail.fields.StreamField([('task', wagtail.blocks.StructBlock([('title', wagtail.blocks.TextBlock()), ('file_submission_required', wagtail.blocks.BooleanBlock(required=False)), ('content', wagtail.blocks.StreamBlock([('explanation', wagtail.blocks.StructBlock([('text', wagtail.blocks.RichTextBlock(features=['ul', 'bold', 'italic']))])), ('user_text_input', wagtail.blocks.StructBlock([('text', wagtail.blocks.RichTextBlock(blank=True, features=['ul', 'bold', 'italic'], required=False))])), ('user_confirmation', wagtail.blocks.StructBlock([('text', wagtail.blocks.RichTextBlock(features=['ul', 'bold', 'italic']))]))], blank=True))]))], blank=True, help_text='Teilaufgaben', use_json_field=True)),
('evaluation_description', wagtail.fields.RichTextField(blank=True, help_text='Beschreibung der Bewertung')),
('evaluation_document_url', models.CharField(blank=True, help_text='URL zum Beurteilungsinstrument', max_length=255)),
('evaluation_tasks', wagtail.fields.StreamField([('task', wagtail.blocks.StructBlock([('title', wagtail.blocks.TextBlock()), ('description', wagtail.blocks.RichTextBlock(blank=True, features=['ul', 'bold', 'italic'], required=False)), ('max_points', wagtail.blocks.IntegerBlock()), ('sub_tasks', wagtail.blocks.ListBlock(wagtail.blocks.StructBlock([('title', wagtail.blocks.TextBlock()), ('description', wagtail.blocks.RichTextBlock(blank=True, features=['ul', 'bold', 'italic'], required=False)), ('points', wagtail.blocks.IntegerBlock())]), blank=True, use_json_field=True))]))], blank=True, help_text='Beurteilungsschritte', use_json_field=True)),
(
"page_ptr",
models.OneToOneField(
auto_created=True,
on_delete=django.db.models.deletion.CASCADE,
parent_link=True,
primary_key=True,
serialize=False,
to="wagtailcore.page",
),
),
(
"assignment_type",
models.CharField(
choices=[
("CASEWORK", "CASEWORK"),
("PREP_ASSIGNMENT", "PREP_ASSIGNMENT"),
("REFLECTION", "REFLECTION"),
],
default="CASEWORK",
max_length=50,
),
),
(
"intro_text",
wagtail.fields.RichTextField(
help_text="Erläuterung der Ausgangslage"
),
),
(
"effort_required",
models.CharField(
blank=True, help_text="Zeitaufwand als Text", max_length=100
),
),
(
"performance_objectives",
wagtail.fields.StreamField(
[
(
"performance_objective",
wagtail.blocks.StructBlock(
[("text", wagtail.blocks.TextBlock())]
),
)
],
blank=True,
help_text="Leistungsziele des Auftrags",
use_json_field=True,
),
),
(
"tasks",
wagtail.fields.StreamField(
[
(
"task",
wagtail.blocks.StructBlock(
[
("title", wagtail.blocks.TextBlock()),
(
"file_submission_required",
wagtail.blocks.BooleanBlock(required=False),
),
(
"content",
wagtail.blocks.StreamBlock(
[
(
"explanation",
wagtail.blocks.StructBlock(
[
(
"text",
wagtail.blocks.RichTextBlock(
features=[
"ul",
"bold",
"italic",
]
),
)
]
),
),
(
"user_text_input",
wagtail.blocks.StructBlock(
[
(
"text",
wagtail.blocks.RichTextBlock(
blank=True,
features=[
"ul",
"bold",
"italic",
],
required=False,
),
)
]
),
),
(
"user_confirmation",
wagtail.blocks.StructBlock(
[
(
"text",
wagtail.blocks.RichTextBlock(
features=[
"ul",
"bold",
"italic",
]
),
)
]
),
),
],
blank=True,
),
),
]
),
)
],
blank=True,
help_text="Teilaufgaben",
use_json_field=True,
),
),
(
"evaluation_description",
wagtail.fields.RichTextField(
blank=True, help_text="Beschreibung der Bewertung"
),
),
(
"evaluation_document_url",
models.CharField(
blank=True,
help_text="URL zum Beurteilungsinstrument",
max_length=255,
),
),
(
"evaluation_tasks",
wagtail.fields.StreamField(
[
(
"task",
wagtail.blocks.StructBlock(
[
("title", wagtail.blocks.TextBlock()),
(
"description",
wagtail.blocks.RichTextBlock(
blank=True,
features=["ul", "bold", "italic"],
required=False,
),
),
("max_points", wagtail.blocks.IntegerBlock()),
(
"sub_tasks",
wagtail.blocks.ListBlock(
wagtail.blocks.StructBlock(
[
(
"title",
wagtail.blocks.TextBlock(),
),
(
"description",
wagtail.blocks.RichTextBlock(
blank=True,
features=[
"ul",
"bold",
"italic",
],
required=False,
),
),
(
"points",
wagtail.blocks.IntegerBlock(),
),
]
),
blank=True,
use_json_field=True,
),
),
]
),
)
],
blank=True,
help_text="Beurteilungsschritte",
use_json_field=True,
),
),
],
options={
'verbose_name': 'Auftrag',
"verbose_name": "Auftrag",
},
bases=('wagtailcore.page',),
bases=("wagtailcore.page",),
),
migrations.CreateModel(
name='AssignmentCompletion',
name="AssignmentCompletion",
fields=[
('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
('created_at', models.DateTimeField(auto_now_add=True)),
('updated_at', models.DateTimeField(auto_now=True)),
('submitted_at', models.DateTimeField(blank=True, null=True)),
('evaluation_submitted_at', models.DateTimeField(blank=True, null=True)),
('evaluation_grade', models.FloatField(blank=True, null=True)),
('evaluation_points', models.FloatField(blank=True, null=True)),
('completion_status', models.CharField(choices=[('IN_PROGRESS', 'IN_PROGRESS'), ('SUBMITTED', 'SUBMITTED'), ('EVALUATION_IN_PROGRESS', 'EVALUATION_IN_PROGRESS'), ('EVALUATION_SUBMITTED', 'EVALUATION_SUBMITTED')], default='IN_PROGRESS', max_length=255)),
('completion_data', models.JSONField(default=dict)),
('additional_json_data', models.JSONField(default=dict)),
(
"id",
models.UUIDField(
default=uuid.uuid4,
editable=False,
primary_key=True,
serialize=False,
),
),
("created_at", models.DateTimeField(auto_now_add=True)),
("updated_at", models.DateTimeField(auto_now=True)),
("submitted_at", models.DateTimeField(blank=True, null=True)),
(
"evaluation_submitted_at",
models.DateTimeField(blank=True, null=True),
),
("evaluation_grade", models.FloatField(blank=True, null=True)),
("evaluation_points", models.FloatField(blank=True, null=True)),
(
"completion_status",
models.CharField(
choices=[
("IN_PROGRESS", "IN_PROGRESS"),
("SUBMITTED", "SUBMITTED"),
("EVALUATION_IN_PROGRESS", "EVALUATION_IN_PROGRESS"),
("EVALUATION_SUBMITTED", "EVALUATION_SUBMITTED"),
],
default="IN_PROGRESS",
max_length=255,
),
),
("completion_data", models.JSONField(default=dict)),
("additional_json_data", models.JSONField(default=dict)),
],
),
migrations.CreateModel(
name='AssignmentListPage',
name="AssignmentListPage",
fields=[
('page_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='wagtailcore.page')),
(
"page_ptr",
models.OneToOneField(
auto_created=True,
on_delete=django.db.models.deletion.CASCADE,
parent_link=True,
primary_key=True,
serialize=False,
to="wagtailcore.page",
),
),
],
options={
'abstract': False,
"abstract": False,
},
bases=('wagtailcore.page',),
bases=("wagtailcore.page",),
),
migrations.CreateModel(
name='AssignmentCompletionAuditLog',
name="AssignmentCompletionAuditLog",
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('created_at', models.DateTimeField(auto_now_add=True)),
('completion_status', models.CharField(choices=[('IN_PROGRESS', 'IN_PROGRESS'), ('SUBMITTED', 'SUBMITTED'), ('EVALUATION_IN_PROGRESS', 'EVALUATION_IN_PROGRESS'), ('EVALUATION_SUBMITTED', 'EVALUATION_SUBMITTED')], default='IN_PROGRESS', max_length=255)),
('completion_data', models.JSONField(default=dict)),
('additional_json_data', models.JSONField(default=dict)),
('assignment_user_email', models.CharField(max_length=255)),
('assignment_slug', models.CharField(max_length=255)),
('evaluation_user_email', models.CharField(blank=True, default='', max_length=255)),
('evaluation_grade', models.FloatField(blank=True, null=True)),
('evaluation_points', models.FloatField(blank=True, null=True)),
('assignment', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='assignment.assignment')),
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
("created_at", models.DateTimeField(auto_now_add=True)),
(
"completion_status",
models.CharField(
choices=[
("IN_PROGRESS", "IN_PROGRESS"),
("SUBMITTED", "SUBMITTED"),
("EVALUATION_IN_PROGRESS", "EVALUATION_IN_PROGRESS"),
("EVALUATION_SUBMITTED", "EVALUATION_SUBMITTED"),
],
default="IN_PROGRESS",
max_length=255,
),
),
("completion_data", models.JSONField(default=dict)),
("additional_json_data", models.JSONField(default=dict)),
("assignment_user_email", models.CharField(max_length=255)),
("assignment_slug", models.CharField(max_length=255)),
(
"evaluation_user_email",
models.CharField(blank=True, default="", max_length=255),
),
("evaluation_grade", models.FloatField(blank=True, null=True)),
("evaluation_points", models.FloatField(blank=True, null=True)),
(
"assignment",
models.ForeignKey(
null=True,
on_delete=django.db.models.deletion.SET_NULL,
related_name="+",
to="assignment.assignment",
),
),
],
),
]

View File

@ -1,8 +1,8 @@
# Generated by Django 3.2.13 on 2023-07-14 12:28
import django.db.models.deletion
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
@ -11,13 +11,18 @@ class Migration(migrations.Migration):
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('assignment', '0001_initial'),
("assignment", "0001_initial"),
]
operations = [
migrations.AddField(
model_name='assignmentcompletionauditlog',
name='assignment_user',
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL),
model_name="assignmentcompletionauditlog",
name="assignment_user",
field=models.ForeignKey(
null=True,
on_delete=django.db.models.deletion.SET_NULL,
related_name="+",
to=settings.AUTH_USER_MODEL,
),
),
]

View File

@ -1,8 +1,8 @@
# Generated by Django 3.2.13 on 2023-07-14 12:28
import django.db.models.deletion
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
@ -11,49 +11,88 @@ class Migration(migrations.Migration):
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('assignment', '0002_assignmentcompletionauditlog_assignment_user'),
('course', '0001_initial'),
('wagtailcore', '0083_workflowcontenttype'),
("assignment", "0002_assignmentcompletionauditlog_assignment_user"),
("course", "0001_initial"),
("wagtailcore", "0083_workflowcontenttype"),
]
operations = [
migrations.AddField(
model_name='assignmentcompletionauditlog',
name='course_session',
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='course.coursesession'),
model_name="assignmentcompletionauditlog",
name="course_session",
field=models.ForeignKey(
null=True,
on_delete=django.db.models.deletion.SET_NULL,
related_name="+",
to="course.coursesession",
),
),
migrations.AddField(
model_name='assignmentcompletionauditlog',
name='evaluation_user',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL),
model_name="assignmentcompletionauditlog",
name="evaluation_user",
field=models.ForeignKey(
blank=True,
null=True,
on_delete=django.db.models.deletion.SET_NULL,
related_name="+",
to=settings.AUTH_USER_MODEL,
),
),
migrations.AddField(
model_name='assignmentcompletion',
name='assignment',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='assignment.assignment'),
model_name="assignmentcompletion",
name="assignment",
field=models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE, to="assignment.assignment"
),
),
migrations.AddField(
model_name='assignmentcompletion',
name='assignment_user',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL),
model_name="assignmentcompletion",
name="assignment_user",
field=models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL
),
),
migrations.AddField(
model_name='assignmentcompletion',
name='course_session',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='course.coursesession'),
model_name="assignmentcompletion",
name="course_session",
field=models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE, to="course.coursesession"
),
),
migrations.AddField(
model_name='assignmentcompletion',
name='evaluation_user',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='+', to=settings.AUTH_USER_MODEL),
model_name="assignmentcompletion",
name="evaluation_user",
field=models.ForeignKey(
blank=True,
null=True,
on_delete=django.db.models.deletion.CASCADE,
related_name="+",
to=settings.AUTH_USER_MODEL,
),
),
migrations.AddField(
model_name='assignmentcompletion',
name='learning_content_page',
field=models.ForeignKey(blank=True, default=None, help_text="Page reference mostly needed for 'REFLECTION' assignments", null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='wagtailcore.page'),
model_name="assignmentcompletion",
name="learning_content_page",
field=models.ForeignKey(
blank=True,
default=None,
help_text="Page reference mostly needed for 'REFLECTION' assignments",
null=True,
on_delete=django.db.models.deletion.SET_NULL,
related_name="+",
to="wagtailcore.page",
),
),
migrations.AddConstraint(
model_name='assignmentcompletion',
constraint=models.UniqueConstraint(fields=('assignment_user', 'assignment', 'course_session', 'learning_content_page'), name='assignment_completion_unique_user_assignment_course_session'),
model_name="assignmentcompletion",
constraint=models.UniqueConstraint(
fields=(
"assignment_user",
"assignment",
"course_session",
"learning_content_page",
),
name="assignment_completion_unique_user_assignment_course_session",
),
),
]

View File

@ -1,9 +1,9 @@
# Generated by Django 3.2.13 on 2023-07-14 12:28
from django.db import migrations, models
import django.db.models.deletion
import wagtail.blocks
import wagtail.fields
from django.db import migrations, models
class Migration(migrations.Migration):
@ -11,43 +11,81 @@ class Migration(migrations.Migration):
initial = True
dependencies = [
('wagtailcore', '0083_workflowcontenttype'),
("wagtailcore", "0083_workflowcontenttype"),
]
operations = [
migrations.CreateModel(
name='CompetencePage',
name="CompetencePage",
fields=[
('page_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='wagtailcore.page')),
('competence_id', models.TextField(default='A1')),
('items', wagtail.fields.StreamField([('item', wagtail.blocks.TextBlock())], use_json_field=True)),
(
"page_ptr",
models.OneToOneField(
auto_created=True,
on_delete=django.db.models.deletion.CASCADE,
parent_link=True,
primary_key=True,
serialize=False,
to="wagtailcore.page",
),
),
("competence_id", models.TextField(default="A1")),
(
"items",
wagtail.fields.StreamField(
[("item", wagtail.blocks.TextBlock())], use_json_field=True
),
),
],
options={
'abstract': False,
"abstract": False,
},
bases=('wagtailcore.page',),
bases=("wagtailcore.page",),
),
migrations.CreateModel(
name='CompetenceProfilePage',
name="CompetenceProfilePage",
fields=[
('page_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='wagtailcore.page')),
(
"page_ptr",
models.OneToOneField(
auto_created=True,
on_delete=django.db.models.deletion.CASCADE,
parent_link=True,
primary_key=True,
serialize=False,
to="wagtailcore.page",
),
),
],
options={
'abstract': False,
"abstract": False,
},
bases=('wagtailcore.page',),
bases=("wagtailcore.page",),
),
migrations.CreateModel(
name='PerformanceCriteria',
name="PerformanceCriteria",
fields=[
('page_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='wagtailcore.page')),
('competence_id', models.TextField(default='A1.1')),
('has_course_completion_status', models.BooleanField(default=True)),
('can_user_self_toggle_course_completion', models.BooleanField(default=True)),
(
"page_ptr",
models.OneToOneField(
auto_created=True,
on_delete=django.db.models.deletion.CASCADE,
parent_link=True,
primary_key=True,
serialize=False,
to="wagtailcore.page",
),
),
("competence_id", models.TextField(default="A1.1")),
("has_course_completion_status", models.BooleanField(default=True)),
(
"can_user_self_toggle_course_completion",
models.BooleanField(default=True),
),
],
options={
'abstract': False,
"abstract": False,
},
bases=('wagtailcore.page',),
bases=("wagtailcore.page",),
),
]

View File

@ -1,7 +1,7 @@
# Generated by Django 3.2.13 on 2023-07-14 12:28
from django.db import migrations, models
import django.db.models.deletion
from django.db import migrations, models
class Migration(migrations.Migration):
@ -9,14 +9,19 @@ class Migration(migrations.Migration):
initial = True
dependencies = [
('competence', '0001_initial'),
('learnpath', '0001_initial'),
("competence", "0001_initial"),
("learnpath", "0001_initial"),
]
operations = [
migrations.AddField(
model_name='performancecriteria',
name='learning_unit',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='learnpath.learningunit'),
model_name="performancecriteria",
name="learning_unit",
field=models.ForeignKey(
blank=True,
null=True,
on_delete=django.db.models.deletion.SET_NULL,
to="learnpath.learningunit",
),
),
]

View File

@ -8,25 +8,42 @@ class Migration(migrations.Migration):
initial = True
dependencies = [
]
dependencies = []
operations = [
migrations.CreateModel(
name='Site',
name="Site",
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('domain', models.CharField(max_length=100, unique=True, validators=[django.contrib.sites.models._simple_domain_name_validator], verbose_name='domain name')),
('name', models.CharField(max_length=50, verbose_name='display name')),
(
"id",
models.AutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
(
"domain",
models.CharField(
max_length=100,
unique=True,
validators=[
django.contrib.sites.models._simple_domain_name_validator
],
verbose_name="domain name",
),
),
("name", models.CharField(max_length=50, verbose_name="display name")),
],
options={
'verbose_name': 'site',
'verbose_name_plural': 'sites',
'db_table': 'django_site',
'ordering': ['domain'],
"verbose_name": "site",
"verbose_name_plural": "sites",
"db_table": "django_site",
"ordering": ["domain"],
},
managers=[
('objects', django.contrib.sites.models.SiteManager()),
("objects", django.contrib.sites.models.SiteManager()),
],
),
]

View File

@ -1,10 +1,11 @@
# Generated by Django 3.2.13 on 2023-07-14 12:28
import uuid
import django.contrib.auth.models
import django.contrib.auth.validators
from django.db import migrations, models
import django.utils.timezone
import uuid
from django.db import migrations, models
class Migration(migrations.Migration):
@ -12,51 +13,189 @@ class Migration(migrations.Migration):
initial = True
dependencies = [
('auth', '0012_alter_user_first_name_max_length'),
("auth", "0012_alter_user_first_name_max_length"),
]
operations = [
migrations.CreateModel(
name='SecurityRequestResponseLog',
name="SecurityRequestResponseLog",
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('label', models.CharField(blank=True, default='', max_length=255)),
('request_method', models.CharField(blank=True, default='', max_length=255)),
('request_full_path', models.CharField(blank=True, default='', max_length=255)),
('request_username', models.CharField(blank=True, default='', max_length=255)),
('request_client_ip', models.CharField(blank=True, default='', max_length=255)),
('response_status_code', models.CharField(blank=True, default='', max_length=255)),
('additional_json_data', models.JSONField(blank=True, default=dict)),
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
("label", models.CharField(blank=True, default="", max_length=255)),
(
"request_method",
models.CharField(blank=True, default="", max_length=255),
),
(
"request_full_path",
models.CharField(blank=True, default="", max_length=255),
),
(
"request_username",
models.CharField(blank=True, default="", max_length=255),
),
(
"request_client_ip",
models.CharField(blank=True, default="", max_length=255),
),
(
"response_status_code",
models.CharField(blank=True, default="", max_length=255),
),
("additional_json_data", models.JSONField(blank=True, default=dict)),
],
),
migrations.CreateModel(
name='User',
name="User",
fields=[
('password', models.CharField(max_length=128, verbose_name='password')),
('last_login', models.DateTimeField(blank=True, null=True, verbose_name='last login')),
('is_superuser', models.BooleanField(default=False, help_text='Designates that this user has all permissions without explicitly assigning them.', verbose_name='superuser status')),
('username', models.CharField(error_messages={'unique': 'A user with that username already exists.'}, help_text='Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.', max_length=150, unique=True, validators=[django.contrib.auth.validators.UnicodeUsernameValidator()], verbose_name='username')),
('first_name', models.CharField(blank=True, max_length=150, verbose_name='first name')),
('last_name', models.CharField(blank=True, max_length=150, verbose_name='last name')),
('is_staff', models.BooleanField(default=False, help_text='Designates whether the user can log into this admin site.', verbose_name='staff status')),
('is_active', models.BooleanField(default=True, help_text='Designates whether this user should be treated as active. Unselect this instead of deleting accounts.', verbose_name='active')),
('date_joined', models.DateTimeField(default=django.utils.timezone.now, verbose_name='date joined')),
('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
('avatar_url', models.CharField(blank=True, default='/static/avatars/myvbv-default-avatar.png', max_length=254)),
('email', models.EmailField(max_length=254, unique=True, verbose_name='email address')),
('sso_id', models.UUIDField(blank=True, default=None, null=True, unique=True, verbose_name='SSO subscriber ID')),
('additional_json_data', models.JSONField(blank=True, default=dict)),
('language', models.CharField(choices=[('de', 'Deutsch'), ('fr', 'Français'), ('it', 'Italiano')], default='de', max_length=2)),
('groups', models.ManyToManyField(blank=True, help_text='The groups this user belongs to. A user will get all permissions granted to each of their groups.', related_name='user_set', related_query_name='user', to='auth.Group', verbose_name='groups')),
('user_permissions', models.ManyToManyField(blank=True, help_text='Specific permissions for this user.', related_name='user_set', related_query_name='user', to='auth.Permission', verbose_name='user permissions')),
("password", models.CharField(max_length=128, verbose_name="password")),
(
"last_login",
models.DateTimeField(
blank=True, null=True, verbose_name="last login"
),
),
(
"is_superuser",
models.BooleanField(
default=False,
help_text="Designates that this user has all permissions without explicitly assigning them.",
verbose_name="superuser status",
),
),
(
"username",
models.CharField(
error_messages={
"unique": "A user with that username already exists."
},
help_text="Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.",
max_length=150,
unique=True,
validators=[
django.contrib.auth.validators.UnicodeUsernameValidator()
],
verbose_name="username",
),
),
(
"first_name",
models.CharField(
blank=True, max_length=150, verbose_name="first name"
),
),
(
"last_name",
models.CharField(
blank=True, max_length=150, verbose_name="last name"
),
),
(
"is_staff",
models.BooleanField(
default=False,
help_text="Designates whether the user can log into this admin site.",
verbose_name="staff status",
),
),
(
"is_active",
models.BooleanField(
default=True,
help_text="Designates whether this user should be treated as active. Unselect this instead of deleting accounts.",
verbose_name="active",
),
),
(
"date_joined",
models.DateTimeField(
default=django.utils.timezone.now, verbose_name="date joined"
),
),
(
"id",
models.UUIDField(
default=uuid.uuid4,
editable=False,
primary_key=True,
serialize=False,
),
),
(
"avatar_url",
models.CharField(
blank=True,
default="/static/avatars/myvbv-default-avatar.png",
max_length=254,
),
),
(
"email",
models.EmailField(
max_length=254, unique=True, verbose_name="email address"
),
),
(
"sso_id",
models.UUIDField(
blank=True,
default=None,
null=True,
unique=True,
verbose_name="SSO subscriber ID",
),
),
("additional_json_data", models.JSONField(blank=True, default=dict)),
(
"language",
models.CharField(
choices=[
("de", "Deutsch"),
("fr", "Français"),
("it", "Italiano"),
],
default="de",
max_length=2,
),
),
(
"groups",
models.ManyToManyField(
blank=True,
help_text="The groups this user belongs to. A user will get all permissions granted to each of their groups.",
related_name="user_set",
related_query_name="user",
to="auth.Group",
verbose_name="groups",
),
),
(
"user_permissions",
models.ManyToManyField(
blank=True,
help_text="Specific permissions for this user.",
related_name="user_set",
related_query_name="user",
to="auth.Permission",
verbose_name="user permissions",
),
),
],
options={
'verbose_name': 'user',
'verbose_name_plural': 'users',
'abstract': False,
"verbose_name": "user",
"verbose_name_plural": "users",
"abstract": False,
},
managers=[
('objects', django.contrib.auth.models.UserManager()),
("objects", django.contrib.auth.models.UserManager()),
],
),
]

View File

@ -1,8 +1,10 @@
# Generated by Django 3.2.13 on 2023-07-14 12:28
from django.db import migrations, models
import django.db.models.deletion
import uuid
import django.db.models.deletion
from django.db import migrations, models
import vbv_lernwelt.course.models
@ -11,83 +13,206 @@ class Migration(migrations.Migration):
initial = True
dependencies = [
('wagtailcore', '0083_workflowcontenttype'),
("wagtailcore", "0083_workflowcontenttype"),
]
operations = [
migrations.CreateModel(
name='CircleDocument',
name="CircleDocument",
fields=[
('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
('created_at', models.DateTimeField(auto_now_add=True)),
('name', models.CharField(max_length=100)),
(
"id",
models.UUIDField(
default=uuid.uuid4,
editable=False,
primary_key=True,
serialize=False,
),
),
("created_at", models.DateTimeField(auto_now_add=True)),
("name", models.CharField(max_length=100)),
],
),
migrations.CreateModel(
name='Course',
name="Course",
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('title', models.CharField(max_length=255, verbose_name='Titel')),
('category_name', models.CharField(default='Kategorie', max_length=255, verbose_name='Kategorie-Name')),
('slug', models.SlugField(allow_unicode=True, blank=True, max_length=255, unique=True, verbose_name='Slug')),
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
("title", models.CharField(max_length=255, verbose_name="Titel")),
(
"category_name",
models.CharField(
default="Kategorie",
max_length=255,
verbose_name="Kategorie-Name",
),
),
(
"slug",
models.SlugField(
allow_unicode=True,
blank=True,
max_length=255,
unique=True,
verbose_name="Slug",
),
),
],
options={
'verbose_name': 'Lehrgang',
"verbose_name": "Lehrgang",
},
),
migrations.CreateModel(
name='CourseCategory',
name="CourseCategory",
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('title', models.CharField(blank=True, max_length=255, verbose_name='Titel')),
('general', models.BooleanField(default=False, verbose_name='Allgemein')),
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
(
"title",
models.CharField(blank=True, max_length=255, verbose_name="Titel"),
),
(
"general",
models.BooleanField(default=False, verbose_name="Allgemein"),
),
],
),
migrations.CreateModel(
name='CourseCompletion',
name="CourseCompletion",
fields=[
('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
('created_at', models.DateTimeField(auto_now_add=True)),
('updated_at', models.DateTimeField(auto_now=True)),
('page_type', models.CharField(blank=True, default='', max_length=255)),
('completion_status', models.CharField(choices=[(vbv_lernwelt.course.models.CourseCompletionStatus['SUCCESS'], 'SUCCESS'), (vbv_lernwelt.course.models.CourseCompletionStatus['FAIL'], 'FAIL'), (vbv_lernwelt.course.models.CourseCompletionStatus['UNKNOWN'], 'UNKNOWN')], default='UNKNOWN', max_length=255)),
('additional_json_data', models.JSONField(default=dict)),
(
"id",
models.UUIDField(
default=uuid.uuid4,
editable=False,
primary_key=True,
serialize=False,
),
),
("created_at", models.DateTimeField(auto_now_add=True)),
("updated_at", models.DateTimeField(auto_now=True)),
("page_type", models.CharField(blank=True, default="", max_length=255)),
(
"completion_status",
models.CharField(
choices=[
(
vbv_lernwelt.course.models.CourseCompletionStatus[
"SUCCESS"
],
"SUCCESS",
),
(
vbv_lernwelt.course.models.CourseCompletionStatus[
"FAIL"
],
"FAIL",
),
(
vbv_lernwelt.course.models.CourseCompletionStatus[
"UNKNOWN"
],
"UNKNOWN",
),
],
default="UNKNOWN",
max_length=255,
),
),
("additional_json_data", models.JSONField(default=dict)),
],
),
migrations.CreateModel(
name='CoursePage',
name="CoursePage",
fields=[
('page_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='wagtailcore.page')),
(
"page_ptr",
models.OneToOneField(
auto_created=True,
on_delete=django.db.models.deletion.CASCADE,
parent_link=True,
primary_key=True,
serialize=False,
to="wagtailcore.page",
),
),
],
options={
'verbose_name': 'Lehrgang-Seite',
"verbose_name": "Lehrgang-Seite",
},
bases=('wagtailcore.page',),
bases=("wagtailcore.page",),
),
migrations.CreateModel(
name='CourseSession',
name="CourseSession",
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('created_at', models.DateTimeField(auto_now_add=True)),
('updated_at', models.DateTimeField(auto_now=True)),
('title', models.TextField(unique=True)),
('import_id', models.TextField(blank=True, default='')),
('generation', models.TextField(blank=True, default='')),
('region', models.TextField(blank=True, default='')),
('group', models.TextField(blank=True, default='')),
('start_date', models.DateField(blank=True, null=True)),
('end_date', models.DateField(blank=True, null=True)),
('additional_json_data', models.JSONField(blank=True, default=dict)),
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
("created_at", models.DateTimeField(auto_now_add=True)),
("updated_at", models.DateTimeField(auto_now=True)),
("title", models.TextField(unique=True)),
("import_id", models.TextField(blank=True, default="")),
("generation", models.TextField(blank=True, default="")),
("region", models.TextField(blank=True, default="")),
("group", models.TextField(blank=True, default="")),
("start_date", models.DateField(blank=True, null=True)),
("end_date", models.DateField(blank=True, null=True)),
("additional_json_data", models.JSONField(blank=True, default=dict)),
],
),
migrations.CreateModel(
name='CourseSessionUser',
name="CourseSessionUser",
fields=[
('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
('created_at', models.DateTimeField(auto_now_add=True)),
('updated_at', models.DateTimeField(auto_now=True)),
('role', models.CharField(choices=[('MEMBER', 'Teilnehmer'), ('EXPERT', 'Experte/Trainer'), ('TUTOR', 'Lernbegleitung')], default='MEMBER', max_length=255)),
('course_session', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='course.coursesession')),
(
"id",
models.UUIDField(
default=uuid.uuid4,
editable=False,
primary_key=True,
serialize=False,
),
),
("created_at", models.DateTimeField(auto_now_add=True)),
("updated_at", models.DateTimeField(auto_now=True)),
(
"role",
models.CharField(
choices=[
("MEMBER", "Teilnehmer"),
("EXPERT", "Experte/Trainer"),
("TUTOR", "Lernbegleitung"),
],
default="MEMBER",
max_length=255,
),
),
(
"course_session",
models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE,
to="course.coursesession",
),
),
],
),
]

View File

@ -1,8 +1,8 @@
# Generated by Django 3.2.13 on 2023-07-14 12:28
import django.db.models.deletion
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
@ -11,74 +11,103 @@ class Migration(migrations.Migration):
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('wagtailcore', '0083_workflowcontenttype'),
('files', '0001_initial'),
('course', '0001_initial'),
('learnpath', '0001_initial'),
("wagtailcore", "0083_workflowcontenttype"),
("files", "0001_initial"),
("course", "0001_initial"),
("learnpath", "0001_initial"),
]
operations = [
migrations.AddField(
model_name='coursesessionuser',
name='expert',
field=models.ManyToManyField(blank=True, related_name='expert', to='learnpath.Circle'),
model_name="coursesessionuser",
name="expert",
field=models.ManyToManyField(
blank=True, related_name="expert", to="learnpath.Circle"
),
),
migrations.AddField(
model_name='coursesessionuser',
name='user',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL),
model_name="coursesessionuser",
name="user",
field=models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL
),
),
migrations.AddField(
model_name='coursesession',
name='course',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='course.course'),
model_name="coursesession",
name="course",
field=models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE, to="course.course"
),
),
migrations.AddField(
model_name='coursepage',
name='course',
field=models.OneToOneField(on_delete=django.db.models.deletion.PROTECT, to='course.course'),
model_name="coursepage",
name="course",
field=models.OneToOneField(
on_delete=django.db.models.deletion.PROTECT, to="course.course"
),
),
migrations.AddField(
model_name='coursecompletion',
name='course_session',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='course.coursesession'),
model_name="coursecompletion",
name="course_session",
field=models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE, to="course.coursesession"
),
),
migrations.AddField(
model_name='coursecompletion',
name='page',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='wagtailcore.page'),
model_name="coursecompletion",
name="page",
field=models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE, to="wagtailcore.page"
),
),
migrations.AddField(
model_name='coursecompletion',
name='user',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL),
model_name="coursecompletion",
name="user",
field=models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL
),
),
migrations.AddField(
model_name='coursecategory',
name='course',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='course.course'),
model_name="coursecategory",
name="course",
field=models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE, to="course.course"
),
),
migrations.AddField(
model_name='circledocument',
name='course_session',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='course.coursesession'),
model_name="circledocument",
name="course_session",
field=models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE, to="course.coursesession"
),
),
migrations.AddField(
model_name='circledocument',
name='file',
field=models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to='files.uploadfile'),
model_name="circledocument",
name="file",
field=models.OneToOneField(
on_delete=django.db.models.deletion.CASCADE, to="files.uploadfile"
),
),
migrations.AddField(
model_name='circledocument',
name='learning_sequence',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='learnpath.learningsequence'),
model_name="circledocument",
name="learning_sequence",
field=models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE,
to="learnpath.learningsequence",
),
),
migrations.AddConstraint(
model_name='coursesessionuser',
constraint=models.UniqueConstraint(fields=('course_session', 'user'), name='course_session_user_unique_course_session_user'),
model_name="coursesessionuser",
constraint=models.UniqueConstraint(
fields=("course_session", "user"),
name="course_session_user_unique_course_session_user",
),
),
migrations.AddConstraint(
model_name='coursecompletion',
constraint=models.UniqueConstraint(fields=('user', 'page', 'course_session'), name='course_completion_unique_user_page_key'),
model_name="coursecompletion",
constraint=models.UniqueConstraint(
fields=("user", "page", "course_session"),
name="course_completion_unique_user_page_key",
),
),
]

View File

@ -1,8 +1,8 @@
# Generated by Django 3.2.13 on 2023-07-14 12:28
from django.db import migrations, models
import django.db.models.deletion
import django_jsonform.models.fields
from django.db import migrations, models
class Migration(migrations.Migration):
@ -10,24 +10,49 @@ class Migration(migrations.Migration):
initial = True
dependencies = [
('course', '0001_initial'),
("course", "0001_initial"),
]
operations = [
migrations.CreateModel(
name='CourseSessionAssignment',
name="CourseSessionAssignment",
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
],
),
migrations.CreateModel(
name='CourseSessionAttendanceCourse',
name="CourseSessionAttendanceCourse",
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('location', models.CharField(blank=True, default='', max_length=255)),
('trainer', models.CharField(blank=True, default='', max_length=255)),
('attendance_user_list', django_jsonform.models.fields.JSONField(default=list)),
('course_session', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='course.coursesession')),
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
("location", models.CharField(blank=True, default="", max_length=255)),
("trainer", models.CharField(blank=True, default="", max_length=255)),
(
"attendance_user_list",
django_jsonform.models.fields.JSONField(default=list),
),
(
"course_session",
models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE,
to="course.coursesession",
),
),
],
),
]

View File

@ -1,7 +1,7 @@
# Generated by Django 3.2.13 on 2023-07-14 12:28
from django.db import migrations, models
import django.db.models.deletion
from django.db import migrations, models
class Migration(migrations.Migration):
@ -9,14 +9,18 @@ class Migration(migrations.Migration):
initial = True
dependencies = [
('duedate', '0001_initial'),
('course_session', '0001_initial'),
("duedate", "0001_initial"),
("course_session", "0001_initial"),
]
operations = [
migrations.AddField(
model_name='coursesessionattendancecourse',
name='due_date',
field=models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='attendance_course_due_date', to='duedate.duedate'),
model_name="coursesessionattendancecourse",
name="due_date",
field=models.OneToOneField(
on_delete=django.db.models.deletion.CASCADE,
related_name="attendance_course_due_date",
to="duedate.duedate",
),
),
]

View File

@ -1,7 +1,7 @@
# Generated by Django 3.2.13 on 2023-07-14 12:28
from django.db import migrations, models
import django.db.models.deletion
from django.db import migrations, models
class Migration(migrations.Migration):
@ -9,36 +9,54 @@ class Migration(migrations.Migration):
initial = True
dependencies = [
('course_session', '0002_coursesessionattendancecourse_due_date'),
('course', '0001_initial'),
('duedate', '0001_initial'),
('learnpath', '0001_initial'),
("course_session", "0002_coursesessionattendancecourse_due_date"),
("course", "0001_initial"),
("duedate", "0001_initial"),
("learnpath", "0001_initial"),
]
operations = [
migrations.AddField(
model_name='coursesessionattendancecourse',
name='learning_content',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='learnpath.learningcontentattendancecourse'),
model_name="coursesessionattendancecourse",
name="learning_content",
field=models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE,
to="learnpath.learningcontentattendancecourse",
),
),
migrations.AddField(
model_name='coursesessionassignment',
name='course_session',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='course.coursesession'),
model_name="coursesessionassignment",
name="course_session",
field=models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE, to="course.coursesession"
),
),
migrations.AddField(
model_name='coursesessionassignment',
name='evaluation_deadline',
field=models.OneToOneField(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='assignment_evaluation_deadline', to='duedate.duedate'),
model_name="coursesessionassignment",
name="evaluation_deadline",
field=models.OneToOneField(
null=True,
on_delete=django.db.models.deletion.CASCADE,
related_name="assignment_evaluation_deadline",
to="duedate.duedate",
),
),
migrations.AddField(
model_name='coursesessionassignment',
name='learning_content',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='learnpath.learningcontentassignment'),
model_name="coursesessionassignment",
name="learning_content",
field=models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE,
to="learnpath.learningcontentassignment",
),
),
migrations.AddField(
model_name='coursesessionassignment',
name='submission_deadline',
field=models.OneToOneField(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='assignment_submission_deadline', to='duedate.duedate'),
model_name="coursesessionassignment",
name="submission_deadline",
field=models.OneToOneField(
null=True,
on_delete=django.db.models.deletion.CASCADE,
related_name="assignment_submission_deadline",
to="duedate.duedate",
),
),
]

View File

@ -1,7 +1,7 @@
# Generated by Django 3.2.13 on 2023-07-14 12:28
from django.db import migrations, models
import django.db.models.deletion
from django.db import migrations, models
class Migration(migrations.Migration):
@ -9,23 +9,52 @@ class Migration(migrations.Migration):
initial = True
dependencies = [
('course', '0001_initial'),
('wagtailcore', '0083_workflowcontenttype'),
("course", "0001_initial"),
("wagtailcore", "0083_workflowcontenttype"),
]
operations = [
migrations.CreateModel(
name='DueDate',
name="DueDate",
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('start', models.DateTimeField(db_index=True, null=True)),
('end', models.DateTimeField(blank=True, db_index=True, null=True)),
('title', models.CharField(default='', max_length=1024)),
('learning_content_description', models.CharField(blank=True, default='', max_length=1024)),
('description', models.CharField(blank=True, default='', max_length=1024)),
('url', models.CharField(blank=True, default='', max_length=1024)),
('course_session', models.ForeignKey(blank=True, on_delete=django.db.models.deletion.CASCADE, to='course.coursesession')),
('page', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='wagtailcore.page')),
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
("start", models.DateTimeField(db_index=True, null=True)),
("end", models.DateTimeField(blank=True, db_index=True, null=True)),
("title", models.CharField(default="", max_length=1024)),
(
"learning_content_description",
models.CharField(blank=True, default="", max_length=1024),
),
(
"description",
models.CharField(blank=True, default="", max_length=1024),
),
("url", models.CharField(blank=True, default="", max_length=1024)),
(
"course_session",
models.ForeignKey(
blank=True,
on_delete=django.db.models.deletion.CASCADE,
to="course.coursesession",
),
),
(
"page",
models.ForeignKey(
blank=True,
null=True,
on_delete=django.db.models.deletion.SET_NULL,
to="wagtailcore.page",
),
),
],
),
]

View File

@ -1,23 +1,31 @@
# Generated by Django 3.2.13 on 2023-07-14 12:28
from django.db import migrations, models
import uuid
from django.db import migrations, models
class Migration(migrations.Migration):
initial = True
dependencies = [
]
dependencies = []
operations = [
migrations.CreateModel(
name='FeedbackResponse',
name="FeedbackResponse",
fields=[
('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
('data', models.JSONField(default=dict)),
('created_at', models.DateTimeField(auto_now_add=True)),
(
"id",
models.UUIDField(
default=uuid.uuid4,
editable=False,
primary_key=True,
serialize=False,
),
),
("data", models.JSONField(default=dict)),
("created_at", models.DateTimeField(auto_now_add=True)),
],
),
]

View File

@ -1,7 +1,7 @@
# Generated by Django 3.2.13 on 2023-07-14 12:28
from django.db import migrations, models
import django.db.models.deletion
from django.db import migrations, models
class Migration(migrations.Migration):
@ -9,20 +9,24 @@ class Migration(migrations.Migration):
initial = True
dependencies = [
('feedback', '0001_initial'),
('course', '0001_initial'),
('learnpath', '0001_initial'),
("feedback", "0001_initial"),
("course", "0001_initial"),
("learnpath", "0001_initial"),
]
operations = [
migrations.AddField(
model_name='feedbackresponse',
name='circle',
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='learnpath.circle'),
model_name="feedbackresponse",
name="circle",
field=models.ForeignKey(
on_delete=django.db.models.deletion.PROTECT, to="learnpath.circle"
),
),
migrations.AddField(
model_name='feedbackresponse',
name='course_session',
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='course.coursesession'),
model_name="feedbackresponse",
name="course_session",
field=models.ForeignKey(
on_delete=django.db.models.deletion.PROTECT, to="course.coursesession"
),
),
]

View File

@ -1,9 +1,11 @@
# Generated by Django 3.2.13 on 2023-07-14 12:28
import uuid
import django.db.models.deletion
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
import uuid
import vbv_lernwelt.files.utils
@ -17,15 +19,37 @@ class Migration(migrations.Migration):
operations = [
migrations.CreateModel(
name='UploadFile',
name="UploadFile",
fields=[
('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
('file', models.FileField(blank=True, null=True, upload_to=vbv_lernwelt.files.utils.file_generate_upload_path)),
('original_file_name', models.TextField()),
('file_name', models.CharField(max_length=255, unique=True)),
('file_type', models.CharField(max_length=255)),
('upload_finished_at', models.DateTimeField(blank=True, null=True)),
('uploaded_by', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL)),
(
"id",
models.UUIDField(
default=uuid.uuid4,
editable=False,
primary_key=True,
serialize=False,
),
),
(
"file",
models.FileField(
blank=True,
null=True,
upload_to=vbv_lernwelt.files.utils.file_generate_upload_path,
),
),
("original_file_name", models.TextField()),
("file_name", models.CharField(max_length=255, unique=True)),
("file_type", models.CharField(max_length=255)),
("upload_finished_at", models.DateTimeField(blank=True, null=True)),
(
"uploaded_by",
models.ForeignKey(
null=True,
on_delete=django.db.models.deletion.SET_NULL,
to=settings.AUTH_USER_MODEL,
),
),
],
),
]

View File

@ -1,9 +1,9 @@
# Generated by Django 3.2.13 on 2023-07-14 12:28
from django.db import migrations, models
import django.db.models.deletion
import wagtail.blocks
import wagtail.fields
from django.db import migrations, models
class Migration(migrations.Migration):
@ -11,221 +11,470 @@ class Migration(migrations.Migration):
initial = True
dependencies = [
('assignment', '0003_initial'),
('course', '0001_initial'),
('wagtailcore', '0083_workflowcontenttype'),
("assignment", "0003_initial"),
("course", "0001_initial"),
("wagtailcore", "0083_workflowcontenttype"),
]
operations = [
migrations.CreateModel(
name='Circle',
name="Circle",
fields=[
('page_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='wagtailcore.page')),
('description', models.TextField(blank=True, default='')),
('goals', wagtail.fields.RichTextField()),
(
"page_ptr",
models.OneToOneField(
auto_created=True,
on_delete=django.db.models.deletion.CASCADE,
parent_link=True,
primary_key=True,
serialize=False,
to="wagtailcore.page",
),
),
("description", models.TextField(blank=True, default="")),
("goals", wagtail.fields.RichTextField()),
],
options={
'verbose_name': 'Circle',
"verbose_name": "Circle",
},
bases=('wagtailcore.page',),
bases=("wagtailcore.page",),
),
migrations.CreateModel(
name='LearningContentAttendanceCourse',
name="LearningContentAttendanceCourse",
fields=[
('page_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='wagtailcore.page')),
('minutes', models.PositiveIntegerField(default=15)),
('description', wagtail.fields.RichTextField(blank=True)),
('content_url', models.TextField(blank=True)),
('has_course_completion_status', models.BooleanField(default=True)),
('can_user_self_toggle_course_completion', models.BooleanField(default=False)),
(
"page_ptr",
models.OneToOneField(
auto_created=True,
on_delete=django.db.models.deletion.CASCADE,
parent_link=True,
primary_key=True,
serialize=False,
to="wagtailcore.page",
),
),
("minutes", models.PositiveIntegerField(default=15)),
("description", wagtail.fields.RichTextField(blank=True)),
("content_url", models.TextField(blank=True)),
("has_course_completion_status", models.BooleanField(default=True)),
(
"can_user_self_toggle_course_completion",
models.BooleanField(default=False),
),
],
options={
'abstract': False,
"abstract": False,
},
bases=('wagtailcore.page',),
bases=("wagtailcore.page",),
),
migrations.CreateModel(
name='LearningContentDocumentList',
name="LearningContentDocumentList",
fields=[
('page_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='wagtailcore.page')),
('minutes', models.PositiveIntegerField(default=15)),
('description', wagtail.fields.RichTextField(blank=True)),
('content_url', models.TextField(blank=True)),
('has_course_completion_status', models.BooleanField(default=True)),
('can_user_self_toggle_course_completion', models.BooleanField(default=True)),
('documents', wagtail.fields.StreamField([('document', wagtail.blocks.StructBlock([('title', wagtail.blocks.TextBlock()), ('description', wagtail.blocks.TextBlock(default='', required=False)), ('icon_url', wagtail.blocks.TextBlock(default='', required=False)), ('link_display_text', wagtail.blocks.CharBlock(default='Link öffnen', max_length=255)), ('url', wagtail.blocks.TextBlock(default='', required=False)), ('open_window', wagtail.blocks.BooleanBlock(default=False))]))], blank=True, use_json_field=True)),
],
options={
'abstract': False,
},
bases=('wagtailcore.page',),
(
"page_ptr",
models.OneToOneField(
auto_created=True,
on_delete=django.db.models.deletion.CASCADE,
parent_link=True,
primary_key=True,
serialize=False,
to="wagtailcore.page",
),
migrations.CreateModel(
name='LearningContentFeedback',
fields=[
('page_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='wagtailcore.page')),
('minutes', models.PositiveIntegerField(default=15)),
('description', wagtail.fields.RichTextField(blank=True)),
('content_url', models.TextField(blank=True)),
('has_course_completion_status', models.BooleanField(default=True)),
('can_user_self_toggle_course_completion', models.BooleanField(default=True)),
],
options={
'abstract': False,
},
bases=('wagtailcore.page',),
),
migrations.CreateModel(
name='LearningContentLearningModule',
fields=[
('page_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='wagtailcore.page')),
('minutes', models.PositiveIntegerField(default=15)),
('description', wagtail.fields.RichTextField(blank=True)),
('content_url', models.TextField(blank=True)),
('has_course_completion_status', models.BooleanField(default=True)),
('can_user_self_toggle_course_completion', models.BooleanField(default=True)),
],
options={
'abstract': False,
},
bases=('wagtailcore.page',),
("minutes", models.PositiveIntegerField(default=15)),
("description", wagtail.fields.RichTextField(blank=True)),
("content_url", models.TextField(blank=True)),
("has_course_completion_status", models.BooleanField(default=True)),
(
"can_user_self_toggle_course_completion",
models.BooleanField(default=True),
),
migrations.CreateModel(
name='LearningContentMediaLibrary',
fields=[
('page_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='wagtailcore.page')),
('minutes', models.PositiveIntegerField(default=15)),
('description', wagtail.fields.RichTextField(blank=True)),
('content_url', models.TextField(blank=True)),
('has_course_completion_status', models.BooleanField(default=True)),
('can_user_self_toggle_course_completion', models.BooleanField(default=True)),
],
options={
'abstract': False,
},
bases=('wagtailcore.page',),
(
"documents",
wagtail.fields.StreamField(
[
(
"document",
wagtail.blocks.StructBlock(
[
("title", wagtail.blocks.TextBlock()),
(
"description",
wagtail.blocks.TextBlock(
default="", required=False
),
migrations.CreateModel(
name='LearningContentPlaceholder',
fields=[
('page_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='wagtailcore.page')),
('minutes', models.PositiveIntegerField(default=15)),
('description', wagtail.fields.RichTextField(blank=True)),
('content_url', models.TextField(blank=True)),
('has_course_completion_status', models.BooleanField(default=True)),
('can_user_self_toggle_course_completion', models.BooleanField(default=True)),
],
options={
'abstract': False,
},
bases=('wagtailcore.page',),
),
migrations.CreateModel(
name='LearningContentRichText',
fields=[
('page_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='wagtailcore.page')),
('minutes', models.PositiveIntegerField(default=15)),
('description', wagtail.fields.RichTextField(blank=True)),
('content_url', models.TextField(blank=True)),
('has_course_completion_status', models.BooleanField(default=True)),
('text', wagtail.fields.RichTextField(blank=True)),
('can_user_self_toggle_course_completion', models.BooleanField(default=True)),
],
options={
'abstract': False,
},
bases=('wagtailcore.page',),
(
"icon_url",
wagtail.blocks.TextBlock(
default="", required=False
),
migrations.CreateModel(
name='LearningContentTest',
fields=[
('page_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='wagtailcore.page')),
('minutes', models.PositiveIntegerField(default=15)),
('description', wagtail.fields.RichTextField(blank=True)),
('content_url', models.TextField(blank=True)),
('has_course_completion_status', models.BooleanField(default=True)),
('can_user_self_toggle_course_completion', models.BooleanField(default=False)),
('checkbox_text', models.TextField(blank=True)),
],
options={
'abstract': False,
},
bases=('wagtailcore.page',),
),
migrations.CreateModel(
name='LearningContentVideo',
fields=[
('page_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='wagtailcore.page')),
('minutes', models.PositiveIntegerField(default=15)),
('description', wagtail.fields.RichTextField(blank=True)),
('content_url', models.TextField(blank=True)),
('has_course_completion_status', models.BooleanField(default=True)),
('can_user_self_toggle_course_completion', models.BooleanField(default=True)),
],
options={
'abstract': False,
},
bases=('wagtailcore.page',),
(
"link_display_text",
wagtail.blocks.CharBlock(
default="Link öffnen", max_length=255
),
migrations.CreateModel(
name='LearningPath',
fields=[
('page_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='wagtailcore.page')),
],
options={
'verbose_name': 'Learning Path',
},
bases=('wagtailcore.page',),
),
migrations.CreateModel(
name='LearningSequence',
fields=[
('page_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='wagtailcore.page')),
('icon', models.CharField(default='it-icon-ls-start', max_length=255)),
],
options={
'verbose_name': 'Learning Sequence',
},
bases=('wagtailcore.page',),
(
"url",
wagtail.blocks.TextBlock(
default="", required=False
),
migrations.CreateModel(
name='Topic',
fields=[
('page_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='wagtailcore.page')),
('is_visible', models.BooleanField(default=True)),
],
options={
'verbose_name': 'Topic',
},
bases=('wagtailcore.page',),
),
migrations.CreateModel(
name='LearningUnit',
fields=[
('page_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='wagtailcore.page')),
('title_hidden', models.BooleanField(default=False)),
('course_category', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='course.coursecategory')),
],
options={
'verbose_name': 'Learning Unit',
},
bases=('wagtailcore.page',),
),
migrations.CreateModel(
name='LearningContentAssignment',
fields=[
('page_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='wagtailcore.page')),
('minutes', models.PositiveIntegerField(default=15)),
('description', wagtail.fields.RichTextField(blank=True)),
('content_url', models.TextField(blank=True)),
('has_course_completion_status', models.BooleanField(default=True)),
('can_user_self_toggle_course_completion', models.BooleanField(default=False)),
('assignment_type', models.CharField(choices=[('CASEWORK', 'CASEWORK'), ('PREP_ASSIGNMENT', 'PREP_ASSIGNMENT'), ('REFLECTION', 'REFLECTION')], default='CASEWORK', max_length=50)),
('content_assignment', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='assignment.assignment')),
],
options={
'abstract': False,
},
bases=('wagtailcore.page',),
(
"open_window",
wagtail.blocks.BooleanBlock(default=False),
),
]
),
)
],
blank=True,
use_json_field=True,
),
),
],
options={
"abstract": False,
},
bases=("wagtailcore.page",),
),
migrations.CreateModel(
name="LearningContentFeedback",
fields=[
(
"page_ptr",
models.OneToOneField(
auto_created=True,
on_delete=django.db.models.deletion.CASCADE,
parent_link=True,
primary_key=True,
serialize=False,
to="wagtailcore.page",
),
),
("minutes", models.PositiveIntegerField(default=15)),
("description", wagtail.fields.RichTextField(blank=True)),
("content_url", models.TextField(blank=True)),
("has_course_completion_status", models.BooleanField(default=True)),
(
"can_user_self_toggle_course_completion",
models.BooleanField(default=True),
),
],
options={
"abstract": False,
},
bases=("wagtailcore.page",),
),
migrations.CreateModel(
name="LearningContentLearningModule",
fields=[
(
"page_ptr",
models.OneToOneField(
auto_created=True,
on_delete=django.db.models.deletion.CASCADE,
parent_link=True,
primary_key=True,
serialize=False,
to="wagtailcore.page",
),
),
("minutes", models.PositiveIntegerField(default=15)),
("description", wagtail.fields.RichTextField(blank=True)),
("content_url", models.TextField(blank=True)),
("has_course_completion_status", models.BooleanField(default=True)),
(
"can_user_self_toggle_course_completion",
models.BooleanField(default=True),
),
],
options={
"abstract": False,
},
bases=("wagtailcore.page",),
),
migrations.CreateModel(
name="LearningContentMediaLibrary",
fields=[
(
"page_ptr",
models.OneToOneField(
auto_created=True,
on_delete=django.db.models.deletion.CASCADE,
parent_link=True,
primary_key=True,
serialize=False,
to="wagtailcore.page",
),
),
("minutes", models.PositiveIntegerField(default=15)),
("description", wagtail.fields.RichTextField(blank=True)),
("content_url", models.TextField(blank=True)),
("has_course_completion_status", models.BooleanField(default=True)),
(
"can_user_self_toggle_course_completion",
models.BooleanField(default=True),
),
],
options={
"abstract": False,
},
bases=("wagtailcore.page",),
),
migrations.CreateModel(
name="LearningContentPlaceholder",
fields=[
(
"page_ptr",
models.OneToOneField(
auto_created=True,
on_delete=django.db.models.deletion.CASCADE,
parent_link=True,
primary_key=True,
serialize=False,
to="wagtailcore.page",
),
),
("minutes", models.PositiveIntegerField(default=15)),
("description", wagtail.fields.RichTextField(blank=True)),
("content_url", models.TextField(blank=True)),
("has_course_completion_status", models.BooleanField(default=True)),
(
"can_user_self_toggle_course_completion",
models.BooleanField(default=True),
),
],
options={
"abstract": False,
},
bases=("wagtailcore.page",),
),
migrations.CreateModel(
name="LearningContentRichText",
fields=[
(
"page_ptr",
models.OneToOneField(
auto_created=True,
on_delete=django.db.models.deletion.CASCADE,
parent_link=True,
primary_key=True,
serialize=False,
to="wagtailcore.page",
),
),
("minutes", models.PositiveIntegerField(default=15)),
("description", wagtail.fields.RichTextField(blank=True)),
("content_url", models.TextField(blank=True)),
("has_course_completion_status", models.BooleanField(default=True)),
("text", wagtail.fields.RichTextField(blank=True)),
(
"can_user_self_toggle_course_completion",
models.BooleanField(default=True),
),
],
options={
"abstract": False,
},
bases=("wagtailcore.page",),
),
migrations.CreateModel(
name="LearningContentTest",
fields=[
(
"page_ptr",
models.OneToOneField(
auto_created=True,
on_delete=django.db.models.deletion.CASCADE,
parent_link=True,
primary_key=True,
serialize=False,
to="wagtailcore.page",
),
),
("minutes", models.PositiveIntegerField(default=15)),
("description", wagtail.fields.RichTextField(blank=True)),
("content_url", models.TextField(blank=True)),
("has_course_completion_status", models.BooleanField(default=True)),
(
"can_user_self_toggle_course_completion",
models.BooleanField(default=False),
),
("checkbox_text", models.TextField(blank=True)),
],
options={
"abstract": False,
},
bases=("wagtailcore.page",),
),
migrations.CreateModel(
name="LearningContentVideo",
fields=[
(
"page_ptr",
models.OneToOneField(
auto_created=True,
on_delete=django.db.models.deletion.CASCADE,
parent_link=True,
primary_key=True,
serialize=False,
to="wagtailcore.page",
),
),
("minutes", models.PositiveIntegerField(default=15)),
("description", wagtail.fields.RichTextField(blank=True)),
("content_url", models.TextField(blank=True)),
("has_course_completion_status", models.BooleanField(default=True)),
(
"can_user_self_toggle_course_completion",
models.BooleanField(default=True),
),
],
options={
"abstract": False,
},
bases=("wagtailcore.page",),
),
migrations.CreateModel(
name="LearningPath",
fields=[
(
"page_ptr",
models.OneToOneField(
auto_created=True,
on_delete=django.db.models.deletion.CASCADE,
parent_link=True,
primary_key=True,
serialize=False,
to="wagtailcore.page",
),
),
],
options={
"verbose_name": "Learning Path",
},
bases=("wagtailcore.page",),
),
migrations.CreateModel(
name="LearningSequence",
fields=[
(
"page_ptr",
models.OneToOneField(
auto_created=True,
on_delete=django.db.models.deletion.CASCADE,
parent_link=True,
primary_key=True,
serialize=False,
to="wagtailcore.page",
),
),
("icon", models.CharField(default="it-icon-ls-start", max_length=255)),
],
options={
"verbose_name": "Learning Sequence",
},
bases=("wagtailcore.page",),
),
migrations.CreateModel(
name="Topic",
fields=[
(
"page_ptr",
models.OneToOneField(
auto_created=True,
on_delete=django.db.models.deletion.CASCADE,
parent_link=True,
primary_key=True,
serialize=False,
to="wagtailcore.page",
),
),
("is_visible", models.BooleanField(default=True)),
],
options={
"verbose_name": "Topic",
},
bases=("wagtailcore.page",),
),
migrations.CreateModel(
name="LearningUnit",
fields=[
(
"page_ptr",
models.OneToOneField(
auto_created=True,
on_delete=django.db.models.deletion.CASCADE,
parent_link=True,
primary_key=True,
serialize=False,
to="wagtailcore.page",
),
),
("title_hidden", models.BooleanField(default=False)),
(
"course_category",
models.ForeignKey(
blank=True,
null=True,
on_delete=django.db.models.deletion.SET_NULL,
to="course.coursecategory",
),
),
],
options={
"verbose_name": "Learning Unit",
},
bases=("wagtailcore.page",),
),
migrations.CreateModel(
name="LearningContentAssignment",
fields=[
(
"page_ptr",
models.OneToOneField(
auto_created=True,
on_delete=django.db.models.deletion.CASCADE,
parent_link=True,
primary_key=True,
serialize=False,
to="wagtailcore.page",
),
),
("minutes", models.PositiveIntegerField(default=15)),
("description", wagtail.fields.RichTextField(blank=True)),
("content_url", models.TextField(blank=True)),
("has_course_completion_status", models.BooleanField(default=True)),
(
"can_user_self_toggle_course_completion",
models.BooleanField(default=False),
),
(
"assignment_type",
models.CharField(
choices=[
("CASEWORK", "CASEWORK"),
("PREP_ASSIGNMENT", "PREP_ASSIGNMENT"),
("REFLECTION", "REFLECTION"),
],
default="CASEWORK",
max_length=50,
),
),
(
"content_assignment",
models.ForeignKey(
on_delete=django.db.models.deletion.PROTECT,
to="assignment.assignment",
),
),
],
options={
"abstract": False,
},
bases=("wagtailcore.page",),
),
]

View File

@ -1,13 +1,13 @@
# Generated by Django 3.2.13 on 2023-07-14 12:28
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
import taggit.managers
import wagtail.blocks
import wagtail.fields
import wagtail.models.collections
import wagtail.search.index
from django.conf import settings
from django.db import migrations, models
class Migration(migrations.Migration):
@ -15,62 +15,357 @@ class Migration(migrations.Migration):
initial = True
dependencies = [
('course', '0002_initial'),
("course", "0002_initial"),
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('taggit', '0004_alter_taggeditem_content_type_alter_taggeditem_tag'),
('wagtailcore', '0083_workflowcontenttype'),
("taggit", "0004_alter_taggeditem_content_type_alter_taggeditem_tag"),
("wagtailcore", "0083_workflowcontenttype"),
]
operations = [
migrations.CreateModel(
name='MediaLibraryPage',
name="MediaLibraryPage",
fields=[
('page_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='wagtailcore.page')),
(
"page_ptr",
models.OneToOneField(
auto_created=True,
on_delete=django.db.models.deletion.CASCADE,
parent_link=True,
primary_key=True,
serialize=False,
to="wagtailcore.page",
),
),
],
options={
'abstract': False,
"abstract": False,
},
bases=('wagtailcore.page',),
bases=("wagtailcore.page",),
),
migrations.CreateModel(
name='MediaCategoryPage',
name="MediaCategoryPage",
fields=[
('page_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='wagtailcore.page')),
('introduction_text', models.TextField(default='')),
('description_title', models.TextField(default='Das erwartet dich in diesem Handlungsfeld')),
('description_text', models.TextField(default='')),
('items', wagtail.fields.StreamField([('item', wagtail.blocks.TextBlock())], use_json_field=True)),
('overview_icon', models.CharField(default='icon-hf-fahrzeug', max_length=255)),
('detail_image', models.CharField(default='image-hf-fahrzeug', max_length=255)),
('body', wagtail.fields.StreamField([('content_collection', wagtail.blocks.StructBlock([('title', wagtail.blocks.TextBlock()), ('description', wagtail.blocks.TextBlock(default='', required=False)), ('contents', wagtail.blocks.StreamBlock([('learn_media', wagtail.blocks.StructBlock([('title', wagtail.blocks.TextBlock()), ('description', wagtail.blocks.TextBlock(default='', required=False)), ('icon_url', wagtail.blocks.TextBlock(default='', required=False)), ('link_display_text', wagtail.blocks.CharBlock(default='Link öffnen', max_length=255)), ('url', wagtail.blocks.TextBlock(default='', required=False)), ('open_window', wagtail.blocks.BooleanBlock(default=False))])), ('external_link', wagtail.blocks.StructBlock([('title', wagtail.blocks.TextBlock()), ('description', wagtail.blocks.TextBlock(default='', required=False)), ('icon_url', wagtail.blocks.TextBlock(default='', required=False)), ('link_display_text', wagtail.blocks.CharBlock(default='Link öffnen', max_length=255)), ('url', wagtail.blocks.TextBlock(default='', required=False)), ('open_window', wagtail.blocks.BooleanBlock(default=False))])), ('internal_link', wagtail.blocks.StructBlock([('title', wagtail.blocks.TextBlock()), ('description', wagtail.blocks.TextBlock(default='', required=False)), ('icon_url', wagtail.blocks.TextBlock(default='', required=False)), ('link_display_text', wagtail.blocks.CharBlock(default='Link öffnen', max_length=255)), ('url', wagtail.blocks.TextBlock(default='', required=False)), ('open_window', wagtail.blocks.BooleanBlock(default=False))])), ('relative_link', wagtail.blocks.StructBlock([('title', wagtail.blocks.TextBlock()), ('description', wagtail.blocks.TextBlock(default='', required=False)), ('icon_url', wagtail.blocks.TextBlock(default='', required=False)), ('link_display_text', wagtail.blocks.CharBlock(default='Link öffnen', max_length=255)), ('url', wagtail.blocks.TextBlock(default='', required=False)), ('open_window', wagtail.blocks.BooleanBlock(default=False))]))]))]))], null=True, use_json_field=True)),
('course_category', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='course.coursecategory')),
(
"page_ptr",
models.OneToOneField(
auto_created=True,
on_delete=django.db.models.deletion.CASCADE,
parent_link=True,
primary_key=True,
serialize=False,
to="wagtailcore.page",
),
),
("introduction_text", models.TextField(default="")),
(
"description_title",
models.TextField(
default="Das erwartet dich in diesem Handlungsfeld"
),
),
("description_text", models.TextField(default="")),
(
"items",
wagtail.fields.StreamField(
[("item", wagtail.blocks.TextBlock())], use_json_field=True
),
),
(
"overview_icon",
models.CharField(default="icon-hf-fahrzeug", max_length=255),
),
(
"detail_image",
models.CharField(default="image-hf-fahrzeug", max_length=255),
),
(
"body",
wagtail.fields.StreamField(
[
(
"content_collection",
wagtail.blocks.StructBlock(
[
("title", wagtail.blocks.TextBlock()),
(
"description",
wagtail.blocks.TextBlock(
default="", required=False
),
),
(
"contents",
wagtail.blocks.StreamBlock(
[
(
"learn_media",
wagtail.blocks.StructBlock(
[
(
"title",
wagtail.blocks.TextBlock(),
),
(
"description",
wagtail.blocks.TextBlock(
default="",
required=False,
),
),
(
"icon_url",
wagtail.blocks.TextBlock(
default="",
required=False,
),
),
(
"link_display_text",
wagtail.blocks.CharBlock(
default="Link öffnen",
max_length=255,
),
),
(
"url",
wagtail.blocks.TextBlock(
default="",
required=False,
),
),
(
"open_window",
wagtail.blocks.BooleanBlock(
default=False
),
),
]
),
),
(
"external_link",
wagtail.blocks.StructBlock(
[
(
"title",
wagtail.blocks.TextBlock(),
),
(
"description",
wagtail.blocks.TextBlock(
default="",
required=False,
),
),
(
"icon_url",
wagtail.blocks.TextBlock(
default="",
required=False,
),
),
(
"link_display_text",
wagtail.blocks.CharBlock(
default="Link öffnen",
max_length=255,
),
),
(
"url",
wagtail.blocks.TextBlock(
default="",
required=False,
),
),
(
"open_window",
wagtail.blocks.BooleanBlock(
default=False
),
),
]
),
),
(
"internal_link",
wagtail.blocks.StructBlock(
[
(
"title",
wagtail.blocks.TextBlock(),
),
(
"description",
wagtail.blocks.TextBlock(
default="",
required=False,
),
),
(
"icon_url",
wagtail.blocks.TextBlock(
default="",
required=False,
),
),
(
"link_display_text",
wagtail.blocks.CharBlock(
default="Link öffnen",
max_length=255,
),
),
(
"url",
wagtail.blocks.TextBlock(
default="",
required=False,
),
),
(
"open_window",
wagtail.blocks.BooleanBlock(
default=False
),
),
]
),
),
(
"relative_link",
wagtail.blocks.StructBlock(
[
(
"title",
wagtail.blocks.TextBlock(),
),
(
"description",
wagtail.blocks.TextBlock(
default="",
required=False,
),
),
(
"icon_url",
wagtail.blocks.TextBlock(
default="",
required=False,
),
),
(
"link_display_text",
wagtail.blocks.CharBlock(
default="Link öffnen",
max_length=255,
),
),
(
"url",
wagtail.blocks.TextBlock(
default="",
required=False,
),
),
(
"open_window",
wagtail.blocks.BooleanBlock(
default=False
),
),
]
),
),
]
),
),
]
),
)
],
null=True,
use_json_field=True,
),
),
(
"course_category",
models.ForeignKey(
blank=True,
null=True,
on_delete=django.db.models.deletion.SET_NULL,
to="course.coursecategory",
),
),
],
options={
'abstract': False,
"abstract": False,
},
bases=('wagtailcore.page',),
bases=("wagtailcore.page",),
),
migrations.CreateModel(
name='LibraryDocument',
name="LibraryDocument",
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('title', models.CharField(max_length=255, verbose_name='title')),
('file', models.FileField(upload_to='documents', verbose_name='file')),
('created_at', models.DateTimeField(auto_now_add=True, verbose_name='created at')),
('file_size', models.PositiveIntegerField(editable=False, null=True)),
('file_hash', models.CharField(blank=True, editable=False, max_length=40)),
('display_text', models.CharField(default='', max_length=1024)),
('description', models.TextField(default='')),
('link_display_text', models.CharField(default='', max_length=1024)),
('thumbnail', models.URLField()),
('collection', models.ForeignKey(default=wagtail.models.collections.get_root_collection_id, on_delete=django.db.models.deletion.CASCADE, related_name='+', to='wagtailcore.collection', verbose_name='collection')),
('tags', taggit.managers.TaggableManager(blank=True, help_text=None, through='taggit.TaggedItem', to='taggit.Tag', verbose_name='tags')),
('uploaded_by_user', models.ForeignKey(blank=True, editable=False, null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL, verbose_name='uploaded by user')),
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
("title", models.CharField(max_length=255, verbose_name="title")),
("file", models.FileField(upload_to="documents", verbose_name="file")),
(
"created_at",
models.DateTimeField(auto_now_add=True, verbose_name="created at"),
),
("file_size", models.PositiveIntegerField(editable=False, null=True)),
(
"file_hash",
models.CharField(blank=True, editable=False, max_length=40),
),
("display_text", models.CharField(default="", max_length=1024)),
("description", models.TextField(default="")),
("link_display_text", models.CharField(default="", max_length=1024)),
("thumbnail", models.URLField()),
(
"collection",
models.ForeignKey(
default=wagtail.models.collections.get_root_collection_id,
on_delete=django.db.models.deletion.CASCADE,
related_name="+",
to="wagtailcore.collection",
verbose_name="collection",
),
),
(
"tags",
taggit.managers.TaggableManager(
blank=True,
help_text=None,
through="taggit.TaggedItem",
to="taggit.Tag",
verbose_name="tags",
),
),
(
"uploaded_by_user",
models.ForeignKey(
blank=True,
editable=False,
null=True,
on_delete=django.db.models.deletion.SET_NULL,
to=settings.AUTH_USER_MODEL,
verbose_name="uploaded by user",
),
),
],
options={
'verbose_name': 'document',
'verbose_name_plural': 'documents',
'abstract': False,
"verbose_name": "document",
"verbose_name_plural": "documents",
"abstract": False,
},
bases=(wagtail.search.index.Indexed, models.Model),
),

View File

@ -1,10 +1,10 @@
# Generated by Django 3.2.13 on 2023-07-14 13:08
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
import django.utils.timezone
import jsonfield.fields
from django.conf import settings
from django.db import migrations, models
class Migration(migrations.Migration):
@ -13,41 +13,163 @@ class Migration(migrations.Migration):
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('contenttypes', '0002_remove_content_type_name'),
("contenttypes", "0002_remove_content_type_name"),
]
operations = [
migrations.CreateModel(
name='Notification',
name="Notification",
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('level', models.CharField(choices=[('success', 'success'), ('info', 'info'), ('warning', 'warning'), ('error', 'error')], default='info', max_length=20, verbose_name='level')),
('unread', models.BooleanField(db_index=True, default=True, verbose_name='unread')),
('actor_object_id', models.CharField(max_length=255, verbose_name='actor object id')),
('verb', models.CharField(max_length=255, verbose_name='verb')),
('description', models.TextField(blank=True, null=True, verbose_name='description')),
('target_object_id', models.CharField(blank=True, max_length=255, null=True, verbose_name='target object id')),
('action_object_object_id', models.CharField(blank=True, max_length=255, null=True, verbose_name='action object object id')),
('timestamp', models.DateTimeField(db_index=True, default=django.utils.timezone.now, verbose_name='timestamp')),
('public', models.BooleanField(db_index=True, default=True, verbose_name='public')),
('deleted', models.BooleanField(db_index=True, default=False, verbose_name='deleted')),
('emailed', models.BooleanField(db_index=True, default=False, verbose_name='emailed')),
('data', jsonfield.fields.JSONField(blank=True, null=True, verbose_name='data')),
('notification_type', models.CharField(choices=[('USER_INTERACTION', 'User Interaction'), ('PROGRESS', 'Progress'), ('INFORMATION', 'Information')], default='INFORMATION', max_length=32)),
('target_url', models.URLField(blank=True, null=True)),
('actor_avatar_url', models.URLField(blank=True, null=True)),
('course', models.CharField(blank=True, max_length=32, null=True)),
('action_object_content_type', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='notify_action_object', to='contenttypes.contenttype', verbose_name='action object content type')),
('actor_content_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='notify_actor', to='contenttypes.contenttype', verbose_name='actor content type')),
('recipient', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='notifications', to=settings.AUTH_USER_MODEL, verbose_name='recipient')),
('target_content_type', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='notify_target', to='contenttypes.contenttype', verbose_name='target content type')),
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
(
"level",
models.CharField(
choices=[
("success", "success"),
("info", "info"),
("warning", "warning"),
("error", "error"),
],
default="info",
max_length=20,
verbose_name="level",
),
),
(
"unread",
models.BooleanField(
db_index=True, default=True, verbose_name="unread"
),
),
(
"actor_object_id",
models.CharField(max_length=255, verbose_name="actor object id"),
),
("verb", models.CharField(max_length=255, verbose_name="verb")),
(
"description",
models.TextField(blank=True, null=True, verbose_name="description"),
),
(
"target_object_id",
models.CharField(
blank=True,
max_length=255,
null=True,
verbose_name="target object id",
),
),
(
"action_object_object_id",
models.CharField(
blank=True,
max_length=255,
null=True,
verbose_name="action object object id",
),
),
(
"timestamp",
models.DateTimeField(
db_index=True,
default=django.utils.timezone.now,
verbose_name="timestamp",
),
),
(
"public",
models.BooleanField(
db_index=True, default=True, verbose_name="public"
),
),
(
"deleted",
models.BooleanField(
db_index=True, default=False, verbose_name="deleted"
),
),
(
"emailed",
models.BooleanField(
db_index=True, default=False, verbose_name="emailed"
),
),
(
"data",
jsonfield.fields.JSONField(
blank=True, null=True, verbose_name="data"
),
),
(
"notification_type",
models.CharField(
choices=[
("USER_INTERACTION", "User Interaction"),
("PROGRESS", "Progress"),
("INFORMATION", "Information"),
],
default="INFORMATION",
max_length=32,
),
),
("target_url", models.URLField(blank=True, null=True)),
("actor_avatar_url", models.URLField(blank=True, null=True)),
("course", models.CharField(blank=True, max_length=32, null=True)),
(
"action_object_content_type",
models.ForeignKey(
blank=True,
null=True,
on_delete=django.db.models.deletion.CASCADE,
related_name="notify_action_object",
to="contenttypes.contenttype",
verbose_name="action object content type",
),
),
(
"actor_content_type",
models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE,
related_name="notify_actor",
to="contenttypes.contenttype",
verbose_name="actor content type",
),
),
(
"recipient",
models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE,
related_name="notifications",
to=settings.AUTH_USER_MODEL,
verbose_name="recipient",
),
),
(
"target_content_type",
models.ForeignKey(
blank=True,
null=True,
on_delete=django.db.models.deletion.CASCADE,
related_name="notify_target",
to="contenttypes.contenttype",
verbose_name="target content type",
),
),
],
options={
'verbose_name': 'Notification',
'verbose_name_plural': 'Notifications',
'ordering': ['-timestamp'],
'abstract': False,
'index_together': {('recipient', 'unread')},
"verbose_name": "Notification",
"verbose_name_plural": "Notifications",
"ordering": ["-timestamp"],
"abstract": False,
"index_together": {("recipient", "unread")},
},
),
]