zesje merge requestshttps://gitlab.kwant-project.org/zesje/zesje/-/merge_requests2023-11-22T12:52:10Zhttps://gitlab.kwant-project.org/zesje/zesje/-/merge_requests/448Use a separate app instance for migrations2023-11-22T12:52:10ZHugo KerstensUse a separate app instance for migrationsThis MR:
- Splits the app factory in three:
- One function to initialize the app only with the config
- One factory for the main app used for the api using wsgi
- One factory for the app only used for migrations, which has no side-...This MR:
- Splits the app factory in three:
- One function to initialize the app only with the config
- One factory for the main app used for the api using wsgi
- One factory for the app only used for migrations, which has no side-effects
- Configures `package.json` to use the correct app for migration commands
Closes #694https://gitlab.kwant-project.org/zesje/zesje/-/merge_requests/446Resolve "Option to cancel processing a pdf"2023-11-15T09:45:36ZTaico AertsResolve "Option to cancel processing a pdf"Adds the ability to cancel scans that are being processed. The taken approach allows us to cancel an individual scan without affecting other scans, even when running with multiple workers. This is because of sending a SIGUSR1 signal to t...Adds the ability to cancel scans that are being processed. The taken approach allows us to cancel an individual scan without affecting other scans, even when running with multiple workers. This is because of sending a SIGUSR1 signal to the task which causes an exception which can be handled, rather than terminating the entire worker. From my local testing it seems that scans which run in parallel are unaffected.
This required a few changes:
1. Store celery task id in database (migration)
2. Add cancel endpoint (CancelScans, /api/scans/cancel/<id>)
3. Add handling of cancellation in scan processing (SIGUSR1 is used, which results in a SoftTimeLimitExceeded exception)
4. Add cancel button + logic on scans page while a scan is running
I had to make the cancel button quite small to fit in the normal line of the scans.
![image](/uploads/8c1650378caf6b1750c5a5d329bc6d09/image.png)
![image](/uploads/a68b137e81a1a63ade69548a99ad7655/image.png)
![image](/uploads/e8471bfaf512de06776dc0698428c65b/image.png)
Closes #578
Closes #690https://gitlab.kwant-project.org/zesje/zesje/-/merge_requests/444577 - Include all problems in overview2023-11-08T13:21:55ZTaico Aerts577 - Include all problems in overviewThis change makes all problems appear in the overview. While 0 score problems are not relevant for the statistics of the exam, the statistics of the grading time, the amount of submissions graded, rubric item distributions, etc. are stil...This change makes all problems appear in the overview. While 0 score problems are not relevant for the statistics of the exam, the statistics of the grading time, the amount of submissions graded, rubric item distributions, etc. are still very relevant, and are now displayed.
I have checked the calculations that are made to confirm that adding these problems has no impact on their calculations. Max score is unaffected, since these problems have zero max score. For cronbachs alpha, the variance will be unaffected since the variance of the problem is 0 (all students have the same score of 0). Full scores length is the number of students, also unaffected. For correlation scores, I have specifically added a requirement of having a non zero maximum score (to avoid a console warning), and the question is ignored for further calculation.
The fact that all questions, including those who don't have rubrics yet now appear in the overview table at the bottom is also an improvement I think, as it ensures that no questions are forgotten in the grading.
Closes #577https://gitlab.kwant-project.org/zesje/zesje/-/merge_requests/437Treat multiple choice options as a joint widged2023-10-21T10:51:19ZAdrià LabayTreat multiple choice options as a joint widgedCloses #672, #675, #657Closes #672, #675, #657https://gitlab.kwant-project.org/zesje/zesje/-/merge_requests/428Draft: Allow deleting copies2023-04-02T12:49:17ZHugo KerstensDraft: Allow deleting copies- [x] Add delete copy endpoint
- [x] Deleting copy/copies
- [ ] Deleting images on file system
- [x] Add tests for endpoint
- [x] Test copy deletion
- [x] Test submission deletion
- [ ] Test page deletion
- [ ] Test unapprove...- [x] Add delete copy endpoint
- [x] Deleting copy/copies
- [ ] Deleting images on file system
- [x] Add tests for endpoint
- [x] Test copy deletion
- [x] Test submission deletion
- [ ] Test page deletion
- [ ] Test unapprove grading
- [ ] Front-end for deleting copies
- [ ] Add modals
- [ ] Render preview of to be deleted copy/copies
Closes #673https://gitlab.kwant-project.org/zesje/zesje/-/merge_requests/420Possibility to copy feedback options to a new problem2023-04-02T14:33:29ZAdrià LabayPossibility to copy feedback options to a new problemCloses #320
This is an experimental feature that I've thought about for a while. It lets you import the feedback from any problem of any existing exam. THe import button is placed in the "Parent feedback" and on click shows a modal whi...Closes #320
This is an experimental feature that I've thought about for a while. It lets you import the feedback from any problem of any existing exam. THe import button is placed in the "Parent feedback" and on click shows a modal which allows you to select the exam/problem and visualize the feedback options.Adrià LabayAdrià Labayhttps://gitlab.kwant-project.org/zesje/zesje/-/merge_requests/415Draft: "Detach image from page"2022-10-23T09:07:13ZAdrià LabayDraft: "Detach image from page"Closes #481
Changes:
- Adds `Image` table
- Migrates page path to image path (without moving the images?)
- Removes global scan status and message (now they belong to each individual image)
- Image is saved on a global path shared acro...Closes #481
Changes:
- Adds `Image` table
- Migrates page path to image path (without moving the images?)
- Removes global scan status and message (now they belong to each individual image)
- Image is saved on a global path shared across all exams with unique `uuid`
- Scan view now shows a count of processed/failed/waiting images.
What this MR is not (but will be done after this is merged):
- Split processing
- Update UI to show status for each image (update `MissingCopies`)Unstructured examshttps://gitlab.kwant-project.org/zesje/zesje/-/merge_requests/364Draft: Resolve "auto Dockerfile is broken"2022-01-19T14:58:57ZHugo KerstensDraft: Resolve "auto Dockerfile is broken"Closes #590Closes #590Hugo KerstensHugo Kerstenshttps://gitlab.kwant-project.org/zesje/zesje/-/merge_requests/348Draft: Resolve "Design for multiple exam types"2022-01-19T14:57:39ZNathalie van de WerkenDraft: Resolve "Design for multiple exam types"Closes #568Closes #568Nathalie van de WerkenNathalie van de Werkenhttps://gitlab.kwant-project.org/zesje/zesje/-/merge_requests/328Fix docker deployment on macOS2021-01-08T15:05:51ZRéouven ASSOULYFix docker deployment on macOSI encountered 3 problems when trying to run zesje in docker on macOS Big Sur:
- zesje was crashing when importing opencv because of a missing openGL library so I changed the dependency to the headless version (as advised [here](https://p...I encountered 3 problems when trying to run zesje in docker on macOS Big Sur:
- zesje was crashing when importing opencv because of a missing openGL library so I changed the dependency to the headless version (as advised [here](https://pypi.org/project/opencv-python/))
- zesje was crashing when creating the mysql database because `myinit.sql` was created in the read-only `/app` instead of the read-write `/app/data-dev`
- Even after fixing the 2 previous issues, I couldn't connect to the server with my browser because I had forgotten to forward the port in Virtualbox so I edited the README to mention it.
I also noticed that after shutting down the container, I can't restart it unless I delete the mysql folder in the docker volume, is that expected?https://gitlab.kwant-project.org/zesje/zesje/-/merge_requests/317WIP: Split import and processing pipeline2022-04-06T17:53:08ZAdrià LabayWIP: Split import and processing pipelineCloses #481Closes #481Unstructured examshttps://gitlab.kwant-project.org/zesje/zesje/-/merge_requests/306Multitenancy2022-01-19T14:57:39ZAnant PingleMultitenancyCloses #487 #488 #489 #491 #492 #493 #494 #495 #496 #497 #498Closes #487 #488 #489 #491 #492 #493 #494 #495 #496 #497 #498MultitenancyShashank AnandShashank Anandhttps://gitlab.kwant-project.org/zesje/zesje/-/merge_requests/256Resolve: Add option to email take-home exams2022-01-19T14:57:41ZAdrià LabayResolve: Add option to email take-home examsCloses #430
This merge request adds the option to send personal copies of an exam by email to all the students in a course.
Frontend:
* New panel in `Exam` page, allows to select the start copy number and go to Email Edit model.
* E...Closes #430
This merge request adds the option to send personal copies of an exam by email to all the students in a course.
Frontend:
* New panel in `Exam` page, allows to select the start copy number and go to Email Edit model.
* Email Model let's the user change the subject and content, this last one is a jinja2 template.
Backend:
* Redistribution of the pdf generation class, included a method that generates a personal copy with student id and name writen in the student id widget.
* `Template` api now supports two different types of templates, for sending copies and solutions.
* `Email` api supports sending two types of mails, for copies and solutions.
Example data:
* Use new method in `pdf_generation` to fill the id widget, consequently the student name is also writen.Adrià LabayAdrià Labayhttps://gitlab.kwant-project.org/zesje/zesje/-/merge_requests/230Resolve "Explain meaning of boxes when exam is created"2022-01-19T14:57:41ZOtto KaaijResolve "Explain meaning of boxes when exam is created"Closes #398Closes #398https://gitlab.kwant-project.org/zesje/zesje/-/merge_requests/121WIP: extended test_scans tests2022-01-19T14:57:40ZLucWIP: extended test_scans testsFew tests added, the following still need to be implemented:
* def test_write_pdf_status():
* def test_process_page():
* def test_get_student_number():
Closes #271Few tests added, the following still need to be implemented:
* def test_write_pdf_status():
* def test_process_page():
* def test_get_student_number():
Closes #271https://gitlab.kwant-project.org/zesje/zesje/-/merge_requests/119Feature/logging2022-01-19T14:57:39ZLucFeature/loggingStart towards logging, currently the werkzeug logger is disabled. The logging level set in __init__.py is global for the entire app.
Closes #182Start towards logging, currently the werkzeug logger is disabled. The logging level set in __init__.py is global for the entire app.
Closes #182