Improve course creation scripts to only create some courses
This commit is contained in:
parent
2263c82ce6
commit
a0c7dec316
|
|
@ -12,6 +12,11 @@ cd client && npm run dev
|
||||||
|
|
||||||
# reset db and run django dev server
|
# reset db and run django dev server
|
||||||
./prepare_server.sh
|
./prepare_server.sh
|
||||||
|
|
||||||
|
# if you only want to create some specific courses to speed up the script,
|
||||||
|
# you can use the '--courses' parameter
|
||||||
|
# see consts.py for available course ids
|
||||||
|
# ./prepare_server.sh --courses -3 -5
|
||||||
```
|
```
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
|
||||||
|
|
@ -17,26 +17,52 @@ set -e
|
||||||
# handle arguments
|
# handle arguments
|
||||||
SKIP_SETUP=false
|
SKIP_SETUP=false
|
||||||
START_BACKGROUND=false
|
START_BACKGROUND=false
|
||||||
|
courses=()
|
||||||
|
|
||||||
for i in "$@"
|
# Parse positional arguments
|
||||||
|
while [[ $# -gt 0 ]]
|
||||||
do
|
do
|
||||||
case $i in
|
key="$1"
|
||||||
--start-background)
|
|
||||||
START_BACKGROUND=true
|
case $key in
|
||||||
shift # past argument
|
-f|--file)
|
||||||
;;
|
shift
|
||||||
--skip-setup)
|
;;
|
||||||
SKIP_SETUP=true
|
--start-background)
|
||||||
shift # past argument with no value
|
START_BACKGROUND=true
|
||||||
;;
|
shift
|
||||||
*)
|
;;
|
||||||
# unknown option
|
--skip-setup)
|
||||||
;;
|
SKIP_SETUP=true
|
||||||
esac
|
shift
|
||||||
|
;;
|
||||||
|
--courses)
|
||||||
|
shift # Shift past the option
|
||||||
|
while [[ $# -gt 0 ]] && ! [[ $1 == "--"* ]]
|
||||||
|
do
|
||||||
|
courses+=("$1")
|
||||||
|
shift # Shift past the value
|
||||||
|
done
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Unknown option: $key"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
done
|
done
|
||||||
|
|
||||||
echo "SKIP_SETUP = ${SKIP_SETUP}"
|
echo "SKIP_SETUP = ${SKIP_SETUP}"
|
||||||
|
|
||||||
|
# Prepend "-c" to each item in courses
|
||||||
|
for i in "${!courses[@]}"
|
||||||
|
do
|
||||||
|
courses[$i]="-c ${courses[$i]}"
|
||||||
|
done
|
||||||
|
|
||||||
|
# Join the list with a space
|
||||||
|
IFS=' ' course_param="${courses[*]}"
|
||||||
|
echo "$course_param"
|
||||||
|
|
||||||
# migrate env vars to the built-in postgres variables
|
# migrate env vars to the built-in postgres variables
|
||||||
if [ -z ${PGDATABASE+x} ]; then # var is empty
|
if [ -z ${PGDATABASE+x} ]; then # var is empty
|
||||||
PGDATABASE=${POSTGRES_DB:-vbv_lernwelt};
|
PGDATABASE=${POSTGRES_DB:-vbv_lernwelt};
|
||||||
|
|
@ -68,7 +94,8 @@ if [ "$SKIP_SETUP" = false ]; then
|
||||||
python server/manage.py createcachetable
|
python server/manage.py createcachetable
|
||||||
python server/manage.py migrate
|
python server/manage.py migrate
|
||||||
python server/manage.py create_default_users
|
python server/manage.py create_default_users
|
||||||
python server/manage.py create_default_courses
|
echo "python server/manage.py create_default_courses $course_param"
|
||||||
|
python server/manage.py create_default_courses $course_param
|
||||||
python server/manage.py create_default_notifications
|
python server/manage.py create_default_notifications
|
||||||
|
|
||||||
# make django translations
|
# make django translations
|
||||||
|
|
@ -76,7 +103,7 @@ if [ "$SKIP_SETUP" = false ]; then
|
||||||
else
|
else
|
||||||
# TODO: can we reset important data without resetting the database?
|
# TODO: can we reset important data without resetting the database?
|
||||||
echo "Skip database setup"
|
echo "Skip database setup"
|
||||||
# python3 src/manage.py cypress_reset --settings="$DJANGO_SETTINGS_MODULE"
|
python server/manage.py cypress_reset
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$START_BACKGROUND" = true ]; then
|
if [ "$START_BACKGROUND" = true ]; then
|
||||||
|
|
|
||||||
|
|
@ -2,15 +2,15 @@ import wagtail_factories
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from wagtail.models import Site
|
from wagtail.models import Site
|
||||||
|
|
||||||
from vbv_lernwelt.course.consts import COURSE_VERSICHERUNGSVERMITTLERIN_OLD_ID
|
from vbv_lernwelt.course.consts import COURSE_VERSICHERUNGSVERMITTLERIN_ID
|
||||||
from vbv_lernwelt.course.factories import CoursePageFactory
|
from vbv_lernwelt.course.factories import CoursePageFactory
|
||||||
|
|
||||||
|
|
||||||
def create_versicherungsvermittlerin_with_categories(
|
def create_versicherungsvermittlerin_with_categories(
|
||||||
apps=None,
|
apps=None,
|
||||||
schema_editor=None,
|
schema_editor=None,
|
||||||
course_id=COURSE_VERSICHERUNGSVERMITTLERIN_OLD_ID,
|
course_id=COURSE_VERSICHERUNGSVERMITTLERIN_ID,
|
||||||
title="Versicherungsvermittler/-in (alt)",
|
title="Versicherungsvermittler/-in",
|
||||||
):
|
):
|
||||||
if apps is not None:
|
if apps is not None:
|
||||||
Course = apps.get_model("course", "Course")
|
Course = apps.get_model("course", "Course")
|
||||||
|
|
|
||||||
|
|
@ -39,7 +39,36 @@ ADMIN_EMAILS = ["info@iterativ.ch", "admin"]
|
||||||
|
|
||||||
|
|
||||||
@click.command()
|
@click.command()
|
||||||
def command():
|
@click.option('--course', '-c', multiple=True, default=[
|
||||||
|
COURSE_TEST_ID,
|
||||||
|
COURSE_UK,
|
||||||
|
COURSE_VERSICHERUNGSVERMITTLERIN_ID,
|
||||||
|
COURSE_UK_FR,
|
||||||
|
])
|
||||||
|
def command(course):
|
||||||
|
print("Creating default courses", course)
|
||||||
|
|
||||||
|
if COURSE_VERSICHERUNGSVERMITTLERIN_ID in course:
|
||||||
|
create_versicherungsvermittlerin_course()
|
||||||
|
|
||||||
|
if COURSE_UK in course:
|
||||||
|
create_course_uk_de()
|
||||||
|
create_course_uk_de_completion_data()
|
||||||
|
|
||||||
|
if COURSE_UK_FR in course:
|
||||||
|
create_course_uk_fr()
|
||||||
|
|
||||||
|
if COURSE_TEST_ID in course:
|
||||||
|
create_test_course()
|
||||||
|
|
||||||
|
# course sessions
|
||||||
|
CourseSession.objects.create(
|
||||||
|
course_id=COURSE_TEST_ID,
|
||||||
|
title="Test Lehrgang Session",
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def create_versicherungsvermittlerin_course():
|
||||||
# Versicherungsvermittler/in mit neuen Circles
|
# Versicherungsvermittler/in mit neuen Circles
|
||||||
create_versicherungsvermittlerin_with_categories(
|
create_versicherungsvermittlerin_with_categories(
|
||||||
course_id=COURSE_VERSICHERUNGSVERMITTLERIN_ID,
|
course_id=COURSE_VERSICHERUNGSVERMITTLERIN_ID,
|
||||||
|
|
@ -49,31 +78,6 @@ def command():
|
||||||
create_default_media_library(course_id=COURSE_VERSICHERUNGSVERMITTLERIN_ID)
|
create_default_media_library(course_id=COURSE_VERSICHERUNGSVERMITTLERIN_ID)
|
||||||
create_vv_new_learning_path()
|
create_vv_new_learning_path()
|
||||||
|
|
||||||
# Überbetriebliche Kurse DE
|
|
||||||
create_versicherungsvermittlerin_with_categories(
|
|
||||||
course_id=COURSE_UK, title="Überbetriebliche Kurse"
|
|
||||||
)
|
|
||||||
create_uk_learning_path(course_id=COURSE_UK)
|
|
||||||
create_uk_competence_profile(course_id=COURSE_UK)
|
|
||||||
create_default_media_library(course_id=COURSE_UK)
|
|
||||||
|
|
||||||
# Überbetriebliche Kurse FR
|
|
||||||
create_versicherungsvermittlerin_with_categories(
|
|
||||||
course_id=COURSE_UK_FR, title="Course hors établissement"
|
|
||||||
)
|
|
||||||
create_uk_fr_learning_path(course_id=COURSE_UK_FR)
|
|
||||||
create_uk_fr_competence_profile(course_id=COURSE_UK_FR)
|
|
||||||
create_default_media_library(course_id=COURSE_UK_FR)
|
|
||||||
|
|
||||||
# test course
|
|
||||||
create_test_course()
|
|
||||||
|
|
||||||
# course sessions
|
|
||||||
CourseSession.objects.create(
|
|
||||||
course_id=COURSE_TEST_ID,
|
|
||||||
title="Test Lehrgang Session",
|
|
||||||
)
|
|
||||||
|
|
||||||
cs = CourseSession.objects.create(
|
cs = CourseSession.objects.create(
|
||||||
course_id=COURSE_VERSICHERUNGSVERMITTLERIN_ID,
|
course_id=COURSE_VERSICHERUNGSVERMITTLERIN_ID,
|
||||||
title="Versicherungsvermittler/-in",
|
title="Versicherungsvermittler/-in",
|
||||||
|
|
@ -108,7 +112,8 @@ def command():
|
||||||
|
|
||||||
experts = [expert1, expert2, expert3]
|
experts = [expert1, expert2, expert3]
|
||||||
|
|
||||||
circles = Circle.objects.filter(slug__startswith="versicherungsvermittler-in-lp")
|
circles = Circle.objects.filter(
|
||||||
|
slug__startswith="versicherungsvermittler-in-lp")
|
||||||
for i, circle in enumerate(circles):
|
for i, circle in enumerate(circles):
|
||||||
expert = experts[i % len(experts)]
|
expert = experts[i % len(experts)]
|
||||||
expert.expert.add(circle)
|
expert.expert.add(circle)
|
||||||
|
|
@ -120,136 +125,98 @@ def command():
|
||||||
user=User.objects.get(email=admin_email),
|
user=User.objects.get(email=admin_email),
|
||||||
)
|
)
|
||||||
|
|
||||||
# course session Überbetriebliche Kurse Lehrjahr 1 - Region Bern
|
|
||||||
courses = [
|
def create_course_uk_de():
|
||||||
{
|
# Überbetriebliche Kurse DE
|
||||||
"course_id": COURSE_UK,
|
create_versicherungsvermittlerin_with_categories(
|
||||||
"title": "Überbetriebliche Kurse Lehrjahr 1 - Region Bern",
|
course_id=COURSE_UK, title="Überbetriebliche Kurse"
|
||||||
"basis_slug": "überbetriebliche-kurse-lp-circle-basis",
|
)
|
||||||
"kickoff_slug": "überbetriebliche-kurse-lp-circle-kickoff",
|
create_uk_learning_path(course_id=COURSE_UK)
|
||||||
"haushalt1_slug": "überbetriebliche-kurse-lp-circle-haushalt-teil-1",
|
create_uk_competence_profile(course_id=COURSE_UK)
|
||||||
"fahrzeug_slug": "überbetriebliche-kurse-lp-circle-fahrzeug",
|
create_default_media_library(course_id=COURSE_UK)
|
||||||
"haushalt2_slug": "überbetriebliche-kurse-lp-circle-haushalt-teil-2",
|
|
||||||
},
|
cs = CourseSession.objects.create(
|
||||||
{
|
course_id=COURSE_UK,
|
||||||
"course_id": COURSE_UK_FR,
|
title="Überbetriebliche Kurse Lehrjahr 1 - Region Bern",
|
||||||
"title": "Cours hors établissement année 1 - Région Fribourg",
|
)
|
||||||
"basis_slug": "course-hors-établissement-lp-circle-basis",
|
|
||||||
"kickoff_slug": "course-hors-établissement-lp-circle-kickoff",
|
# figma demo users and data
|
||||||
"haushalt1_slug": "course-hors-établissement-lp-circle-haushalt-teil-1",
|
csu = CourseSessionUser.objects.create(
|
||||||
"fahrzeug_slug": "course-hors-établissement-lp-circle-fahrzeug",
|
course_session=cs,
|
||||||
"haushalt2_slug": "course-hors-établissement-lp-circle-haushalt-teil-2",
|
user=User.objects.get(
|
||||||
},
|
username="patrizia.huggel@eiger-versicherungen.ch"
|
||||||
]
|
),
|
||||||
for course in courses:
|
role=CourseSessionUser.Role.EXPERT,
|
||||||
cs = CourseSession.objects.create(
|
)
|
||||||
course_id=course["course_id"],
|
csu.expert.add(
|
||||||
title=course["title"],
|
Circle.objects.get(slug="überbetriebliche-kurse-lp-circle-kickoff")
|
||||||
|
)
|
||||||
|
csu.expert.add(
|
||||||
|
Circle.objects.get(
|
||||||
|
slug="überbetriebliche-kurse-lp-circle-haushalt-teil-1"
|
||||||
)
|
)
|
||||||
|
)
|
||||||
|
csu.expert.add(
|
||||||
|
Circle.objects.get(slug="überbetriebliche-kurse-lp-circle-fahrzeug")
|
||||||
|
)
|
||||||
|
csu = CourseSessionUser.objects.create(
|
||||||
|
course_session=cs,
|
||||||
|
user=User.objects.get(username="andreas.feuz@eiger-versicherungen.ch"),
|
||||||
|
role=CourseSessionUser.Role.EXPERT,
|
||||||
|
)
|
||||||
|
csu.expert.add(
|
||||||
|
Circle.objects.get(
|
||||||
|
slug="überbetriebliche-kurse-lp-circle-haushalt-teil-2"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
csu.expert.add(
|
||||||
|
Circle.objects.get(slug="überbetriebliche-kurse-lp-circle-basis")
|
||||||
|
)
|
||||||
|
_csu = CourseSessionUser.objects.create(
|
||||||
|
course_session=cs,
|
||||||
|
user=User.objects.get(username="michael.meier@example.com"),
|
||||||
|
)
|
||||||
|
_csu = CourseSessionUser.objects.create(
|
||||||
|
course_session=cs,
|
||||||
|
user=User.objects.get(username="lina.egger@example.com"),
|
||||||
|
)
|
||||||
|
_csu = CourseSessionUser.objects.create(
|
||||||
|
course_session=cs,
|
||||||
|
user=User.objects.get(username="evelyn.schmid@example.com"),
|
||||||
|
)
|
||||||
|
|
||||||
# figma demo users and data
|
_csu = CourseSessionUser.objects.create(
|
||||||
if course["course_id"] == COURSE_UK:
|
course_session=cs,
|
||||||
csu = CourseSessionUser.objects.create(
|
user=User.objects.get(username="christoph.bosshard@vbv-afa.ch"),
|
||||||
course_session=cs,
|
)
|
||||||
user=User.objects.get(
|
|
||||||
username="patrizia.huggel@eiger-versicherungen.ch"
|
|
||||||
),
|
|
||||||
role=CourseSessionUser.Role.EXPERT,
|
|
||||||
)
|
|
||||||
csu.expert.add(
|
|
||||||
Circle.objects.get(slug="überbetriebliche-kurse-lp-circle-kickoff")
|
|
||||||
)
|
|
||||||
csu.expert.add(
|
|
||||||
Circle.objects.get(
|
|
||||||
slug="überbetriebliche-kurse-lp-circle-haushalt-teil-1"
|
|
||||||
)
|
|
||||||
)
|
|
||||||
csu.expert.add(
|
|
||||||
Circle.objects.get(slug="überbetriebliche-kurse-lp-circle-fahrzeug")
|
|
||||||
)
|
|
||||||
csu = CourseSessionUser.objects.create(
|
|
||||||
course_session=cs,
|
|
||||||
user=User.objects.get(username="andreas.feuz@eiger-versicherungen.ch"),
|
|
||||||
role=CourseSessionUser.Role.EXPERT,
|
|
||||||
)
|
|
||||||
csu.expert.add(
|
|
||||||
Circle.objects.get(
|
|
||||||
slug="überbetriebliche-kurse-lp-circle-haushalt-teil-2"
|
|
||||||
)
|
|
||||||
)
|
|
||||||
csu.expert.add(
|
|
||||||
Circle.objects.get(slug="überbetriebliche-kurse-lp-circle-basis")
|
|
||||||
)
|
|
||||||
_csu = CourseSessionUser.objects.create(
|
|
||||||
course_session=cs,
|
|
||||||
user=User.objects.get(username="michael.meier@example.com"),
|
|
||||||
)
|
|
||||||
_csu = CourseSessionUser.objects.create(
|
|
||||||
course_session=cs,
|
|
||||||
user=User.objects.get(username="lina.egger@example.com"),
|
|
||||||
)
|
|
||||||
_csu = CourseSessionUser.objects.create(
|
|
||||||
course_session=cs,
|
|
||||||
user=User.objects.get(username="evelyn.schmid@example.com"),
|
|
||||||
)
|
|
||||||
|
|
||||||
_csu = CourseSessionUser.objects.create(
|
_csu = CourseSessionUser.objects.create(
|
||||||
course_session=cs,
|
course_session=cs,
|
||||||
user=User.objects.get(username="christoph.bosshard@vbv-afa.ch"),
|
user=User.objects.get(username="axel.manderbach@lernetz.ch"),
|
||||||
)
|
)
|
||||||
|
|
||||||
_csu = CourseSessionUser.objects.create(
|
_csu = CourseSessionUser.objects.create(
|
||||||
course_session=cs,
|
course_session=cs,
|
||||||
user=User.objects.get(username="axel.manderbach@lernetz.ch"),
|
user=User.objects.get(
|
||||||
)
|
username="patrick.muster@eiger-versicherungen.ch"
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
||||||
_csu = CourseSessionUser.objects.create(
|
create_feedback(
|
||||||
course_session=cs,
|
Circle.objects.get(slug="überbetriebliche-kurse-lp-circle-kickoff"),
|
||||||
user=User.objects.get(
|
cs,
|
||||||
username="patrick.muster@eiger-versicherungen.ch"
|
3,
|
||||||
),
|
)
|
||||||
)
|
create_feedback(
|
||||||
|
Circle.objects.get(
|
||||||
create_feedback(
|
slug="überbetriebliche-kurse-lp-circle-haushalt-teil-2"
|
||||||
Circle.objects.get(slug="überbetriebliche-kurse-lp-circle-kickoff"),
|
),
|
||||||
cs,
|
cs,
|
||||||
3,
|
14,
|
||||||
)
|
)
|
||||||
create_feedback(
|
create_feedback(
|
||||||
Circle.objects.get(
|
Circle.objects.get(slug="überbetriebliche-kurse-lp-circle-basis"), cs, 4
|
||||||
slug="überbetriebliche-kurse-lp-circle-haushalt-teil-2"
|
)
|
||||||
),
|
|
||||||
cs,
|
|
||||||
14,
|
|
||||||
)
|
|
||||||
create_feedback(
|
|
||||||
Circle.objects.get(slug="überbetriebliche-kurse-lp-circle-basis"), cs, 4
|
|
||||||
)
|
|
||||||
elif course["course_id"] == COURSE_UK_FR:
|
|
||||||
csu = CourseSessionUser.objects.create(
|
|
||||||
course_session=cs,
|
|
||||||
user=User.objects.get(username="geraldine.kolly@assurance.ch"),
|
|
||||||
role=CourseSessionUser.Role.EXPERT,
|
|
||||||
)
|
|
||||||
csu.expert.add(
|
|
||||||
Circle.objects.get(
|
|
||||||
slug="course-hors-établissement-lp-circle-coup-denvoi"
|
|
||||||
)
|
|
||||||
)
|
|
||||||
_csu = CourseSessionUser.objects.create(
|
|
||||||
course_session=cs,
|
|
||||||
user=User.objects.get(username="luca.dupont@assurance.ch"),
|
|
||||||
)
|
|
||||||
csu = CourseSessionUser.objects.create(
|
|
||||||
course_session=cs,
|
|
||||||
user=User.objects.get(username="andreas.feuz@eiger-versicherungen.ch"),
|
|
||||||
role=CourseSessionUser.Role.EXPERT,
|
|
||||||
)
|
|
||||||
|
|
||||||
for fr_circle in Circle.objects.filter(
|
|
||||||
slug__startswith="course-hors-établissement-lp"
|
|
||||||
):
|
|
||||||
csu.expert.add(fr_circle)
|
|
||||||
|
|
||||||
# course session Überbetriebliche Kurse Lehrjahr 1 - Region Zürich
|
# course session Überbetriebliche Kurse Lehrjahr 1 - Region Zürich
|
||||||
cs = CourseSession.objects.create(
|
cs = CourseSession.objects.create(
|
||||||
|
|
@ -280,6 +247,48 @@ def command():
|
||||||
user=User.objects.get(username="student-uk1-zurich@eiger-versicherungen.ch"),
|
user=User.objects.get(username="student-uk1-zurich@eiger-versicherungen.ch"),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def create_course_uk_fr():
|
||||||
|
# Überbetriebliche Kurse FR
|
||||||
|
create_versicherungsvermittlerin_with_categories(
|
||||||
|
course_id=COURSE_UK_FR, title="Course hors établissement"
|
||||||
|
)
|
||||||
|
create_uk_fr_learning_path(course_id=COURSE_UK_FR)
|
||||||
|
create_uk_fr_competence_profile(course_id=COURSE_UK_FR)
|
||||||
|
create_default_media_library(course_id=COURSE_UK_FR)
|
||||||
|
|
||||||
|
cs = CourseSession.objects.create(
|
||||||
|
course_id=COURSE_UK_FR,
|
||||||
|
title="Cours hors établissement année 1 - Région Fribourg"
|
||||||
|
)
|
||||||
|
|
||||||
|
csu = CourseSessionUser.objects.create(
|
||||||
|
course_session=cs,
|
||||||
|
user=User.objects.get(username="geraldine.kolly@assurance.ch"),
|
||||||
|
role=CourseSessionUser.Role.EXPERT,
|
||||||
|
)
|
||||||
|
csu.expert.add(
|
||||||
|
Circle.objects.get(
|
||||||
|
slug="course-hors-établissement-lp-circle-coup-denvoi"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
_csu = CourseSessionUser.objects.create(
|
||||||
|
course_session=cs,
|
||||||
|
user=User.objects.get(username="luca.dupont@assurance.ch"),
|
||||||
|
)
|
||||||
|
csu = CourseSessionUser.objects.create(
|
||||||
|
course_session=cs,
|
||||||
|
user=User.objects.get(username="andreas.feuz@eiger-versicherungen.ch"),
|
||||||
|
role=CourseSessionUser.Role.EXPERT,
|
||||||
|
)
|
||||||
|
|
||||||
|
for fr_circle in Circle.objects.filter(
|
||||||
|
slug__startswith="course-hors-établissement-lp"
|
||||||
|
):
|
||||||
|
csu.expert.add(fr_circle)
|
||||||
|
|
||||||
|
|
||||||
|
def create_course_uk_de_completion_data():
|
||||||
# initial completion data
|
# initial completion data
|
||||||
for slug, status, email in [
|
for slug, status, email in [
|
||||||
(
|
(
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue