small update to get better query mode working

This commit is contained in:
Hartmut Seichter 2024-05-29 20:02:48 +02:00
parent ef011cda55
commit d41712e010
4 changed files with 164 additions and 234 deletions

View file

@ -94,6 +94,7 @@ class CourseBuilder:
# generate a compound column --query-compound column:sum
if args.query_compound:
print(args.query_compound)
df_q.loc[:,'form-of-instruction.sum'] = df_q['form-of-instruction'].apply(lambda x: sum(list(x.values())))
# --query-sort is parameterized as min:credits - hence direction:column
@ -112,6 +113,7 @@ class CourseBuilder:
# set value transforms
if args.query_template:
# no idea yet how to parameterize this
ww = 'written'
#df_q['form-of-exam'] = 'Schriftlich' if df_q.loc[:,'form-of-exam'] == 'written' else 'was anderes'
# mm = Template("{'written':'S','oral':'mündlich'}[${v}]")?
@ -122,7 +124,7 @@ class CourseBuilder:
'sum.credits': df_q['credits'].sum()
}])
# set labels
# set labels directly!
if args.query_labels:
df_q.columns = args.query_labels

View file

@ -1,6 +1,6 @@
# Concept
# concept
The concept behind coursebuilder is to store curricula descriptions in `YAML` files that can be versioned in a git repository. Unlike classic databases an observable and well defined versioning is paramount in these descriptions as they are the legal foundation for study and exam regulations.
The concept behind coursebuilder is to store curricula descriptions in `YAML` files that can be versioned in a git repository. Unlike classic databases, an observable and well defined versioning is paramount in these descriptions as they are the legal foundation for study and exam regulations.
The following pieces play together here:

View file

@ -1,4 +1,4 @@
# debug make file for testing
build_dir := build
target_en := ${build_dir}/table.en.pdf
target_de := ${build_dir}/table.de.pdf

View file

@ -5,32 +5,27 @@
# Modulname
#
name:
type: str
label:
de: "Modulname"
en: "name of course"
type: str
label:
de: "Modulname"
en: "name of course"
#
# Modulverantwortliche:r
#
instructor:
type: str
label:
de: "Modulverantwortlicher / Modulverantwortliche"
en: "module instructor"
type: str
label:
de: "Modulverantwortlicher / Modulverantwortliche"
en: "module instructor"
#
# Kürzel / ID
#
id:
type: str
translatable: false
label: {
de: "Kürzel",
en: "code"
}
type: str
translatable: false
label: { de: "Kürzel", en: "code" }
#
# Qualifikationsziele
@ -48,11 +43,8 @@ id:
# als Formulierungshilfe.
goal:
type: str
label: {
de: "Qualifikationsziele",
en: "educational goal"
}
type: str
label: { de: "Qualifikationsziele", en: "educational goal" }
#
# Modulinhalte
@ -64,11 +56,8 @@ goal:
# Es ist ein stichpunktartiges Inhaltsverzeichnis zu erstellen.
content:
type: str
label: {
de: "Modulinhalte",
en: "content"
}
type: str
label: { de: "Modulinhalte", en: "content" }
#
# Lehrform
@ -82,40 +71,21 @@ content:
# Es sind nur Werte aus der Prüfungsordung zugelassen
#
form-of-instruction:
type: multikey
label: {
de: "Lehrform(en)",
en: "form of instruction"
type: multikey
label: { de: "Lehrform(en)", en: "form of instruction" }
keys:
{
"lecture": { de: "Vorlesung", en: "lecture" },
"lecture_seminar":
{ de: "Seminaristische Vorlesung", en: "lecture and seminar" },
"seminar": { de: "Seminar", en: "seminar" },
"exersise": { de: "Übung", en: "lab exersise" },
"pc_lab": { de: "Rechnergestütztes Praktikum", en: "PC exersise" },
"project": { de: "Project", en: "project" },
}
keys: {
'lecture' : {
de: "Vorlesung",
en: "lecture"
},
'lecture_seminar' : {
de: "Seminaristische Vorlesung",
en: "lecture and seminar"
},
'seminar' : {
de: "Seminar",
en: "seminar"
},
'exersise' : {
de: "Übung",
en: "lab exersise"
},
'pc_lab' : {
de: "Rechnergestütztes Praktikum",
en: "PC exersise"
},
'project' : {
de: "Project",
en: "project"
}
}
template:
de: "{key} ({value}SWS)"
en: "{key} ({value}SWS)"
template:
de: "{key} ({value}SWS)"
en: "{key} ({value}SWS)"
#
# Voraussetzungen für die Teilnahme
@ -129,11 +99,8 @@ form-of-instruction:
# Teilnahme im Vorfeld zu belegen sind.
prerequisites:
type: str
label: {
de: "Voraussetzungen für die Teilnahme",
en: "prerequisites"
}
type: str
label: { de: "Voraussetzungen für die Teilnahme", en: "prerequisites" }
#
# Literatur und multimediale Lehr- und Lernprogramme
@ -142,159 +109,120 @@ prerequisites:
# Wie können die Studierenden sich auf die Teilnahme an diesem Modul vorbereiten?
#
teaching-material:
type: str
label: {
de: "Literatur und multimediale Lehr- und Lernprogramme",
en: "media of instruction"
type: str
label:
{
de: "Literatur und multimediale Lehr- und Lernprogramme",
en: "media of instruction",
}
#
# Lehrbriefautor
#
author-of-indenture:
type: str
label: {
de: "Lehrbriefautor",
en: "author of indenture"
}
type: str
label: { de: "Lehrbriefautor", en: "author of indenture" }
#
# Verwendung in (Studienprogramm)
#
used-in:
type: str
label: {
de: "Verwendung",
en: "used in study programs"
}
type: str
label: { de: "Verwendung", en: "used in study programs" }
#
# Arbeitsaufwand
#
workload:
type: str
label: {
de: "Arbeitsaufwand / Gesamtworkload",
en: "workload"
}
type: str
label: { de: "Arbeitsaufwand / Gesamtworkload", en: "workload" }
#
# credits/ECTS
#
credits:
type: num
unit: ECTS
label: {
en: "credits and weight of mark",
de: "Kreditpunkte und Gewichtung der Note in der Gesamtnote"
type: num
unit: ECTS
label:
{
en: "credits and weight of mark",
de: "Kreditpunkte und Gewichtung der Note in der Gesamtnote",
}
template:
de: "{value}CP, Gewichtung: {value}CP von 120CP "
en: "{value}CP, weight: {value} / 120 "
template:
de: "{value}CP, Gewichtung: {value}CP von 120CP "
en: "{value}CP, weight: {value} / 120 "
#
# Leistungsnachweis
#
form-of-exam:
type: enum
label: {
de: "Leistungsnachweis",
en: "form of examination"
type: enum
label: { de: "Leistungsnachweis", en: "form of examination" }
values:
{
"written": { de: "Schriftliche Prüfung", en: "written exam" },
"oral": { de: "Mündliche Prüfung", en: "oral exam" },
"alternative":
{ de: "Alternative Prüfungunsleistung", en: "alternative examination" },
}
values: {
'written' : {
de: "Schriftliche Prüfung",
en: "written exam"
},
'oral' : {
de: "Mündliche Prüfung",
en: "oral exam"
},
'alternative' : {
de: "Alternative Prüfungunsleistung",
en: "alternative examination"
}
}
spec: true
template:
de: "{value} ({spec})"
en: "{value} ({spec})"
spec: true
template:
de: "{value} ({spec})"
en: "{value} ({spec})"
#
# Semester
#
term:
type: multinum
label: {
de: "Semester",
en: "term"
}
template:
de: "{value}\\. Semester"
en: "{value}\\. semester"
type: multinum
label: { de: "Semester", en: "term" }
template:
de: "{value}\\. Semester"
en: "{value}\\. semester"
#
# Häufigkeit des Angebots
#
frequency:
type: enum
label: {
de: "Häufigkeit des Angebots",
en: "frequency of Offer"
}
values: {
'once_per_term' : {
de: "jedes Semester",
en: "every semester"
},
'once_per_year' : {
de: "einmal im Studienjahr",
en: "once per study year"
}
type: enum
label: { de: "Häufigkeit des Angebots", en: "frequency of Offer" }
values:
{
"once_per_term": { de: "jedes Semester", en: "every semester" },
"once_per_year":
{ de: "einmal im Studienjahr", en: "once per study year" },
}
#
# Dauer des Angebots
#
duration:
type: int
label:
de: Dauer
en: duration
template:
de: "{value} Semester"
en: "{value} term(s)"
type: int
label:
de: Dauer
en: duration
template:
de: "{value} Semester"
en: "{value} term(s)"
#
# Art der Veranstaltung
#
kind:
type: enum
label: {
de: 'Art der Veranstaltung (Pflicht, Wahl, etc.)',
en: 'kind of module (compulsory, elective)'
type: enum
label:
{
de: "Art der Veranstaltung (Pflicht, Wahl, etc.)",
en: "kind of module (compulsory, elective)",
}
values: {
'compulsory': {
de: "Pflicht",
en: "compulsory"
},
'elective' : {
de: "Wahl/Wahlpflicht",
en: "elective"
}
values:
{
"compulsory": { de: "Pflicht", en: "compulsory" },
"elective": { de: "Wahl/Wahlpflicht", en: "elective" },
}
#
# Freiform Bemerkungen
#
remarks:
type: str
label: {
de: "Besonderes",
en: "remarks"
}
type: str
label: { de: "Besonderes", en: "remarks" }