├── alembic
├── __init__.py
├── README
├── script.py.mako
├── versions
│ ├── d3d8e4c5a116_merge_the_two_alembic_heads_due_to_the_.py
│ ├── 513b563462f2_add_exam_column_resu.py
│ ├── bbf745a10dfa_delete_old_user_attributes_for_scheine.py
│ ├── 5f63f9c40f95_online_tutorial_indication.py
│ ├── 2a1638d875ac_add_column_tutor_rig.py
│ ├── 26162cefdac7_user_has_updated.py
│ ├── 49004a6100d6_lecture_allocation_criteria_priorities.py
│ ├── 3d0645977378_medical_certificate.py
│ ├── 7aef24a65ac8_lecture_allocation_criteria.py
│ ├── caab371ebc9f_email_preferences.py
│ ├── b759946a1129_tutorial_criteria.py
│ ├── 8c2d5633e0d2_bearertoken.py
│ ├── 14d5e28d3626_lecture_assistants.py
│ └── 5205d0ef9d62_add_table_for_allocations.py
└── env.py
├── muesli
├── tests
│ ├── api
│ │ ├── __init__.py
│ │ ├── v1
│ │ │ ├── __init__.py
│ │ │ ├── utilities.py
│ │ │ ├── exerciseTests.py
│ │ │ ├── examsTests.py
│ │ │ └── tutorialTests.py
│ │ └── webTests.py
│ ├── __init__.py
│ ├── utilsTests.py
│ ├── navigationTreeTests.py
│ └── rootTests.py
├── web
│ ├── templates
│ │ ├── index.pt
│ │ ├── user
│ │ │ ├── ajax_complete.pt
│ │ │ ├── change_email.pt
│ │ │ ├── change_password.pt
│ │ │ ├── wait_for_confirmation.pt
│ │ │ ├── change_email_wait_for_confirmation.pt
│ │ │ ├── reset_password.pt
│ │ │ ├── reset_password3.pt
│ │ │ ├── confirm.pt
│ │ │ ├── reset_password2.pt
│ │ │ ├── list.pt
│ │ │ ├── check.pt
│ │ │ ├── update.pt
│ │ │ ├── list_subjects_by_term.pt
│ │ │ ├── list_subjects.pt
│ │ │ ├── doublets.pt
│ │ │ ├── delete_unconfirmed.pt
│ │ │ ├── confirm_email.pt
│ │ │ ├── register_other.pt
│ │ │ ├── login.pt
│ │ │ ├── register.pt
│ │ │ ├── api_keys.pt
│ │ │ └── edit.pt
│ │ ├── dataprotection.pt
│ │ ├── changelog.pt
│ │ ├── lecture
│ │ │ ├── add.pt
│ │ │ ├── add_exam.pt
│ │ │ ├── add_grading.pt
│ │ │ ├── email_students.pt
│ │ │ ├── email_tutors.pt
│ │ │ ├── export_students_html.pt
│ │ │ ├── view_removed_students.pt
│ │ │ ├── add_student.pt
│ │ │ ├── export_totals.pt
│ │ │ ├── list.pt
│ │ │ ├── switch_students.pt
│ │ │ └── do_allocation.pt
│ │ ├── Fragments
│ │ │ ├── Format
│ │ │ │ ├── time_preferences_table.pt
│ │ │ │ ├── user_list.pt
│ │ │ │ ├── avgstd.pt
│ │ │ │ └── exam_points.pt
│ │ │ ├── HTML
│ │ │ │ ├── input_tristate.pt
│ │ │ │ ├── tutorial_occupancy.pt
│ │ │ │ └── move_student.pt
│ │ │ ├── api_keys_table.pt
│ │ │ ├── unsubscribe_modal.pt
│ │ │ ├── footer.pt
│ │ │ ├── main.pt
│ │ │ └── message_queue.pt
│ │ ├── tutorial
│ │ │ ├── edit.pt
│ │ │ ├── email.pt
│ │ │ ├── email_preference.pt
│ │ │ ├── add.pt
│ │ │ └── results.pt
│ │ ├── email_all_users.pt
│ │ ├── error.pt
│ │ ├── HTTPForbidden.pt
│ │ ├── exam
│ │ │ ├── add_or_edit_exercise.pt
│ │ │ ├── edit.pt
│ │ │ ├── export.pt
│ │ │ ├── enter_points_single.pt
│ │ │ ├── admission.pt
│ │ │ └── admission_interactive.pt
│ │ ├── HTTPInternalServerError.pt
│ │ ├── contact.pt
│ │ ├── HTTPBadRequest.pt
│ │ ├── grading
│ │ │ └── edit.pt
│ │ ├── test_exceptions.pt
│ │ └── email_users.pt
│ ├── static
│ │ ├── favicon.ico
│ │ ├── css
│ │ │ └── bt4-dropdown-submenu.css
│ │ └── js
│ │ │ ├── accidental-action-prevention.js
│ │ │ ├── bt4-dropdown-submenu.js
│ │ │ ├── unsubscribe_modal_helpers.js
│ │ │ └── april_fool.js
│ ├── yarn
│ │ ├── .gitignore
│ │ ├── package.json
│ │ └── handle_captcha.js
│ ├── api
│ │ ├── __init__.py
│ │ └── v1
│ │ │ ├── __init__.py
│ │ │ ├── helloEndpoint.py
│ │ │ ├── examEndpoint.py
│ │ │ └── allowed_attributes.py
│ └── tooltips.py
├── types.py
├── __init__.py
└── mail.py
├── api_tools
├── requirements.txt
├── __init__.py
├── tutorial_requests.py
├── sample_requests.py
├── lecture_requests.py
├── check_for_new_lectures.py
└── header.py
├── pytest.ini
├── .dockerignore
├── docker
├── .coverage.xml
├── docker-compose.override.yml
├── docker-testscript.sh
├── docker-serve.sh
├── run-tests.sh
├── init-db.sh
└── Dockerfile
├── muesli4.code-workspace
├── deployment
├── hide_lectures.sh
├── webhook.conf
├── update.sh
├── docker-compose.production.yml
├── PRODUCTION.md
└── production.ini
├── docker-compose.override.yml
├── .gitignore
├── .codecov.yml
├── alembic.ini.example
├── docker-compose.yml
├── requirements.txt
├── development.ini
├── .github
└── workflows
│ ├── codeql-analysis.yml
│ └── main.yml
├── README.md
└── muesli.yml.example
/alembic/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/muesli/tests/api/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/muesli/web/templates/index.pt:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/alembic/README:
--------------------------------------------------------------------------------
1 | Generic single-database configuration.
--------------------------------------------------------------------------------
/api_tools/requirements.txt:
--------------------------------------------------------------------------------
1 | requests
2 | coloredlogs
3 |
--------------------------------------------------------------------------------
/pytest.ini:
--------------------------------------------------------------------------------
1 | [pytest]
2 | python_files=*Tests.py
3 | python_classes=Tests
4 |
5 |
--------------------------------------------------------------------------------
/.dockerignore:
--------------------------------------------------------------------------------
1 | .git
2 | docker-compose.yml
3 | docker-compose.override.yml
4 | Dockerfile
5 |
--------------------------------------------------------------------------------
/docker/.coverage.xml:
--------------------------------------------------------------------------------
1 |
7 | Ihr Zugang wurde angelegt, muss aber noch freigeschaltet werden. 8 | In den nächsten Minuten sollten Sie einen Link zur Bestätigung der Registrierung per Mail erhalten. 9 | Sollten Sie keine Mail erhalten, so wenden Sie sich bitte an uns. 10 |
11 | 12 |8 | In den nächsten Minuten sollten Sie eine E-Mail an die neue Adresse zur Bestätigung der Änderung erhalten. 9 | Bitte folgen Sie dann dem dort angegebenen Link. 10 | Sollten Sie keine Mail erhalten, so wenden Sie sich bitte an uns. 11 |
12 | 13 |8 | Um Ihr Passwort zurückzusetzen geben Sie bitte Ihre E-Mail-Adresse an. 9 |
10 | 11 | 14 | 15 |8 | Bitte geben Sie ein neues Passwort an. 9 |
10 | 11 | 14 | 15 |Um die Registrierung abzuschließen, geben Sie bitte unten ein Passwort ein.
8 | 9 | 12 | 13 |8 | Sie sollten in wenigen Minuten eine E-Mail erhalten. 9 | Bitte folgen Sie dem Verweis dort um Ihr Passwort zurückzusetzen. 10 |
11 | 12 |13 | Sollte die E-Mail nicht in den nächsten Stunden haben oder Sie weitere Probleme haben, so nehmen Sie Kontakt mit uns auf. 14 |
15 | 16 |8 | Vorlesung: ${lecture.name} 9 |
10 | 11 | 14 | 15 | 16 |8 | Vorlesung: ${lecture.name} 9 |
10 | 11 | 14 | 15 | 16 |${names['name']} ${tutorial.lecture.name}
8 | 9 |${error_msg}
10 | 11 | 12 | 15 | 16 || Name | 10 ||
|---|---|
| 15 | 16 | ${user.name} 17 | 18 | | 19 |${user.email} | 20 |
7 | Die deaktivierten Felder können Sie nicht selber ändern. Um diese Daten zu 8 | korrigieren, schreiben Sie uns bitte eine Mail. 9 |
10 | 11 | 14 | 15 |8 | Auf dieser Seite können Sie eine Nachricht an alle Studenten schicken. 9 | Geben Sie hierzu in das Formular unten einen Betreff und die Nachricht ein und klicken dann auf "E-Mail senden". 10 |
11 | 12 | 13 | 14 | 18 | 19 |Anzahl: ${len(students)}
20 | 21 |8 | Bei der Bearbeitung Ihrer Anfrage ist ein interner Fehler aufgetreten. 9 | Bitte wenden Sie sich an uns falls das Problem in einigen Minuten weiter auftritt. 10 | Geben Sie dann bitte die Informationen unten an. 11 |
12 | 13 || URI | 16 |${request.path} | 17 |
| Zeit | 20 |${now} | 21 |
| Nutzer | 24 |${email} | 25 |
7 | Sie haben nicht die nötigen Rechte, um auf diese Seite zuzugreifen. 8 |
9 | 10 |11 | Wenn Sie der Meinung sind, dass Sie auf diese Seite zugreifen können sollten, 12 | melden Sie sich bitte bei uns. 13 |
14 |15 | Sie sind derzeit nicht angemeldet. Bitte 16 | melden Sie sich an und versuchen Sie es erneut. 17 |
18 |8 | Auf dieser Seite können Sie eine Nachricht an alle Studenten, die für Übungsgruppen eingeteilt sind, schicken. 9 | Geben Sie hierzu in das Formular unten einen Betreff und die Nachricht ein und klicken dann auf "E-Mail senden". 10 |
11 | 12 | 13 | 17 | 18 | 19 |7 | Nur Werte ab ${settings['starting_term']}, mit minimal ${settings['minimal_count']} Teilnahmen über alle Semester pro 8 | Studiengang. Ausgeschlossen sind Veranstaltungen mit „${settings['exclude_lecture_name']}“ im Namen. 9 |
10 | 11 || Studiengang | 14 |${term} | 15 |
|---|---|
| ${subject} | 18 |${count[1]} | 19 |
8 | Auf dieser Seite können Sie eine Nachricht an alle Übungsleiter dieser Vorlesung schreiben. 9 | Geben Sie hierzu in das Formular unten einen Betreff und die Nachricht ein und klicken dann auf "E-Mail senden". 10 | Die Assistenten für diese Vorlesung können eine Kopie der Mitteilung erhalten. 11 |
12 | 13 | 14 | 18 | 19 | 20 || Studiengang | 11 |Anzahl | 12 |
|---|---|
| 17 | 18 | ${subject} 19 | 20 | | 21 |22 | ${count} 23 | | 24 |
| Gesamt | 27 |${len(subjects.all())} | 28 |
8 | ${exam.lecture.name}, 9 | ${exam.name} 10 |
11 | 12 |11 | Auf dieser Seite können Sie eine Nachricht an alle Studenten in Ihrer Übungsgruppe schicken. 12 | Geben Sie hierzu in das Formular unten einen Betreff und die Nachricht ein und klicken dann auf "E-Mail senden". 13 |
14 | 15 | 18 | 19 |
8 | Auf dieser Seite können Sie einstellen ob sie Status-Emails erhalten wollen.
9 | Status-Emails werden ihnen gesendet wenn ein Nutzer eine Übungsgruppe betritt
10 | oder verlässt.
11 |
12 | Diese Auswahl bezieht sich auf alle Übungsgruppen, die Sie für diese Vorlesung verwalten.
13 |
7 | Bei der Bearbeitung Ihrer Anfrage ist ein interner Fehler aufgetreten.
8 | Bitte wenden Sie sich an uns falls das Problem in einigen Minuten weiter auftritt.
9 | Geben Sie dann bitte die Informationen unten an.
10 |
| URI | 15 |${request.path} | 16 |
| Zeit | 19 |${now} | 20 |
| Nutzer | 23 |${email} | 24 |
8 | Es gibt anscheinend nix doppelte Studenten. 9 |
10 || User | 14 | 15 | 16 ||
|---|---|
| ${email} | 18 |19 | 20 | 21 | ${student} 22 | (löschbar) 23 | 24 | 25 | | 26 |
Anzahl: ${len(unconfirmed_students)}
9 || Name | 12 |Angemeldet | 13 | 14 | 15 |
|---|---|
| 17 | 18 | ${student.name} 19 | 20 | | 21 |22 | ${date.strftime("%d. %B %Y, %H:%M Uhr")} 23 | | 24 |
9 | Ihre E-Mail-Adresse wurde geändert. 10 | Sie können sich jetzt nur noch mit der neuen Adresse anmelden. 11 |
12 |15 | Änderung der E-Mail-Adresse wurde abgebrochen. 16 |
17 |21 | Um Ihre E-Mail-Adresse auf ${confirmation.what} zu ändern, bestätigen Sie dies bitte unten. 22 |
23 | 24 | 29 | 30 |8 | Um sich anzumelden, füllen Sie bitte das Formular unten aus. Bitte beachten Sie, dass die Daten später nicht 9 | mehr verändert werden können. 10 |
11 | 12 |13 | Studenten, die Scheine benötigen, müssen sich mit 14 | mehr Angaben anmelden. 15 | Werden Rechte zum Eintragen von Vorlesungen benötigt, so melden 16 | Sie sich bitte bei uns nach der Anmeldung. 17 |
18 | 19 | 22 | 23 |7 |12 | 13 |Liber scriptus proferetur,
8 | 11 |
In quo totum continetur,
Unde mundus iudicetur.
16 | Bei Problemen mit Übungsgruppen wenden Sie sich bitte an den die Vorlesung betreuenden Assistenten.
17 | Bei Problemen mit MÜSLI selbst schreiben Sie uns bitte eine Mail.
18 |
21 | Der Quelltext von Müsli kann auf GitHub eingesehen werden. Auch Verbesserungsvorschläge können dort abgegeben werden. 22 |
23 | 24 |
7 | Ihre Anfrage scheint nicht richtig zu sein!
8 | Bitte wenden Sie sich an uns falls Sie denken das diese Anfrage eigentlich zu richtigen Ergebnissen führen sollte.
9 | Geben Sie dann bitte die Informationen unten an.
10 |
| URI | 15 |${request.path} | 16 |
| Zeit: | 19 |${now} | 20 |
| Nutzer: | 23 |${email} | 24 |
| Fehlermeldung: | 27 |${error} | 28 |
| 11 | | Lieblingstermine | 12 |Ist-Zustand | 13 |
| ${u.name} | 17 |18 | 19 | ${p.time} 20 | 21 | | 22 |23 | 24 | 25 | ${ls[0].tutorial.time} 26 | 27 | 28 | keine 29 | 30 | 31 | | 32 |
| Name | 8 |Vorname | 9 |Übungsleiter | 10 |Matrikel | 11 |Studiengang | 12 ||
|---|---|---|---|---|---|
| 18 | ${ls.student.last_name} 19 | | 20 |21 | ${ls.student.first_name} 22 | | 23 |24 | ${(ls.tutorial.tutor.first_name + " " + ls.tutorial.tutor.last_name) if ls.tutorial.tutor else ''} 25 | | 26 |27 | ${ls.student.matrikel} 28 | | 29 |30 | ${ls.student.subject} 31 | | 32 |33 | 34 | ${ls.student.email} 35 | 36 | | 37 |
7 | Sie sind zur Zeit als ${request.user.email} angemeldet. 8 |
9 | 10 |11 | pyramid.security glaubt, sie seien ${user}. 12 |
13 | 14 |15 | MÜSLI verwaltet viele Übungsgruppen und Vorlesungen an der Fakultät für 16 | Mathematik und Informatik der Universität Heidelberg. 17 |
18 | 19 | 22 | 23 |26 | Wenn Sie noch keinen Account haben, müssen Sie sich zuerst 27 | bei MÜSLI registrieren. 28 | Falls Sie Ihr Passwort vergessen haben, können Sie Ihr 29 | Passwort zurücksetzen. 30 | Sollten Sie dennoch Probleme bei der Anmeldung haben, 31 | wenden Sie sich an uns. 32 |
33 |8 | Um sich anzumelden, füllen Sie bitte das Formular unten aus. Bitte beachten Sie, dass die Daten später nicht 9 | mehr verändert werden können. 10 |
11 | 12 |
13 | Assistenten und Übungsleiter, die nicht selbst an Übungsgruppen teilnehmen, können sich auch
14 | mit weniger Angaben anmelden.
15 | Werden Rechte zum Eintragen von Vorlesungen benötigt, so melden
16 | Sie sich bitte bei uns nach der Anmeldung.
17 |
18 | Verwenden Sie eine Mailadresse unter uni-heidelberg.de, beispielsweise <uniid>@stud.uni-heidelberg.de
19 | . Falls Sie noch keine besitzen, benutzen Sie bitte eine andere und ändern Sie diese sobald eine uni-heidelberg.de
20 | Adresse vorliegt.
21 |
8 | Es gibt keine Studenten die sich abgemeldet haben oder entfernt wurden. 9 |
10 || Name | 14 |Übungsgruppe | 15 |Verschieben | 16 ||
|---|---|---|---|
| 21 | 22 | ${ls.student.last_name}, ${ls.student.first_name} 23 | 24 | | 25 |26 | ${ls.tutorial.time} - ${ls.tutorial.place} (${ls.tutorial.tutor.last_name if ls.tutorial.tutor else ''}) 27 | | 28 |29 | gelöschte Übungsgruppe 30 | | 31 |
32 | |
34 |
8 | ${grading.name}: ${grading.lecture.name} 9 |
10 | 11 | 14 | 15 || ID | 8 |Ablaufdatum | 9 |Beschreibung | 10 |11 | | 12 | | |
|---|---|---|---|---|---|
| 16 | ${key.id} 17 | | 18 |19 | ${key.expires.strftime("%d. %B %Y, %H:%M Uhr")} 20 | | 21 | 22 |23 | Keine Beschreibung 24 | | 25 | 26 |27 | ${key.description} 28 | | 29 |30 | 33 | | 34 |35 | 36 | | 37 |
| 12 | | ${cat['name']} | 13 |Benotungen | 14 |||||
|---|---|---|---|---|---|---|
| Tutor | 17 |Name | 18 |Matrikel | 19 |Studiengang | 20 |${exam.name} | 22 |Σ | 23 |${grading.name} | 25 |
| ${ls.tutorial.tutor.last_name if ls.tutorial.tutor else ''} | 30 |${ls.student.last_name}, ${ls.student.first_name} | 31 |${ls.student.matrikel} | 32 |${ls.student.subject} | 33 |35 | ${results[ls.student_id]['results'].get(exam.id, '') or ''} 36 | | 37 |${results[ls.student.id]['totals'].get(cat['id'], '') or ''} | 38 |40 | ${student_grades[ls.student_id].get(grading.id, '') or ''} | 41 |
24 | Die verschiedenen API-Zugriffe sind über eine Swagger-UI dokumentiert. 25 | Achtung: Die dort angezeigten "Try it out"-Knöpfe führen die Anfragen auch tatsächlich aus. 26 |
27 |33 | Hier können Sie ihre aktuellen API-Keys verwalten. 34 |
35 | 36 || Semester | 9 |Name | 10 |Dozent | 11 |Assistent | 12 | 13 |
|---|---|---|---|
| 15 | ${lecture.term} 16 | | 17 |18 | ${lecture.name} 19 | | 20 |21 | ${lecture.lecturer} 22 | | 23 |24 | 25 | ${assistant.last_name} 26 | 27 | | 28 |
| 31 | ${lecture.term} 32 | | 33 |${lecture.name} | 34 |${lecture.lecturer} | 35 |36 | 37 | ${assistant.last_name} 38 | 39 | | 40 |
8 | Vorlesung: ${lecture.name} 9 |
10 | 11 | 20 | 21 | 43 | 44 || Übungsgruppe | 16 |${u'%s±%s (%u Personen)' % (fF(statisticsData['tut_avg']), fF(statisticsData['tut_std']), statisticsData['tut_count'])} | 17 | 18 |
| ${'Vorlesung' if tutorial_ids else ''} | 21 |${u'%s±%s (%u Personen)' % (fF(statisticsData.get('lec_avg', None)), fF(statisticsData.get('lec_std',None)), statisticsData.get('lec_count',0))} | 22 | 23 |
${names['name']} ${lecture.name}
8 | 9 |${error_msg}
10 | 11 | 14 | 15 || Zeit | 19 |Raum | 20 |${names['tutor']} | 21 |${names['comment']} | 22 |23 | | 24 | 25 | 26 | |
|---|---|---|---|---|---|
| ${tutorial.time} | 28 |${tutorial.place} | 29 |30 | 31 | Übernehmen 34 | | 35 | 36 |37 | ${tutorial.comment} 38 | Keine Beschreibung 39 | | 40 |41 | Details 42 | | 43 |44 | Bearbeiten 45 | | 46 |
| Tutor ↕ | 20 |Name ↕ | 21 |${cat['name']} ↕ | 22 |||||
|---|---|---|---|---|---|---|
| ${ls.tutorial.tutor_name} | 28 |${ls.student.name} | 29 |
30 |
31 |
32 | ${results[ls.student_id].get(cat['id'],'')}
33 |
34 | (${'%d%%' % (float(results[ls.student_id][cat['id']])*100.0 / float(cat_maxpoints[cat['id']]))})
35 |
36 |
37 |
38 |
|
53 |
8 | ${exam.name}, 9 | ${exam.lecture.name} 10 |
11 | 12 | 15 | 16 | 17 |26 | Zulassungen und Atteste verwalten 27 |
28 | 29 || Tutor | 39 |Name | 40 |Matrikel | 41 |Studienfach | 42 |
|---|---|---|---|
| 48 | ${ls.tutorial.tutor.last_name if ls.tutorial.tutor else ''} 49 | | 50 |${ls.student.last_name}, ${ls.student.first_name} | 51 |${ls.student.matrikel} | 52 |${ls.student.subject} | 53 |
| Zulassung | 14 |Zugelassen | 15 |Nicht zugelassen | 16 |Ausstehend | 17 |
|---|---|---|---|
| Anmeldung | 20 |Angemeldet | 21 |Abgemeldet | 22 |Ausstehend | 23 |
| Attest | 26 |Erhalten | 27 |Kein Attest | 28 |Keine Information | 29 |
| Tutor | 12 |Name | 13 |Matrikel | 14 |Studiengang | 15 |${ex.nr} | 16 |Σ | 17 |Zulassung | 18 |Anmeldung | 19 |Attest | 20 |
|---|---|---|---|---|---|---|---|---|
| 26 | | ${ls.student.last_name}, ${ls.student.first_name} | 27 |${ls.student.matrikel} | 28 |${ls.student.subject} | 29 |${points[ls.student_id][ex.id].points if points[ls.student_id][ex.id].points!= None else ''} | 30 |${points[ls.student_id].get('total', '')} | 31 |
32 |
33 | Zugelassen
34 | Nicht zugelassen
35 | Ausstehend
36 |
37 | |
38 |
39 |
40 | Angemeldet
41 | Abgemeldet
42 | Ausstehend
43 |
44 | |
45 |
46 |
47 | Erhalten
48 | Kein Attest
49 | Keine Informationen
50 |
51 | |
52 |
8 | In der folgenden Statistik können Sie einsehen, wieviele Studenten nicht zugeordnet werden konnten oder "unglücklich" sind, d.h. zu einem Termin zugeordnet wurden, an dem sie nicht anwesend sein können. 9 | Sie können dannach auf "zurück" klicken um die Größen der Übungsgruppen zu verändern um die "unglücklichen" Studenten "glücklich" zu machen. 10 | Danach kann das Programm erneut ausgeführt werden. 11 | Falls Sie mit der Belegung einverstanden sind, drücken Sie "OK". 12 | Dieser Vorgang ist reversibel: Sie können später im Hauptmenü wieder auf den Prioritätenmodus wechseln. 13 | Dabei gehen alle Eintragungen von Studenten verloren, die sich zwischenzeitlich im "direkten Modus" angemeldet haben. 14 |
15 | 16 || Status: | 20 |21 | ${'Erfolreich' if not result['error_value'] else result['error_value']} 22 | | 23 |
| Studenten insgesamt: | 26 |${result['students_processed']} | 27 |
| Studenten ohne Gruppe: | 30 |
31 |
32 |
34 | |
35 |
| Unglückliche Studenten: | 38 |
39 |
40 |
42 | |
43 |
| Zufriedenheitsindex: | 46 |${result['global_happiness']}% | 47 |
| 50 | 53 | | 54 |55 | 58 | | 59 |
8 | Auf dieser Seite können Sie eine Nachricht an alle Studenten, die ein falsches Fach eingetragen haben, schicken. 9 | Geben Sie hierzu in das Formular unten einen Betreff und die Nachricht ein und klicken dann auf "E-Mail senden". 10 |
11 | 12 |
26 | Hallo!
27 |
28 | Laut Ihren Daten in Müsli studieren Sie Mathematik im Lehramtsstudiengang. Damit das Prüfungssekretariat
29 | Ihre Noten den entsprechenden Stellen mitteilen kann, müssen Sie in Müsli angeben,
30 | ob Sie Mathematik auf Hauptfach oder Beifach studieren, sowie, was die weiteren Hauptfächer sind.
31 | Bitte holen Sie dies in Müsli unter "Angaben ergänzen" nach.
32 |
33 | Falls Sie Fragen oder Probleme haben, können Sie sich gerne bei uns melden!
34 |
35 | Mit freundlichen Grüßen,
36 | Das MÜSLI-Team
37 |
Anzahl: ${len(students)}
45 | 46 |47 | Es gibt anscheinend keine Studis im Müsli, du hast also wohl irgendwas kaputt gemacht :P 48 |
49 | 50 || Name | 53 |${header} | 54 | 55 | 56 |
|---|---|
| 58 | 59 | ${tstudent[0].name} 60 | 61 | | 62 |63 | ${field} 64 | | 65 |
11 | Zu dieser Prüfung ist eine ${exam.admissions_string} erforderlich. 12 |
13 | 14 | 15 | 22 | 23 | 61 | 62 |Der Nutzer muss seine Anmeldung noch bestätigen.
15 | 18 | 19 || Vorlesung | 34 |Zeit | 35 |Präferenz | 36 |
|---|
7 | Diese Seite bietet Ihnen die Möglichkeit, halbautomatisiert die Zulassung für Ihre Veranstaltung zu vergeben. Dabei 8 | hilft Ihnen MÜSLI mit Hilfe von Statistiken eine passende Punktegrenze für eine garantierte Zulassung zu ermitteln. 9 |
10 |11 | Mit dieser Punktegrenze können Sie Studierenden die Zulassung automatisch vergeben, sollten diese aktuell 12 | ausreichend Punkte gesammelt haben. 13 |
14 |15 | Anschließend können Sie Studierende auswählen, welche trotz der Punktzahl eine Zulassung bekommen sollen. Beispielsweise 16 |
17 | 18 |