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
|
||||
./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
|
||||
|
|
|
|||
|
|
@ -17,26 +17,52 @@ set -e
|
|||
# handle arguments
|
||||
SKIP_SETUP=false
|
||||
START_BACKGROUND=false
|
||||
courses=()
|
||||
|
||||
for i in "$@"
|
||||
# Parse positional arguments
|
||||
while [[ $# -gt 0 ]]
|
||||
do
|
||||
case $i in
|
||||
--start-background)
|
||||
START_BACKGROUND=true
|
||||
shift # past argument
|
||||
;;
|
||||
--skip-setup)
|
||||
SKIP_SETUP=true
|
||||
shift # past argument with no value
|
||||
;;
|
||||
*)
|
||||
# unknown option
|
||||
;;
|
||||
esac
|
||||
key="$1"
|
||||
|
||||
case $key in
|
||||
-f|--file)
|
||||
shift
|
||||
;;
|
||||
--start-background)
|
||||
START_BACKGROUND=true
|
||||
shift
|
||||
;;
|
||||
--skip-setup)
|
||||
SKIP_SETUP=true
|
||||
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
|
||||
|
||||
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
|
||||
if [ -z ${PGDATABASE+x} ]; then # var is empty
|
||||
PGDATABASE=${POSTGRES_DB:-vbv_lernwelt};
|
||||
|
|
@ -68,7 +94,8 @@ if [ "$SKIP_SETUP" = false ]; then
|
|||
python server/manage.py createcachetable
|
||||
python server/manage.py migrate
|
||||
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
|
||||
|
||||
# make django translations
|
||||
|
|
@ -76,7 +103,7 @@ if [ "$SKIP_SETUP" = false ]; then
|
|||
else
|
||||
# TODO: can we reset important data without resetting the database?
|
||||
echo "Skip database setup"
|
||||
# python3 src/manage.py cypress_reset --settings="$DJANGO_SETTINGS_MODULE"
|
||||
python server/manage.py cypress_reset
|
||||
fi
|
||||
|
||||
if [ "$START_BACKGROUND" = true ]; then
|
||||
|
|
|
|||
|
|
@ -2,15 +2,15 @@ import wagtail_factories
|
|||
from django.conf import settings
|
||||
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
|
||||
|
||||
|
||||
def create_versicherungsvermittlerin_with_categories(
|
||||
apps=None,
|
||||
schema_editor=None,
|
||||
course_id=COURSE_VERSICHERUNGSVERMITTLERIN_OLD_ID,
|
||||
title="Versicherungsvermittler/-in (alt)",
|
||||
course_id=COURSE_VERSICHERUNGSVERMITTLERIN_ID,
|
||||
title="Versicherungsvermittler/-in",
|
||||
):
|
||||
if apps is not None:
|
||||
Course = apps.get_model("course", "Course")
|
||||
|
|
|
|||
|
|
@ -39,7 +39,36 @@ ADMIN_EMAILS = ["info@iterativ.ch", "admin"]
|
|||
|
||||
|
||||
@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
|
||||
create_versicherungsvermittlerin_with_categories(
|
||||
course_id=COURSE_VERSICHERUNGSVERMITTLERIN_ID,
|
||||
|
|
@ -49,31 +78,6 @@ def command():
|
|||
create_default_media_library(course_id=COURSE_VERSICHERUNGSVERMITTLERIN_ID)
|
||||
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(
|
||||
course_id=COURSE_VERSICHERUNGSVERMITTLERIN_ID,
|
||||
title="Versicherungsvermittler/-in",
|
||||
|
|
@ -108,7 +112,8 @@ def command():
|
|||
|
||||
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):
|
||||
expert = experts[i % len(experts)]
|
||||
expert.expert.add(circle)
|
||||
|
|
@ -120,136 +125,98 @@ def command():
|
|||
user=User.objects.get(email=admin_email),
|
||||
)
|
||||
|
||||
# course session Überbetriebliche Kurse Lehrjahr 1 - Region Bern
|
||||
courses = [
|
||||
{
|
||||
"course_id": COURSE_UK,
|
||||
"title": "Überbetriebliche Kurse Lehrjahr 1 - Region Bern",
|
||||
"basis_slug": "überbetriebliche-kurse-lp-circle-basis",
|
||||
"kickoff_slug": "überbetriebliche-kurse-lp-circle-kickoff",
|
||||
"haushalt1_slug": "überbetriebliche-kurse-lp-circle-haushalt-teil-1",
|
||||
"fahrzeug_slug": "überbetriebliche-kurse-lp-circle-fahrzeug",
|
||||
"haushalt2_slug": "überbetriebliche-kurse-lp-circle-haushalt-teil-2",
|
||||
},
|
||||
{
|
||||
"course_id": COURSE_UK_FR,
|
||||
"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",
|
||||
"haushalt1_slug": "course-hors-établissement-lp-circle-haushalt-teil-1",
|
||||
"fahrzeug_slug": "course-hors-établissement-lp-circle-fahrzeug",
|
||||
"haushalt2_slug": "course-hors-établissement-lp-circle-haushalt-teil-2",
|
||||
},
|
||||
]
|
||||
for course in courses:
|
||||
cs = CourseSession.objects.create(
|
||||
course_id=course["course_id"],
|
||||
title=course["title"],
|
||||
|
||||
def create_course_uk_de():
|
||||
# Ü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)
|
||||
|
||||
cs = CourseSession.objects.create(
|
||||
course_id=COURSE_UK,
|
||||
title="Überbetriebliche Kurse Lehrjahr 1 - Region Bern",
|
||||
)
|
||||
|
||||
# figma demo users and data
|
||||
csu = CourseSessionUser.objects.create(
|
||||
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"),
|
||||
)
|
||||
|
||||
# figma demo users and data
|
||||
if course["course_id"] == COURSE_UK:
|
||||
csu = CourseSessionUser.objects.create(
|
||||
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(
|
||||
course_session=cs,
|
||||
user=User.objects.get(username="christoph.bosshard@vbv-afa.ch"),
|
||||
)
|
||||
|
||||
_csu = CourseSessionUser.objects.create(
|
||||
course_session=cs,
|
||||
user=User.objects.get(username="christoph.bosshard@vbv-afa.ch"),
|
||||
)
|
||||
_csu = CourseSessionUser.objects.create(
|
||||
course_session=cs,
|
||||
user=User.objects.get(username="axel.manderbach@lernetz.ch"),
|
||||
)
|
||||
|
||||
_csu = CourseSessionUser.objects.create(
|
||||
course_session=cs,
|
||||
user=User.objects.get(username="axel.manderbach@lernetz.ch"),
|
||||
)
|
||||
_csu = CourseSessionUser.objects.create(
|
||||
course_session=cs,
|
||||
user=User.objects.get(
|
||||
username="patrick.muster@eiger-versicherungen.ch"
|
||||
),
|
||||
)
|
||||
|
||||
_csu = CourseSessionUser.objects.create(
|
||||
course_session=cs,
|
||||
user=User.objects.get(
|
||||
username="patrick.muster@eiger-versicherungen.ch"
|
||||
),
|
||||
)
|
||||
|
||||
create_feedback(
|
||||
Circle.objects.get(slug="überbetriebliche-kurse-lp-circle-kickoff"),
|
||||
cs,
|
||||
3,
|
||||
)
|
||||
create_feedback(
|
||||
Circle.objects.get(
|
||||
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)
|
||||
create_feedback(
|
||||
Circle.objects.get(slug="überbetriebliche-kurse-lp-circle-kickoff"),
|
||||
cs,
|
||||
3,
|
||||
)
|
||||
create_feedback(
|
||||
Circle.objects.get(
|
||||
slug="überbetriebliche-kurse-lp-circle-haushalt-teil-2"
|
||||
),
|
||||
cs,
|
||||
14,
|
||||
)
|
||||
create_feedback(
|
||||
Circle.objects.get(slug="überbetriebliche-kurse-lp-circle-basis"), cs, 4
|
||||
)
|
||||
|
||||
# course session Überbetriebliche Kurse Lehrjahr 1 - Region Zürich
|
||||
cs = CourseSession.objects.create(
|
||||
|
|
@ -280,6 +247,48 @@ def command():
|
|||
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
|
||||
for slug, status, email in [
|
||||
(
|
||||
|
|
|
|||
Loading…
Reference in New Issue