Release - Upload

This commit is contained in:
Js_Sman_Omen
2025-03-24 14:34:56 +01:00
commit 89f35ca466
370 changed files with 32904 additions and 0 deletions
+3
View File
@@ -0,0 +1,3 @@
from django.contrib import admin
# Register your models here.
+5
View File
@@ -0,0 +1,5 @@
from django.apps import AppConfig
class PruefplanParserConfig(AppConfig):
name = 'pruefplan_parser'
+229
View File
@@ -0,0 +1,229 @@
{
"revision": "2648:2829M",
"array": [
{
"kennung": "259",
"vorname": "Christine",
"nachname": "Rademacher",
"titel": "Prof. Dr.",
"fakultaet": "AMP",
"istLehrbeauftragter": false
},
{
"kennung": "315",
"vorname": "J\u00c3\u00b6rg",
"nachname": "Steinbach",
"titel": "Prof. Dr.",
"fakultaet": "AMP",
"istLehrbeauftragter": false
},
{
"kennung": "385",
"vorname": "Peter",
"nachname": "Jonas",
"titel": "Prof. Dr.",
"fakultaet": "AMP",
"istLehrbeauftragter": false
},
{
"kennung": "71655",
"vorname": "Melanie",
"nachname": "Basting",
"titel": "Prof. Dr.",
"fakultaet": "AMP",
"istLehrbeauftragter": false
},
{
"kennung": "103",
"vorname": "Thomas",
"nachname": "Giesler",
"titel": "Prof. Dr.",
"fakultaet": "EFI",
"istLehrbeauftragter": false
},
{
"kennung": "70901",
"vorname": "Sven",
"nachname": "Loquai",
"titel": "Prof. Dr.-Ing.",
"fakultaet": "EFI",
"istLehrbeauftragter": false
},
{
"kennung": "166",
"vorname": "Bernd",
"nachname": "Klehn",
"titel": "Prof. Dr.",
"fakultaet": "EFI",
"istLehrbeauftragter": false
},
{
"kennung": "382",
"vorname": "Michael",
"nachname": "Zwanger",
"titel": "Prof. Dr.",
"fakultaet": "EFI",
"istLehrbeauftragter": false
},
{
"kennung": "74090",
"vorname": "Olga",
"nachname": "Battermann",
"titel": "Dr.",
"fakultaet": "EFI",
"istLehrbeauftragter": true
},
{
"kennung": "73247",
"vorname": "Michael",
"nachname": "Mayle",
"titel": "Prof. Dr.",
"fakultaet": "AMP",
"istLehrbeauftragter": false
},
{
"kennung": "316",
"vorname": "Florian",
"nachname": "Steinmeyer",
"titel": "Prof. Dr.",
"fakultaet": "AMP",
"istLehrbeauftragter": false
},
{
"kennung": "49",
"vorname": "Bernd",
"nachname": "Braun",
"titel": "Prof. Dr.",
"fakultaet": "AMP",
"istLehrbeauftragter": false
},
{
"kennung": "73630",
"vorname": "Peter",
"nachname": "Eberhardt",
"titel": "Prof. Dr.",
"fakultaet": "EFI",
"istLehrbeauftragter": true
},
{
"kennung": "576",
"vorname": "J\u00c3\u00bcrgen",
"nachname": "Krumm",
"titel": "Prof.",
"fakultaet": "EFI",
"istLehrbeauftragter": false
},
{
"kennung": "219",
"vorname": "Stefan",
"nachname": "May",
"titel": "Prof. Dr.",
"fakultaet": "EFI",
"istLehrbeauftragter": false
},
{
"kennung": "75398",
"vorname": "Christian",
"nachname": "Pfitzner",
"titel": "Prof. Dr.",
"fakultaet": "EFI",
"istLehrbeauftragter": false
},
{
"kennung": "508",
"vorname": "Wolfgang",
"nachname": "M\u00c3\u00b6nch",
"titel": "Prof. Dr.",
"fakultaet": "EFI",
"istLehrbeauftragter": false
},
{
"kennung": "585",
"vorname": "Rainer",
"nachname": "Engelbrecht",
"titel": "Prof. Dr.-Ing.",
"fakultaet": "EFI",
"istLehrbeauftragter": false
},
{
"kennung": "73998",
"vorname": "Stefan",
"nachname": "Wenhardt",
"titel": "",
"fakultaet": "AMP",
"istLehrbeauftragter": true
},
{
"kennung": "74065",
"vorname": "Matthias",
"nachname": "Gleich",
"titel": "",
"fakultaet": "EFI",
"istLehrbeauftragter": true
},
{
"kennung": "376",
"vorname": "Olaf",
"nachname": "Ziemann",
"titel": "Prof. Dr.",
"fakultaet": "EFI",
"istLehrbeauftragter": false
},
{
"kennung": "350",
"vorname": "Sebastian",
"nachname": "Walter",
"titel": "Prof. Dr.",
"fakultaet": "EFI",
"istLehrbeauftragter": false
},
{
"kennung": "75807",
"vorname": "Andreas",
"nachname": "Stute",
"titel": "Prof. Dr.",
"fakultaet": "EFI",
"istLehrbeauftragter": false
},
{
"kennung": "492",
"vorname": "G\u00c3\u00bcnter",
"nachname": "Kie\u00c3\u0178ling",
"titel": "Prof. Dr.",
"fakultaet": "EFI",
"istLehrbeauftragter": false
},
{
"kennung": "84399",
"vorname": "Anja",
"nachname": "Freudenreich",
"titel": "Prof. Dr.",
"fakultaet": "EFI",
"istLehrbeauftragter": false
},
{
"kennung": "38496",
"vorname": "Jan",
"nachname": "Paulus",
"titel": "Prof. Dr.",
"fakultaet": "EFI",
"istLehrbeauftragter": false
},
{
"kennung": "62711",
"vorname": "Hritam",
"nachname": "Dutta",
"titel": "Prof. Dr.",
"fakultaet": "EFI",
"istLehrbeauftragter": false
},
{
"kennung": "73323",
"vorname": "Enrico",
"nachname": "Schr\u00c3\u00b6der;",
"titel": "Prof. Dr.",
"fakultaet": "EFI",
"istLehrbeauftragter": false
}
]
}
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,161 @@
{
"revision": "2648:2829M",
"array": [
{
"dozentenkennung": "103",
"termin": {
"datumText": "22.07.2024 11:00 MESZ",
"jahr": 2024,
"monat": 7,
"tag": 22,
"stunde": 11,
"minute": 0,
"wochentag": "MONTAG",
"pruefungswoche": 2
}
},
{
"dozentenkennung": "70901",
"termin": {
"datumText": "11.07.2024 08:30 MESZ",
"jahr": 2024,
"monat": 7,
"tag": 11,
"stunde": 8,
"minute": 30,
"wochentag": "DONNERSTAG",
"pruefungswoche": 1
}
},
{
"dozentenkennung": "166",
"termin": {
"datumText": "16.07.2024 16:30 MESZ",
"jahr": 2024,
"monat": 7,
"tag": 16,
"stunde": 16,
"minute": 30,
"wochentag": "DIENSTAG",
"pruefungswoche": 1
}
},
{
"dozentenkennung": "382",
"termin": {
"datumText": "16.07.2024 14:00 MESZ",
"jahr": 2024,
"monat": 7,
"tag": 16,
"stunde": 14,
"minute": 0,
"wochentag": "DIENSTAG",
"pruefungswoche": 1
}
},
{
"dozentenkennung": "576",
"termin": {
"datumText": "03.07.2024 11:00 MESZ",
"jahr": 2024,
"monat": 7,
"tag": 3,
"stunde": 11,
"minute": 0,
"wochentag": "MITTWOCH",
"pruefungswoche": 0
}
},
{
"dozentenkennung": "75398",
"termin": {
"datumText": "09.07.2024 11:00 MESZ",
"jahr": 2024,
"monat": 7,
"tag": 9,
"stunde": 11,
"minute": 0,
"wochentag": "DIENSTAG",
"pruefungswoche": 0
}
},
{
"dozentenkennung": "508",
"termin": {
"datumText": "13.07.2024 11:00 MESZ",
"jahr": 2024,
"monat": 7,
"tag": 13,
"stunde": 11,
"minute": 0,
"wochentag": "SAMSTAG",
"pruefungswoche": 1
}
},
{
"dozentenkennung": "585",
"termin": {
"datumText": "13.07.2024 11:00 MESZ",
"jahr": 2024,
"monat": 7,
"tag": 13,
"stunde": 11,
"minute": 0,
"wochentag": "SAMSTAG",
"pruefungswoche": 1
}
},
{
"dozentenkennung": "492",
"termin": {
"datumText": "19.07.2024 11:00 MESZ",
"jahr": 2024,
"monat": 7,
"tag": 19,
"stunde": 11,
"minute": 0,
"wochentag": "FREITAG",
"pruefungswoche": 2
}
},
{
"dozentenkennung": "84399",
"termin": {
"datumText": "26.07.2024 16:30 MESZ",
"jahr": 2024,
"monat": 7,
"tag": 26,
"stunde": 16,
"minute": 30,
"wochentag": "FREITAG",
"pruefungswoche": 3
}
},
{
"dozentenkennung": "38496",
"termin": {
"datumText": "05.07.2024 11:00 MESZ",
"jahr": 2024,
"monat": 7,
"tag": 5,
"stunde": 11,
"minute": 0,
"wochentag": "FREITAG",
"pruefungswoche": 0
}
},
{
"dozentenkennung": "62711",
"termin": {
"datumText": "04.07.2024 14:00 MESZ",
"jahr": 2024,
"monat": 7,
"tag": 4,
"stunde": 14,
"minute": 0,
"wochentag": "DONNERSTAG",
"pruefungswoche": 0
}
}
]
}
@@ -0,0 +1,803 @@
{
"revision": "2648:2829M",
"array": [
{
"kennung": "M1:SU:BEI:1",
"pruefungsart": "LN_STUDIENBEGLEITEND",
"termin": {
"datumText": "10.07.2024 11:00 MESZ",
"jahr": 2024,
"monat": 7,
"tag": 10,
"stunde": 11,
"minute": 0,
"wochentag": "MITTWOCH",
"pruefungswoche": 0
},
"teilpruefungen": [
{
"kennung": "M1:SU:BEI:1",
"anzahlAnmeldungen": 63,
"fachkennungen": [
"BEI:20141:1110"
],
"pruefungsdurchfuehrungen": [
{
"dozentenkennung": "259",
"typ": "PRUEFER",
"raum": "BB.103",
"fachkennungen": [
"BEI:20141:1110"
]
},
{
"dozentenkennung": "315",
"typ": "PRUEFER",
"raum": "KA.450",
"fachkennungen": [
"BEI:20141:1110"
]
},
{
"dozentenkennung": "385",
"typ": "PRUEFER",
"raum": "BB.111",
"fachkennungen": [
"BEI:20141:1110"
]
},
{
"dozentenkennung": "71655",
"typ": "PRUEFER",
"raum": "BB.103",
"fachkennungen": [
"BEI:20141:1110"
]
}
]
}
],
"dozentenKennungPendler": ""
},
{
"kennung": "BMED:20141:5150:\"103,166\"_BMED:20141:5150:\"70901\"_BMED:20201:5150:\"103,166\"",
"pruefungsart": "PRUEFUNG",
"termin": {
"datumText": "11.07.2024 11:00 MESZ",
"jahr": 2024,
"monat": 7,
"tag": 11,
"stunde": 11,
"minute": 0,
"wochentag": "DONNERSTAG",
"pruefungswoche": 1
},
"teilpruefungen": [
{
"kennung": "BMED:20141:5150:\"103,166\"",
"anzahlAnmeldungen": 5,
"fachkennungen": [
"BMED:20141:5150"
],
"pruefungsdurchfuehrungen": [
{
"dozentenkennung": "103",
"typ": "PRUEFER",
"raum": "KA.111",
"fachkennungen": [
"BMED:20141:5150"
]
},
{
"dozentenkennung": "70901",
"typ": "PRUEFER",
"raum": "KA.213",
"fachkennungen": [
"BMED:20141:5150"
]
},
{
"dozentenkennung": "166",
"typ": "PRUEFER",
"raum": "KA.111",
"fachkennungen": [
"BMED:20141:5150"
]
}
]
},
{
"kennung": "BMED:20141:5150:\"70901\"",
"anzahlAnmeldungen": 0,
"fachkennungen": [
"BMED:20141:5150"
],
"pruefungsdurchfuehrungen": [
{
"dozentenkennung": "103",
"typ": "PRUEFER",
"raum": "KA.111",
"fachkennungen": [
"BMED:20141:5150"
]
},
{
"dozentenkennung": "70901",
"typ": "PRUEFER",
"raum": "KA.213",
"fachkennungen": [
"BMED:20141:5150"
]
},
{
"dozentenkennung": "166",
"typ": "PRUEFER",
"raum": "KA.111",
"fachkennungen": [
"BMED:20141:5150"
]
}
]
},
{
"kennung": "BMED:20201:5150:\"103,166\"",
"anzahlAnmeldungen": 41,
"fachkennungen": [
"BMED:20201:5150"
],
"pruefungsdurchfuehrungen": [
{
"dozentenkennung": "103",
"typ": "PRUEFER",
"raum": "KA.111",
"fachkennungen": [
"BMED:20201:5150"
]
},
{
"dozentenkennung": "70901",
"typ": "PRUEFER",
"raum": "KA.213",
"fachkennungen": [
"BMED:20201:5150"
]
},
{
"dozentenkennung": "166",
"typ": "PRUEFER",
"raum": "KA.111",
"fachkennungen": [
"BMED:20201:5150"
]
}
]
}
],
"dozentenKennungPendler": ""
},
{
"kennung": "MZ1PH:SU:BMED:2_PH:SU:BMED:2",
"pruefungsart": "PRUEFUNG",
"termin": {
"datumText": "24.07.2024 14:00 MESZ",
"jahr": 2024,
"monat": 7,
"tag": 24,
"stunde": 14,
"minute": 0,
"wochentag": "MITTWOCH",
"pruefungswoche": 2
},
"teilpruefungen": [
{
"kennung": "MZ1PH:SU:BMED:2",
"anzahlAnmeldungen": 2,
"fachkennungen": [
"BMED:20141:1370"
],
"pruefungsdurchfuehrungen": [
{
"dozentenkennung": "382",
"typ": "PRUEFER",
"raum": "KA.107",
"fachkennungen": [
"BMED:20141:1370"
]
},
{
"dozentenkennung": "74090",
"typ": "PRUEFER",
"raum": "KA.107",
"fachkennungen": [
"BMED:20141:1370"
]
}
]
},
{
"kennung": "PH:SU:BMED:2",
"anzahlAnmeldungen": 101,
"fachkennungen": [
"BMED:20201:1600"
],
"pruefungsdurchfuehrungen": [
{
"dozentenkennung": "73247",
"typ": "PRUEFER",
"raum": "ML.034",
"fachkennungen": [
"BMED:20201:1600"
]
},
{
"dozentenkennung": "316",
"typ": "PRUEFER",
"raum": "KA.140",
"fachkennungen": [
"BMED:20201:1600"
]
},
{
"dozentenkennung": "49",
"typ": "AUFSICHT",
"raum": "ML.034",
"fachkennungen": [
"BMED:20201:1600"
]
}
]
}
],
"dozentenKennungPendler": ""
},
{
"kennung": "126efi:WPF:EFI:0",
"pruefungsart": "LN_VORGEZOGEN",
"teilpruefungen": [],
"dozentenKennungPendler": ""
},
{
"kennung": "MUK:SU:BME:6",
"pruefungsart": "PRUEFUNG",
"teilpruefungen": [
{
"kennung": "MUK:SU:BME:6",
"anzahlAnmeldungen": 0,
"fachkennungen": [
"BME:20131:4520"
],
"pruefungsdurchfuehrungen": []
}
],
"dozentenKennungPendler": ""
},
{
"kennung": "ET1:SU:BMF:1",
"pruefungsart": "LN_STUDIENBEGLEITEND",
"termin": {
"datumText": "03.07.2024 08:30 MESZ",
"jahr": 2024,
"monat": 7,
"tag": 3,
"stunde": 8,
"minute": 30,
"wochentag": "MITTWOCH",
"pruefungswoche": 0
},
"teilpruefungen": [
{
"kennung": "ET1:SU:BMF:1",
"anzahlAnmeldungen": 12,
"fachkennungen": [
"BMF:20171:1180"
],
"pruefungsdurchfuehrungen": [
{
"dozentenkennung": "73630",
"typ": "PRUEFER",
"raum": "KH.108",
"fachkennungen": [
"BMF:20171:1180"
]
},
{
"dozentenkennung": "576",
"typ": "PRUEFER",
"raum": "KH.108",
"fachkennungen": [
"BMF:20171:1180"
]
}
]
}
],
"dozentenKennungPendler": ""
},
{
"kennung": "mAUT4#AB:SU:MSY:1",
"pruefungsart": "PRUEFUNG",
"termin": {
"datumText": "30.07.2024 11:00 MESZ",
"jahr": 2024,
"monat": 7,
"tag": 30,
"stunde": 11,
"minute": 0,
"wochentag": "DIENSTAG",
"pruefungswoche": 3
},
"teilpruefungen": [
{
"kennung": "mAUT4#AB:SU:MSY:1",
"anzahlAnmeldungen": 31,
"fachkennungen": [
"MAPR:20201:8425",
"MSY:20091:8425"
],
"pruefungsdurchfuehrungen": [
{
"dozentenkennung": "219",
"typ": "PRUEFER",
"raum": "KA.213",
"fachkennungen": [
"MAPR:20201:8425",
"MSY:20091:8425"
]
},
{
"dozentenkennung": "75398",
"typ": "PRUEFER",
"raum": "KA.213",
"fachkennungen": [
"MAPR:20201:8425",
"MSY:20091:8425"
]
}
]
}
],
"dozentenKennungPendler": ""
},
{
"kennung": "MAPR:20201:5020:\"393,159,355\"",
"pruefungsart": "LN_VORGEZOGEN",
"teilpruefungen": [],
"dozentenKennungPendler": ""
},
{
"kennung": "TO:SU:BMF:6_TO:SU:BMMF:4",
"pruefungsart": "PRUEFUNG",
"termin": {
"datumText": "13.07.2024 08:30 MESZ",
"jahr": 2024,
"monat": 7,
"tag": 13,
"stunde": 8,
"minute": 30,
"wochentag": "SAMSTAG",
"pruefungswoche": 1
},
"teilpruefungen": [
{
"kennung": "TO:SU:BMMF:4",
"anzahlAnmeldungen": 30,
"fachkennungen": [
"BMED:20141:5350",
"BMED:20201:5350"
],
"pruefungsdurchfuehrungen": [
{
"dozentenkennung": "508",
"typ": "PRUEFER",
"raum": "KA.440",
"fachkennungen": [
"BMED:20141:5350",
"BMED:20201:5350"
]
},
{
"dozentenkennung": "585",
"typ": "PRUEFER",
"raum": "KA.107",
"fachkennungen": [
"BMED:20141:5350",
"BMED:20201:5350"
]
}
]
},
{
"kennung": "TO:SU:BMF:6",
"anzahlAnmeldungen": 29,
"fachkennungen": [
"BMF:20171:4130"
],
"pruefungsdurchfuehrungen": [
{
"dozentenkennung": "508",
"typ": "PRUEFER",
"raum": "KA.440",
"fachkennungen": [
"BMF:20171:4130"
]
},
{
"dozentenkennung": "585",
"typ": "PRUEFER",
"raum": "KA.107",
"fachkennungen": [
"BMF:20171:4130"
]
}
]
}
],
"dozentenKennungPendler": ""
},
{
"kennung": "M1:SU:BMED:1",
"pruefungsart": "LN_STUDIENBEGLEITEND",
"termin": {
"datumText": "10.07.2024 16:30 MESZ",
"jahr": 2024,
"monat": 7,
"tag": 10,
"stunde": 16,
"minute": 30,
"wochentag": "MITTWOCH",
"pruefungswoche": 0
},
"teilpruefungen": [
{
"kennung": "M1:SU:BMED:1",
"anzahlAnmeldungen": 35,
"fachkennungen": [
"BMED:20141:1210",
"BMED:20201:1510"
],
"pruefungsdurchfuehrungen": [
{
"dozentenkennung": "73998",
"typ": "PRUEFER",
"raum": "MC.100",
"fachkennungen": [
"BMED:20141:1210",
"BMED:20201:1510"
]
},
{
"dozentenkennung": "259",
"typ": "PRUEFER",
"raum": "MC.100",
"fachkennungen": [
"BMED:20141:1210",
"BMED:20201:1510"
]
}
]
}
],
"dozentenKennungPendler": ""
},
{
"kennung": "FO:SU:BME:2",
"pruefungsart": "LN_VORGEZOGEN",
"teilpruefungen": [],
"dozentenKennungPendler": ""
},
{
"kennung": "BW:SU:BEI:5",
"pruefungsart": "PRUEFUNG",
"termin": {
"datumText": "11.07.2024 08:30 MESZ",
"jahr": 2024,
"monat": 7,
"tag": 11,
"stunde": 8,
"minute": 30,
"wochentag": "DONNERSTAG",
"pruefungswoche": 1
},
"teilpruefungen": [
{
"kennung": "BW:SU:BEI:5",
"anzahlAnmeldungen": 49,
"fachkennungen": [
"BEI:20141:3800"
],
"pruefungsdurchfuehrungen": [
{
"dozentenkennung": "74065",
"typ": "PRUEFER",
"raum": "MC.100",
"fachkennungen": [
"BEI:20141:3800"
]
},
{
"dozentenkennung": "376",
"typ": "AUFSICHT",
"raum": "KA.111",
"fachkennungen": [
"BEI:20141:3800"
]
}
]
}
],
"dozentenKennungPendler": ""
},
{
"kennung": "MAPR:20201:5810:\"472,60104\"",
"pruefungsart": "LN_VORGEZOGEN",
"teilpruefungen": [],
"dozentenKennungPendler": ""
},
{
"kennung": "MK:SU:BMF:4",
"pruefungsart": "PRUEFUNG",
"termin": {
"datumText": "26.07.2024 08:30 MESZ",
"jahr": 2024,
"monat": 7,
"tag": 26,
"stunde": 8,
"minute": 30,
"wochentag": "FREITAG",
"pruefungswoche": 3
},
"teilpruefungen": [
{
"kennung": "MK:SU:BMF:4",
"anzahlAnmeldungen": 43,
"fachkennungen": [
"BMF:20171:4070"
],
"pruefungsdurchfuehrungen": [
{
"dozentenkennung": "350",
"typ": "PRUEFER",
"raum": "MC.100",
"fachkennungen": [
"BMF:20171:4070"
]
}
]
}
],
"dozentenKennungPendler": ""
},
{
"kennung": "024efi:WPF:EFI:0",
"pruefungsart": "LN_VORGEZOGEN",
"teilpruefungen": [],
"dozentenKennungPendler": ""
},
{
"kennung": "ELK1:SU:BEI:3_IBT:20141:6160:\"166\"",
"pruefungsart": "PRUEFUNG",
"termin": {
"datumText": "27.07.2024 11:00 MESZ",
"jahr": 2024,
"monat": 7,
"tag": 27,
"stunde": 11,
"minute": 0,
"wochentag": "SAMSTAG",
"pruefungswoche": 3
},
"teilpruefungen": [
{
"kennung": "ELK1:SU:BEI:3",
"anzahlAnmeldungen": 36,
"fachkennungen": [
"BEI:20141:5120",
"BMED:20141:5120"
],
"pruefungsdurchfuehrungen": [
{
"dozentenkennung": "166",
"typ": "PRUEFER",
"raum": "MC.100",
"fachkennungen": [
"BEI:20141:5120",
"BMED:20141:5120"
]
}
]
},
{
"kennung": "IBT:20141:6160:\"166\"",
"anzahlAnmeldungen": 6,
"fachkennungen": [
"IBT:20141:6160"
],
"pruefungsdurchfuehrungen": [
{
"dozentenkennung": "166",
"typ": "PRUEFER",
"raum": "MC.100",
"fachkennungen": [
"IBT:20141:6160"
]
}
]
}
],
"dozentenKennungPendler": ""
},
{
"kennung": "mINF6/1:SU:MSY:2",
"pruefungsart": "PRUEFUNG",
"teilpruefungen": [
{
"kennung": "mINF6/1:SU:MSY:2",
"anzahlAnmeldungen": 2,
"fachkennungen": [
"MAPR:20201:8835",
"MSY:20091:8835"
],
"pruefungsdurchfuehrungen": []
}
],
"dozentenKennungPendler": ""
},
{
"kennung": "MSY:20091:8361:\"49,75807\"",
"pruefungsart": "PRUEFUNG",
"termin": {
"datumText": "15.07.2024 08:30 MESZ",
"jahr": 2024,
"monat": 7,
"tag": 15,
"stunde": 8,
"minute": 30,
"wochentag": "MONTAG",
"pruefungswoche": 1
},
"teilpruefungen": [
{
"kennung": "MSY:20091:8361:\"49,75807\"",
"anzahlAnmeldungen": 8,
"fachkennungen": [
"MSY:20091:8361"
],
"pruefungsdurchfuehrungen": [
{
"dozentenkennung": "75807",
"typ": "PRUEFER",
"raum": "KA.217",
"fachkennungen": [
"MSY:20091:8361"
]
},
{
"dozentenkennung": "49",
"typ": "PRUEFER",
"raum": "KA.217",
"fachkennungen": [
"MSY:20091:8361"
]
}
]
}
],
"dozentenKennungPendler": ""
},
{
"kennung": "ET2:SU:BMF:2",
"pruefungsart": "PRUEFUNG",
"termin": {
"datumText": "19.07.2024 08:30 MESZ",
"jahr": 2024,
"monat": 7,
"tag": 19,
"stunde": 8,
"minute": 30,
"wochentag": "FREITAG",
"pruefungswoche": 2
},
"teilpruefungen": [
{
"kennung": "ET2:SU:BMF:2",
"anzahlAnmeldungen": 61,
"fachkennungen": [
"BMF:20171:1190"
],
"pruefungsdurchfuehrungen": [
{
"dozentenkennung": "73630",
"typ": "PRUEFER",
"raum": "BB.103",
"fachkennungen": [
"BMF:20171:1190"
]
},
{
"dozentenkennung": "492",
"typ": "PRUEFER",
"raum": "SP.467",
"fachkennungen": [
"BMF:20171:1190"
]
}
]
}
],
"dozentenKennungPendler": ""
},
{
"kennung": "I2#AB:SU:BEI:3",
"pruefungsart": "LN_STUDIENBEGLEITEND",
"termin": {
"datumText": "04.07.2024 11:00 MESZ",
"jahr": 2024,
"monat": 7,
"tag": 4,
"stunde": 11,
"minute": 0,
"wochentag": "DONNERSTAG",
"pruefungswoche": 0
},
"teilpruefungen": [
{
"kennung": "I2#AB:SU:BEI:3",
"anzahlAnmeldungen": 63,
"fachkennungen": [
"BEI:20141:5160",
"BEI:20141:5160",
"BMED:20141:5160",
"BMED:20141:5160"
],
"pruefungsdurchfuehrungen": [
{
"dozentenkennung": "84399",
"typ": "PRUEFER",
"raum": "BB.103",
"fachkennungen": [
"BEI:20141:5160",
"BEI:20141:5160",
"BMED:20141:5160",
"BMED:20141:5160"
]
},
{
"dozentenkennung": "38496",
"typ": "PRUEFER",
"raum": "KA.450",
"fachkennungen": [
"BEI:20141:5160",
"BEI:20141:5160",
"BMED:20141:5160",
"BMED:20141:5160"
]
},
{
"dozentenkennung": "62711",
"typ": "PRUEFER",
"raum": "BB.210",
"fachkennungen": [
"BEI:20141:5160",
"BEI:20141:5160",
"BMED:20141:5160",
"BMED:20141:5160"
]
},
{
"dozentenkennung": "73323",
"typ": "PRUEFER",
"raum": "BB.103",
"fachkennungen": [
"BEI:20141:5160",
"BEI:20141:5160",
"BMED:20141:5160",
"BMED:20141:5160"
]
}
]
}
],
"dozentenKennungPendler": ""
}
]
}
+1
View File
@@ -0,0 +1 @@
Hier landen die hochgeladenen Dateien
@@ -0,0 +1,577 @@
{
"revision": "2648:2829M",
"array": [
{
"kennungPruefung": "M1:SU:BEI:1",
"termin": {
"datumText": "10.07.2024 11:00 MESZ",
"jahr": 2024,
"monat": 7,
"tag": 10,
"stunde": 11,
"minute": 0,
"wochentag": "MITTWOCH",
"pruefungswoche": 0
},
"raum": "KA.450",
"kennungFaecher": [
"BEI:20141:1110"
],
"matrikel": [
3752511,
3743531,
3726002,
3756960,
3682959,
3747191,
3726312,
3727575,
3677443,
3724433,
3724165,
3748172,
3726338,
3671524,
3684924,
3571059,
3725229,
3678411,
3726268,
3303621,
3732643
]
},
{
"kennungPruefung": "BMED:20141:5150:\"103,166\"_BMED:20141:5150:\"70901\"_BMED:20201:5150:\"103,166\"",
"termin": {
"datumText": "11.07.2024 11:00 MESZ",
"jahr": 2024,
"monat": 7,
"tag": 11,
"stunde": 11,
"minute": 0,
"wochentag": "DONNERSTAG",
"pruefungswoche": 1
},
"raum": "KA.213",
"kennungFaecher": [
"BMED:20141:5150",
"BMED:20141:5150",
"BMED:20201:5150"
],
"matrikel": [
3691111,
3503148,
3680786,
3670499,
3634750,
3706613,
3527650,
3645338,
3706064,
3674877,
3291852,
3676053,
3578540,
3690651,
3621462,
3623453,
3623581,
3673432,
2747059,
3569726,
3673458,
3535000,
3623411
]
},
{
"kennungPruefung": "MZ1PH:SU:BMED:2_PH:SU:BMED:2",
"termin": {
"datumText": "24.07.2024 14:00 MESZ",
"jahr": 2024,
"monat": 7,
"tag": 24,
"stunde": 14,
"minute": 0,
"wochentag": "MITTWOCH",
"pruefungswoche": 2
},
"raum": "KA.107",
"kennungFaecher": [
"BMED:20141:1370"
],
"matrikel": [
3504398,
3516845
]
},
{
"kennungPruefung": "ET1:SU:BMF:1",
"termin": {
"datumText": "03.07.2024 08:30 MESZ",
"jahr": 2024,
"monat": 7,
"tag": 3,
"stunde": 8,
"minute": 30,
"wochentag": "MITTWOCH",
"pruefungswoche": 0
},
"raum": "KH.108",
"kennungFaecher": [
"BMF:20171:1180"
],
"matrikel": [
3584222,
3569599,
3565942,
3749645,
3756449,
3698347,
3628502,
3182142,
3673742,
3719352,
3693298,
3756564
]
},
{
"kennungPruefung": "mAUT4#AB:SU:MSY:1",
"termin": {
"datumText": "30.07.2024 11:00 MESZ",
"jahr": 2024,
"monat": 7,
"tag": 30,
"stunde": 11,
"minute": 0,
"wochentag": "DIENSTAG",
"pruefungswoche": 3
},
"raum": "KA.213",
"kennungFaecher": [
"MAPR:20201:8425",
"MSY:20091:8425"
],
"matrikel": [
3716009,
3518430,
3506909,
3513240,
3503119,
3724136,
3767142,
3767155,
3707610,
3508565,
3503429,
3581599,
3754052,
3516832,
3772463,
3508680,
3505960,
3569630,
3577853,
3244724,
3502563,
3503094,
3580352,
3164060,
3502873,
3559848,
3723960,
3758612,
3513224,
3289528,
3768800
]
},
{
"kennungPruefung": "TO:SU:BMF:6_TO:SU:BMMF:4",
"termin": {
"datumText": "13.07.2024 08:30 MESZ",
"jahr": 2024,
"monat": 7,
"tag": 13,
"stunde": 8,
"minute": 30,
"wochentag": "SAMSTAG",
"pruefungswoche": 1
},
"raum": "KA.107",
"kennungFaecher": [
"BMED:20141:5350",
"BMED:20201:5350",
"BMF:20171:4130"
],
"matrikel": [
3622836,
3574261,
3529162,
3617023,
3616170,
3615636,
3629947,
3584699,
3624405,
3556537,
3616138,
3513422,
3619874,
3621178,
3623929,
2984098,
2931071,
3513266,
2267607
]
},
{
"kennungPruefung": "M1:SU:BMED:1",
"termin": {
"datumText": "10.07.2024 16:30 MESZ",
"jahr": 2024,
"monat": 7,
"tag": 10,
"stunde": 16,
"minute": 30,
"wochentag": "MITTWOCH",
"pruefungswoche": 0
},
"raum": "MC.100",
"kennungFaecher": [
"BMED:20141:1210",
"BMED:20201:1510"
],
"matrikel": [
3733583,
3746008,
3751361,
3673445,
3739767,
3749629,
3719307,
3742617,
3740220,
3720860,
3721838,
3504653,
3754586,
3726479,
3561069,
3727869,
3740275,
3728051,
3724967,
3512920,
3581490,
3711062,
3759862,
3649154,
3756551,
3636093,
3719266,
3635348,
3719563,
3727393,
3761041,
3691393,
3638266,
3633414,
3622852
]
},
{
"kennungPruefung": "BW:SU:BEI:5",
"termin": {
"datumText": "11.07.2024 08:30 MESZ",
"jahr": 2024,
"monat": 7,
"tag": 11,
"stunde": 8,
"minute": 30,
"wochentag": "DONNERSTAG",
"pruefungswoche": 1
},
"raum": "MC.100",
"kennungFaecher": [
"BEI:20141:3800"
],
"matrikel": [
3616675,
3647725,
3627406,
3572030,
3235621,
3161199,
3512045,
3628672,
3308517,
3235250,
3634396,
3616703,
3627381,
3085850,
3620436,
3622159,
3569205,
3628205,
3263104,
3516957,
3628630,
3615850,
3647866,
3627419,
3641161,
3627831,
3622191,
3017956
]
},
{
"kennungPruefung": "MK:SU:BMF:4",
"termin": {
"datumText": "26.07.2024 08:30 MESZ",
"jahr": 2024,
"monat": 7,
"tag": 26,
"stunde": 8,
"minute": 30,
"wochentag": "FREITAG",
"pruefungswoche": 3
},
"raum": "MC.100",
"kennungFaecher": [
"BMF:20171:4070"
],
"matrikel": [
3544163,
3643800,
3621545,
3668827,
3569599,
3678479,
3246109,
3698350,
3583791,
3678437,
3693511,
3619902,
3699683,
3733244,
3627394,
3667523,
3700385,
3678226,
3698839,
3678495,
3036482,
3678440,
3684474,
3664621,
3698347,
3693243,
3564309,
3629947,
3584699,
3645721,
3687433,
3693269,
3678242,
3638914,
3619874,
3678424,
3234192,
3682438,
3669428,
3665967,
3693272,
3706626,
3665222
]
},
{
"kennungPruefung": "ELK1:SU:BEI:3_IBT:20141:6160:\"166\"",
"termin": {
"datumText": "27.07.2024 11:00 MESZ",
"jahr": 2024,
"monat": 7,
"tag": 27,
"stunde": 11,
"minute": 0,
"wochentag": "SAMSTAG",
"pruefungswoche": 3
},
"raum": "MC.100",
"kennungFaecher": [
"BEI:20141:5120",
"BMED:20141:5120",
"IBT:20141:6160"
],
"matrikel": [
3569979,
3647684,
3572030,
3633737,
3530133,
3509559,
3627381,
3085850,
3706121,
3670064,
3513381,
3263104,
3670402,
3670936,
3536119,
3692598,
3615272,
3692639,
3692668,
3671962,
3667932,
3672617,
3692837,
3674822,
3671805,
3513026,
3670051,
3693214,
3577712,
3668517,
3673586,
3672068,
3702392,
3722314,
3645792,
3534748,
3638394,
3305701,
3291335,
3637256,
3589933,
3589988
]
},
{
"kennungPruefung": "MSY:20091:8361:\"49,75807\"",
"termin": {
"datumText": "15.07.2024 08:30 MESZ",
"jahr": 2024,
"monat": 7,
"tag": 15,
"stunde": 8,
"minute": 30,
"wochentag": "MONTAG",
"pruefungswoche": 1
},
"raum": "KA.217",
"kennungFaecher": [
"MSY:20091:8361"
],
"matrikel": [
3581599,
2761145,
3132088,
3757011,
2694152,
3768798,
3713545,
3506826
]
},
{
"kennungPruefung": "ET2:SU:BMF:2",
"termin": {
"datumText": "19.07.2024 08:30 MESZ",
"jahr": 2024,
"monat": 7,
"tag": 19,
"stunde": 8,
"minute": 30,
"wochentag": "FREITAG",
"pruefungswoche": 2
},
"raum": "SP.467",
"kennungFaecher": [
"BMF:20171:1190"
],
"matrikel": [
3726495,
3756449,
3721148,
3664621,
3721825,
3698347,
3628502,
3720831,
3182142,
3742505,
3250956,
3720901,
3688315,
3719253,
3720844,
3673742,
3513422,
3726239,
3719237,
3753899,
2984098,
3234192,
3719352,
3257531,
3693298,
3198761,
3756564,
3726099,
3719914
]
},
{
"kennungPruefung": "I2#AB:SU:BEI:3",
"termin": {
"datumText": "04.07.2024 11:00 MESZ",
"jahr": 2024,
"monat": 7,
"tag": 4,
"stunde": 11,
"minute": 0,
"wochentag": "DONNERSTAG",
"pruefungswoche": 0
},
"raum": "KA.450",
"kennungFaecher": [
"BEI:20141:5160",
"BEI:20141:5160",
"BMED:20141:5160",
"BMED:20141:5160"
],
"matrikel": [
3641161,
3670936,
3565575,
3536119,
3570982,
3615272,
3692613,
3570627,
3629017,
3590623,
3629033,
3667932,
3706118,
3702389,
3630286,
3283310,
3715284,
3671087,
3271030,
3674822,
3665277
]
}
]
}
+9
View File
@@ -0,0 +1,9 @@
from django import forms
class UploadFileForm(forms.Form):
student_file = forms.FileField(required=False)
exams_file = forms.FileField(required=False)
lecturers_file = forms.FileField(required=False)
subjects_file = forms.FileField(required=False)
attendance_file = forms.FileField(required=False)
@@ -0,0 +1,20 @@
# Generated by Django 3.2 on 2021-04-30 12:03
from django.db import migrations, models
class Migration(migrations.Migration):
initial = True
dependencies = [
]
operations = [
migrations.CreateModel(
name='JsonParser',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
],
),
]
+454
View File
@@ -0,0 +1,454 @@
import inspect
from django.db import models
from medinf.settings import (
PP_EXAM_FILE,
PP_ATTENDANCE_FILE,
PP_STUDENT_FILE,
PP_SUBJECT_FILE,
PP_TEACHER_FILE,
)
from pruefplan_viewer.models import (
API_ExamDataSet_ForStudent,
Attendance,
Subject,
Exam,
Lecturer,
PartialExam,
ExamExecution,
Student,
StudentExam,
)
import json
import datetime
class JsonParser(models.Model):
exceptionMessages = []
warningMessages = []
def clearTable(self):
JsonParser.exceptionMessages.clear()
JsonParser.warningMessages.clear()
Subject.objects.all().delete()
Exam.objects.all().delete()
Attendance.objects.all().delete()
Lecturer.objects.all().delete()
Student.objects.all().delete()
PartialExam.objects.all().delete()
ExamExecution.objects.all().delete()
StudentExam.objects.all().delete()
API_ExamDataSet_ForStudent.objects.all().delete()
def fillLecturerTable(self):
idKey = "kennung"
firstNameKey = "vorname"
lastNameKey = "nachname"
titleKey = "titel"
try:
with open(PP_TEACHER_FILE, encoding="utf-8") as json_file:
data = json.load(json_file)
revision = data["revision"] # TODO -> Do Something with Revision
for d in data["array"]:
entry = Lecturer(
identification=d[idKey],
firstName=d[firstNameKey],
lastName=d[lastNameKey],
title=d[titleKey],
) # Create new Lecturer entry
entry.save()
except FileNotFoundError as e:
JsonParser.exceptionMessages.append(
"Exception of type [FileNotFound]. Message: " + str(e)
)
except KeyError as e:
calling_function = inspect.stack()[0][3]
iteration_number = data["array"].index(d)
template = "Exception of type [{0}] occurred in function {1} in iteration {2} of the loop.. Arguments: {3!r}. Message: [{4}] entry might be missing in {5!r}"
message = template.format(
type(e).__name__,
calling_function,
iteration_number,
e.args,
e,
PP_TEACHER_FILE,
)
JsonParser.exceptionMessages.append(message)
except Exception as e:
calling_function = inspect.stack()[0][3]
template = "Exception of type [{0}] occurred in function {1} in iteration {2} of the loop. Arguments: {3!r}. Message: {4}."
message = template.format(
type(e).__name__,
calling_function,
iteration_number,
e.args,
e.__str__(),
)
JsonParser.exceptionMessages.append(message)
def fillAttendanceTable(self):
idKey = "dozentenkennung"
yearKey = "jahr"
monthKey = "monat"
dayKey = "tag"
hourKey = "stunde"
minuteKey = "minute"
weekdayKey = "wochentag"
dateKey = "termin"
try:
with open(PP_ATTENDANCE_FILE, encoding="utf-8") as json_file:
data = json.load(json_file)
revision = data["revision"] # TODO -> Do Something with Revision
for d in data["array"]:
keyAvailable = "termin" in d
if (
not keyAvailable
): # These attendance entries were not assigned any examination date
template = "Warning. Location: {0!r}. Following Exam was not assigned any examination date ['termin']: [{1}]"
message = template.format(PP_EXAM_FILE, d[idKey])
JsonParser.warningMessages.append(message)
continue
date = datetime.date(
d[dateKey][yearKey], d[dateKey][monthKey], d[dateKey][dayKey]
)
time = datetime.time(d[dateKey][hourKey], d[dateKey][minuteKey])
entry = Attendance(
identification=d[idKey],
time=time,
date=date,
dateTimeText=d[dateKey]["datumText"],
weekday=d[dateKey]["wochentag"],
) # Create new Lecturer entry
entry.save()
try:
# Get the Lecturer with the "Dozentenkennung" of this attendance entry
lecturer = Lecturer.objects.get(identification=d[idKey])
# Link this attendance entry to the lecturer
lecturer.attendance_set.add(entry)
except Exception as e:
template = "Exception of type [{0}]. Arguments: {1!r}. Message: [{2}] entry might be missing in {3!r}"
message = template.format(
type(e).__name__, e.args, idKey, PP_TEACHER_FILE
)
JsonParser.exceptionMessages.append(message)
except FileNotFoundError as e:
JsonParser.exceptionMessages.append(
"Exception of type [FileNotFound]. Message: " + str(e)
)
except KeyError as e:
calling_function = inspect.stack()[0][3]
iteration_number = data["array"].index(d)
template = "Exception of type [{0}] occurred in function {1} in iteration {2} of the loop.. Arguments: {3!r}. Message: [{4}] entry might be missing in {5!r}"
message = template.format(
type(e).__name__,
calling_function,
iteration_number,
e.args,
e,
PP_ATTENDANCE_FILE,
)
JsonParser.exceptionMessages.append(message)
except Exception as e:
calling_function = inspect.stack()[0][3]
iteration_number = data["array"].index(d)
template = "Exception of type [{0}] occurred in function {1} in iteration {2} of the loop. Arguments: {3!r}. Message: {4}."
message = template.format(
type(e).__name__,
calling_function,
iteration_number,
e.args,
e.__str__(),
)
JsonParser.exceptionMessages.append(message)
def fillSubjectTable(self):
idKey = "kennung"
initialsKey = "kurztext"
nameKey = "langtext"
ohmIdKey = "fachkennungOhm"
try:
with open(PP_SUBJECT_FILE, encoding="utf-8") as json_file:
data = json.load(json_file)
revision = data["revision"] # TODO -> Do Something with Revision
for d in data["array"]:
entry = Subject(
identification=d[idKey],
initials=d[ohmIdKey][initialsKey],
name=d[ohmIdKey][nameKey],
) # Create new Subject entry
entry.save()
except FileNotFoundError as e:
JsonParser.exceptionMessages.append(
"Exception of type [FileNotFound]. Message:" + str(e)
)
except KeyError as e:
calling_function = inspect.stack()[0][3]
iteration_number = data["array"].index(d)
template = "Exception of type [{0}] occurred in function {1} in iteration {2} of the loop.. Arguments: {3!r}. Message: [{4}] entry might be missing in {5!r}"
message = template.format(
type(e).__name__,
calling_function,
iteration_number,
e.args,
e,
PP_SUBJECT_FILE,
)
JsonParser.exceptionMessages.append(message)
except Exception as e:
calling_function = inspect.stack()[0][3]
iteration_number = data["array"].index(d)
template = "Exception of type [{0}] occurred in function {1} in iteration {2} of the loop. Arguments: {3!r}. Message: {4}."
message = template.format(
type(e).__name__,
calling_function,
iteration_number,
e.args,
e.__str__(),
)
JsonParser.exceptionMessages.append(message)
def fillExamTable(self):
idKey = "kennung"
yearKey = "jahr"
monthKey = "monat"
dayKey = "tag"
hourKey = "stunde"
minuteKey = "minute"
weekdayKey = "wochentag"
dateKey = "termin"
partialExamsKey = "teilpruefungen"
partialExamIdKey = "kennung"
numRegStudKey = "anzahlAnmeldungen"
subjectIdsKey = "fachkennungen"
examExecutionsKey = "pruefungsdurchfuehrungen"
lecturerIdKey = "dozentenkennung"
supervisorTypeKey = "typ"
locationKey = "raum"
try:
with open(PP_EXAM_FILE, encoding="utf-8") as json_file:
data = json.load(json_file)
revision = data["revision"] # TODO -> Do Something with Revision
for d in data["array"]:
if (
d["pruefungsart"] == "LN_VORGEZOGEN"
): # These entries can be ignored
continue
keyAvailable = "termin" in d
if (
not keyAvailable
): # These exam entries were not assigned any examination date
template = "Warning. Location: {0!r}. Following Exam was not assigned any examination date ['termin']: [{1}]"
message = template.format(PP_EXAM_FILE, d[idKey])
JsonParser.warningMessages.append(message)
continue
date = datetime.date(
d[dateKey][yearKey], d[dateKey][monthKey], d[dateKey][dayKey]
)
time = datetime.time(d[dateKey][hourKey], d[dateKey][minuteKey])
examEntry = Exam(
identification=d[idKey],
date=date,
time=time,
weekday=d[dateKey][weekdayKey],
) # Create new Exam entry
examEntry.save()
for teilpruef in d[partialExamsKey]:
partialExamId = teilpruef[partialExamIdKey]
regStudCount = teilpruef[numRegStudKey]
partialExam = PartialExam(
identification=partialExamId, regStudCount=regStudCount
) # Create new Partialexam entry
partialExam.save()
examEntry.partialexam_set.add(
partialExam
) # Add connection Exam(One) to PartialExam(Many)
for subId in teilpruef[subjectIdsKey]:
# check if subject exists
try:
subject = Subject.objects.get(identification=subId)
partialExam.subjectIds.add(
subject
) # Add connection PartialExam(Many) to Subject(Many)
except Exception as e:
template = "Exception of type [{0}]. Arguments: {1!r}. Message: [{2}] entry might be missing in {3!r}"
message = template.format(
type(e).__name__, e.args, subId, PP_SUBJECT_FILE
)
JsonParser.exceptionMessages.append(message)
for pruefdurch in teilpruef[examExecutionsKey]:
lecId = pruefdurch[lecturerIdKey]
supervisorType = pruefdurch[supervisorTypeKey]
location = pruefdurch[locationKey]
examExecution = ExamExecution(
supervisorType=supervisorType, location=location
) # Create new ExamExecution entry
examExecution.save()
# check if lecturer exists
try:
lecturer = Lecturer.objects.get(pk=lecId)
lecturer.examexecution_set.add(
examExecution
) # Add connection Lecturer (One) to ExamExecution (Many)
except Exception as e:
template = "Exception of type [{0}]. Arguments: {1!r}. Message: [{2}] entry might be missing in {3!r}"
message = template.format(
type(e).__name__, e.args, lecId, PP_TEACHER_FILE
)
JsonParser.exceptionMessages.append(message)
for subId in pruefdurch[subjectIdsKey]:
# check if subject exists
try:
subject = Subject.objects.get(identification=subId)
examExecution.subjectIds.add(
subject
) # Add connection ExamExecution(Many) to Subject(Many)
except Exception as e:
template = "Exception of type [{0}]. Arguments: {1!r}. Message: [{2}] entry might be missing in {3!r}"
message = template.format(
type(e).__name__, e.args, subId, PP_SUBJECT_FILE
)
JsonParser.exceptionMessages.append(message)
partialExam.examexecution_set.add(
examExecution
) # Add connection PartialExam(One) to ExamExecution(Many)
except FileNotFoundError as e:
JsonParser.exceptionMessages.append(
"Exception of type [FileNotFound]. Message" + str(e)
)
except KeyError as e:
calling_function = inspect.stack()[0][3]
iteration_number = data["array"].index(d)
template = "Exception of type [{0}] occurred in function {1} in iteration {2} of the loop.. Arguments: {3!r}. Message: [{4}] entry might be missing in {5!r}"
message = template.format(
type(e).__name__,
calling_function,
iteration_number,
e.args,
e,
PP_EXAM_FILE,
)
JsonParser.exceptionMessages.append(message)
except Exception as e:
calling_function = inspect.stack()[0][3]
iteration_number = data["array"].index(d)
template = "Exception of type [{0}] occurred in function {1} in iteration {2} of the loop. Arguments: {3!r}. Message: {4}."
message = template.format(
type(e).__name__,
calling_function,
iteration_number,
e.args,
e.__str__(),
)
JsonParser.exceptionMessages.append(message)
def fillStudentExamTable(self):
idKey = "kennungPruefung"
yearKey = "jahr"
monthKey = "monat"
dayKey = "tag"
hourKey = "stunde"
minuteKey = "minute"
weekdayKey = "wochentag"
locationKey = "raum"
dateKey = "termin"
matrikelKey = "matrikel"
try:
with open(PP_STUDENT_FILE, encoding="utf-8") as json_file:
data = json.load(json_file)
revision = data["revision"] # TODO -> Do Something with Revision
for d in data["array"]:
date = datetime.date(
d[dateKey][yearKey], d[dateKey][monthKey], d[dateKey][dayKey]
)
time = datetime.time(d[dateKey][hourKey], d[dateKey][minuteKey])
exam = Exam.objects.filter(
identification=d[idKey], date=date, time=time
).first()
partialExams = exam.partialexam_set.all()
for partialExam in partialExams:
examExecutions = partialExam.examexecution_set.all()
for examExecution in examExecutions:
if examExecution.location == d[locationKey]:
studentExamEntry = StudentExam(
examIdentification=d[idKey],
date=date,
time=time,
weekday=d[dateKey][weekdayKey],
location=d[locationKey],
examExecution=examExecution,
) # Create new StudentExam entry
studentExamEntry.save()
for matrikel in d[matrikelKey]:
studentEntry = Student.objects.filter(
matrikel=matrikel
).exists()
if (
studentEntry is False
): # Create new Student entry if does not already exists
entry = Student(matrikel=matrikel)
entry.save()
else:
entry = (
Student.objects.all().filter(matrikel=matrikel).first()
)
entry.exams.add(studentExamEntry)
except FileNotFoundError as e:
JsonParser.exceptionMessages.append(
"Exception of type [FileNotFound]. Message:" + str(e)
)
except KeyError as e:
calling_function = inspect.stack()[0][3]
iteration_number = data["array"].index(d)
template = "Exception of type [{0}] occurred in function {1} in iteration {2} of the loop.. Arguments: {3!r}. Message: [{4}] entry might be missing in {5!r}"
message = template.format(
type(e).__name__,
calling_function,
iteration_number,
e.args,
e,
PP_STUDENT_FILE,
)
JsonParser.exceptionMessages.append(message)
except Exception as e:
calling_function = inspect.stack()[0][3]
iteration_number = data["array"].index(d)
template = "Exception of type [{0}] occurred in function {1} in iteration {2} of the loop. Arguments: {3!r}. Message: {4}."
message = template.format(
type(e).__name__,
calling_function,
iteration_number,
e.args,
e.__str__(),
)
JsonParser.exceptionMessages.append(message)
+10
View File
@@ -0,0 +1,10 @@
from django.urls import path
from . import views
app_name = 'pp_parser'
urlpatterns = [
path('parse', views.parse, name='parse'),
path('clearTable', views.clearTable, name='clearTable'),
path('upload_file', views.upload_file, name='upload_file'),
]
+7
View File
@@ -0,0 +1,7 @@
def handle_uploaded_file(f, location):
if f is not None:
with open(location, 'wb+') as destination:
for chunk in f.chunks():
destination.write(chunk)
+65
View File
@@ -0,0 +1,65 @@
from django.shortcuts import render
from .models import JsonParser
from pruefplan_parser.models import JsonParser
from django.shortcuts import render
from django.contrib.auth.decorators import user_passes_test
from .forms import UploadFileForm
from pruefplan_parser.utils import handle_uploaded_file
from medinf.settings import (
PP_EXAM_FILE,
PP_ATTENDANCE_FILE,
PP_STUDENT_FILE,
PP_SUBJECT_FILE,
PP_TEACHER_FILE,
)
def is_pp_admin(user):
return user.groups.filter(name="PP_ADMIN").exists()
def parse():
parser = JsonParser()
parser.clearTable()
parser.fillLecturerTable()
parser.fillAttendanceTable()
parser.fillSubjectTable()
parser.fillExamTable()
parser.fillStudentExamTable()
@user_passes_test(is_pp_admin)
def clearTable(request):
parser = JsonParser()
parser.clearTable()
return render(request, "pruefplan/clearTable.html")
@user_passes_test(is_pp_admin)
def upload_file(request):
if request.method == "POST":
form = UploadFileForm(request.POST, request.FILES)
if form.is_valid():
print(request.FILES)
handle_uploaded_file(
request.FILES.get("attendance_file"), PP_ATTENDANCE_FILE
)
handle_uploaded_file(request.FILES.get("student_file"), PP_STUDENT_FILE)
handle_uploaded_file(request.FILES.get("exams_file"), PP_EXAM_FILE)
handle_uploaded_file(request.FILES.get("lecturers_file"), PP_TEACHER_FILE)
handle_uploaded_file(request.FILES.get("subjects_file"), PP_SUBJECT_FILE)
parse()
if (
len(JsonParser.exceptionMessages) != 0
or len(JsonParser.warningMessages) != 0
):
context = {
"exceptions": JsonParser.exceptionMessages,
"warnings": JsonParser.warningMessages,
}
return render(request, "pruefplan/exceptionHandling.html", context)
else:
return render(request, "pruefplan/parse.html")
else:
form = UploadFileForm()
return render(request, "pruefplan/upload.html", {"form": form})