Commit Graph

110 Commits

Author SHA1 Message Date
175c8933f3 Automatically submit LTI grade on each score run
With this commit, we refactor the overall score handling of CodeOcean. Previously, "Score" and "Submit" were two distinct actions, requiring users to confirm the LTI transmission of their score (after assessing their submission). This yielded many questions and was unnecessary, since LTI parameters are no longer expiring after each use. Therefore, we can now transmit the current grade on each score run with the very same LTI parameters. As a consequence, the LTI consumer gets a more detailed history of the scores, enabling further analytical insights.

For users, the previous "Submit" button got replaced with a notification that is shown as soon as the full score got reached. Then, learners can decide to "finalize" their work on the given exercise, which will initiate a redirect to a follow-up action (as defined in the RedirectBehavior). This RedirectBehavior has also been unified and simplified for better readability.

As part of this refactoring, we rephrased the notifications and UX workflow of a) the LTI transmission, b) the finalization of an exercise (measured by reaching the full score) and c) the deadline handling (on time, within grace period, too late). Those information are now separately shown, potentially resulting in multiple notifications. As a side effect, they are much better maintainable, and the LTI transmission is more decoupled from this notification handling.
2023-11-23 14:42:10 +01:00
79ce069f68 Add CRUD operations for Programming Groups
* Correct sorting in table
* Modify page when nested in exercises
* Fix links between pages
* Link from statistics page to programming_groups/index
* Link from submission page to programming_groups/<id>
* Allow filtering for exercise ID on ProgrammingGroup#index
* Add search fields for internal and external user id on pg/index
2023-10-23 18:17:42 +02:00
26552a0682 Remove PairProgrammingExerciseFeedback
* Remove view, controller, routes & policy for PairProgrammingExerciseFeedback
* Keep model & database table
2023-10-22 12:07:41 +02:00
67f19516c3 Add internal title for exercise
The internal title is designed to provide an alternative title for teachers. It is not exposed to learners.
2023-10-14 00:30:32 +02:00
0e387ffda2 Add association for Comments and RequestForComments
For the submission and comments, I mainly decided to use a `has_one` association. Based on the database schema, multiple request for comments could be allowed (i.e., for each file or submission), but this won't happen practically (since we always create new submissions and files). Hence, the `has_one` association is representing our relationship better.
2023-09-25 18:17:52 +02:00
9f837412c7 Add waiting room to create programming groups (#1919)
Co-authored-by: Sebastian Serth <Sebastian.Serth@hpi.de>
2023-09-21 15:07:10 +02:00
1102db9f02 Fix wrong validation of main file count
Previously, we were always issuing a database query, so that only those files already stored in the database were counted.
2023-09-16 16:19:31 +02:00
4b90a2a3c5 Add exercise feedback page for pair programming study 2023-09-05 22:56:51 +02:00
9d1be1eeff Migrate AnomalyNotification to contributor
* Also, this commit aims to fix the (broken) anomaly notifications.
2023-08-24 19:32:06 +02:00
319c3ab3b4 Add ProgrammingGroup & ProgrammingGroupMembership
* User can create programming group with other users for exercise
* Submission is shared in a group
* Also adjust specs
2023-08-24 19:32:06 +02:00
0234414bae Rename user to contributor in submission 2023-08-24 19:32:06 +02:00
83d2b8f5fd Add return value for Exercise#valid_submission_deadlines? 2023-06-23 22:20:04 +02:00
a7cd85507e Reduce SQL queries in the exercise controller
Fixes CODEOCEAN-JK
2023-03-14 20:58:21 +01:00
939b31967f Reduce SQL queries for score runs
Fixes CODEOCEAN-JR
2023-03-14 13:56:23 +01:00
5d02251cbb Replace BooleanPresenceValidator with InclusionValidator
The `BooleanPresenceValidator` is causing issues with Ruby 3.2+ YJIT irregularly.

Fixes CODEOCEAN-GQ, fixes CODEOCEAN-GR
2023-01-08 14:10:14 +01:00
bc5baed05e Use exec_query for custom SQL execution
Also align how we use query Postgres from controllers.

The change is mainly due to regular (but not reproducible) issues with the `intervalstyle` defaulting to `postgres` (instead of `iso8601`) and thereby causing issues. We're just experimenting to see whether this change resolves the issue.
2022-12-06 22:41:00 +01:00
b7a3fd4586 Refactor exercise statistics to use convert times in Ruby 2022-12-05 21:59:34 +01:00
574e99eddd Fix rubocop offenses - Requires Ruby 3.1+ 2022-11-25 11:10:06 +01:00
4de77ca3f5 Improve get_quantiles method for exercise 2022-08-25 18:14:23 +02:00
e0c2c7b806 Hide score button if exercise has no tests
We check for all teacher-defined assessments (linter and unit tests) to determine whether scoring should be possible
2022-08-22 17:51:57 +02:00
166aa3cc6f Remove Ransack from Exercise edit for tags
* Also improve Ransack usage of attributes and associations
2022-08-20 01:33:00 +02:00
6927b57170 Update Study Group Dashboard and Statistics 2022-08-20 00:05:02 +02:00
145c4aa8d5 Refactor various ruby files
* Insights based on brakeman report
2022-08-18 15:25:04 +02:00
ba11adb966 Fix working time statistics for internal and external users 2022-01-20 23:41:32 +01:00
ea85519163 Update bundle (with newest rubocop version) and fix offenses 2022-01-04 09:42:37 +01:00
74e285e9fd Fix rubocop offenses 2021-10-05 12:09:56 +02:00
5243808d54 Apply automatic rubocop fixes 2021-05-17 19:40:38 +02:00
da0a682ffb Apply manual rubocop fixes 2021-05-14 22:03:06 +02:00
6cbecb5b39 Apply automatic rubocop fixes 2021-05-14 22:03:06 +02:00
b2cb1bde39 Use postgres interval explicitly for all default occasions 2020-12-16 17:35:52 +01:00
2d2869765f Ensure Postgres always returns a duration 2020-12-14 19:57:11 +01:00
bc2e0d90c4 Use proper duration instead of seconds since midnight 2020-12-14 19:11:12 +01:00
304f0ad469 Add sentry logging for working_time_query 2020-12-14 13:17:12 +01:00
ad467fa58f Distinguish between intermediate and final feedback
* Also add more information to user_exercise_feedback
* Migrate existing feedback to enrich with submissions
2020-10-20 13:50:04 +02:00
ca9467bf3c Merge branch 'linter_toggle'
# Conflicts:
#	config/locales/de.yml
2020-10-15 18:33:19 +02:00
be3ec82bd4 Add new file role teacher_defined_linter 2020-10-15 00:43:57 +02:00
2e1c97d87d Add database support and model for tips 2020-10-14 14:34:25 +02:00
914eeb6035 Add submission deadline to exercises and allow teachers to view their submissions 2020-05-07 21:23:27 +02:00
c89ee6c102 model and policy specs 2019-12-07 13:11:48 +01:00
4a77536c5f merge master 2019-12-03 17:55:58 +01:00
9dfe6b4529 Add score and working time to feedback page 2019-11-29 15:01:04 +01:00
87798212ad add unpublished to views 2019-10-11 16:28:50 +02:00
27ef0d45dd add unpublished validation 2019-10-08 18:44:45 +02:00
6a296cbe65 fix exercise_file duplication bug 2019-10-07 18:50:07 +02:00
2af93ea308 implement file import 2019-08-21 18:27:42 +02:00
017644c4a5 implementation of import wip 2019-08-20 18:37:17 +02:00
8c56dec038 Prevent Zero-Division Exception 2019-05-08 20:09:51 +02:00
a95b2409d3 Parallelize calculation of working_times 2019-05-08 15:03:38 +02:00
5958523fdb Update app/models/exercise.rb
Co-Authored-By: rteusner <ralf.teusner@hpi.de>
2019-03-29 16:00:58 +01:00
193cc6c70d enhance exercise_collection_statistics 2019-03-29 15:32:00 +01:00