Commit Graph

242 Commits

Author SHA1 Message Date
Sebastian Serth
5b654debbe Fix Rubocop offenses 2023-12-12 10:40:45 +01:00
Sebastian Serth
1bb61f73fe Enable interventions for ProgrammingGroups and add indices 2023-12-08 21:33:06 +01:00
Sebastian Serth
dccfe5cbc8 Reduce SQL queries for exercise batch update
Fixes CODEOCEAN-10D
2023-12-05 22:12:42 +01:00
Sebastian Serth
a6f64c83a0 Reduce SQL queries for external user statistics
Fixes CODEOCEAN-100
Fixes CODEOCEAN-YN
Fixes CODEOCEAN-10H
2023-12-05 20:57:55 +01:00
Sebastian Serth
60b0a5b5a1 Improve SQL query for fetching contributor for feedback 2023-11-23 14:42:10 +01:00
kiragrammel
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
Sebastian Serth
28d9e38fe5 Upgrade to Rails 7.1 and apply new framework defaults
* Remove deprecated options from environments
* Remove deprecation warnings for upcoming Rails 7.2
* Dump schema with new defaults
* Remove outdated (and erroneous) data attribute in view
* Resolve a `NoMethodError` for seeds_spec.rb
2023-10-27 16:50:27 +02:00
kiragrammel
b91a2b7ce0 Remove PairProgramming23Study and instead use LTI parameter 2023-10-22 12:07:41 +02:00
Sebastian Serth
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
Sebastian Serth
26ea69eba8 Require pair programming for a given set of exercises 2023-09-25 17:29:40 +02:00
Sebastian Serth
e5678483cc Prevent duplicated 'pp_work_alone' events.
* Ensure only one `pp_work_alone` event is stored.
* Disable Turbolinks for Programming Groups Work Alone, so that the implement page is requested normally. Otherwise, Turbolinks would load the page first, just to notice that it needs to reload the page afterwards to include Highlight.js for the tips.
2023-09-23 20:45:49 +02:00
Sebastian Serth
dd78c18b87 Only identify users as working alone without an active programming group 2023-09-21 18:55:23 +02:00
Kira Grammel
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
Sebastian Serth
8cfb9d22c1 Use Ruby interval for where query 2023-09-21 11:27:12 +02:00
Sebastian Serth
c29256aa81 Fix Rubocop offenses 2023-09-11 14:10:16 +02:00
kiragrammel
79422225a8 Add events for pair programming study 2023-09-05 22:56:51 +02:00
Sebastian Serth
7aeca0078f Reduce N+1 queries for ExercisesController#feedback
Fixes CODEOCEAN-TF
2023-08-30 18:46:09 +02:00
Sebastian Serth
235bf771fe Always use user object instead of ID and Type 2023-08-26 00:39:47 +02:00
Sebastian Serth
3f674d3687 Prevent accessing another exercise during a programming group session 2023-08-24 19:32:06 +02:00
Sebastian Serth
be4f2b790d Add user to testrun
* We want to identify a user that has triggered a testrun. Previously (in regular operation), only submission author who were regular users were able to start a testrun. Now, we want to prepare a future where submission authors are programming groups. Still, a testrun is triggered by an individual user and not a group.
* Further, this commit fixes some missing foreign key constrains.
2023-08-24 19:32:06 +02:00
Sebastian Serth
e3603758ef Refactor LTI parameters and add study group
* This change also requires that submissions in our test need to have a valid study group.
2023-08-24 19:32:06 +02:00
kiragrammel
e2baa2ee55 Send score for all members of a programming group 2023-08-24 19:32:06 +02:00
kiragrammel
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
kiragrammel
0234414bae Rename user to contributor in submission 2023-08-24 19:32:06 +02:00
Sebastian Serth
245c3dba8c Update from proforma to proformaxml 2023-08-24 00:14:41 +02:00
Sebastian Serth
28a4b672f9 Remove legacy save search endpoint 2023-07-28 13:18:39 +02:00
Sebastian Serth
01f4f0c2cd Remove legacy CodePilot integration 2023-07-28 08:50:00 +02:00
Sebastian Serth
bf662ecb81 Remove legacy forum search and search buttons 2023-07-28 08:45:05 +02:00
Sebastian Serth
b79f0015ad Fix rubocop offenses 2023-04-03 15:08:30 +02:00
Sebastian Serth
72ca8c57de Reduce SQL queries for querying tips.
Closes CODEOCEAN-KY
2023-04-02 17:11:53 +02:00
Sebastian Serth
a7cd85507e Reduce SQL queries in the exercise controller
Fixes CODEOCEAN-JK
2023-03-14 20:58:21 +01:00
Sebastian Serth
326b5fce51 Allow assigning tips during exercise create
Fixes CODEOCEAN-H6
2023-02-16 11:23:52 +01:00
Sebastian Serth
596a04b9da Handle ReadTimeouts for LTI consumer properly 2023-02-16 10:12:05 +01:00
Sebastian Serth
234a4fe02b Deny /implement without execution environment
Also, fix a smaller typo in the locales
2023-01-20 23:53:08 +01:00
Sebastian Serth
87771b905a Fix rubocop offenses 2023-01-11 23:57:29 +01:00
Sebastian Serth
574e99eddd Fix rubocop offenses - Requires Ruby 3.1+ 2022-11-25 11:10:06 +01:00
Sebastian Serth
dd1f4b0ac8 Merge pull request #939 from openHPI/refactor_proforma_import_export
Refactor Proforma Import/Export
2022-10-26 17:58:48 +02:00
Sebastian Serth
c75f52f2c8 Fix Rubocop offenses 2022-10-24 12:28:50 +02:00
Karol
b866221353 rename route 2022-09-24 21:08:18 +02:00
Sebastian Serth
fa6527b4ed Refactor exercises_controller.rb to reduce code duplication 2022-09-22 19:24:26 +02:00
Karol
dba3aac800 Merge branch 'master' into refactor_proforma_import_export 2022-09-13 22:47:50 +02:00
Sebastian Serth
e5d8db2796 Return propper error for anonymous users in exercises_controller
* not_authorized_for_exercise was not checking for a current_user

Fixes CODEOCEAN-C4
2022-09-04 19:13:08 +02:00
Sebastian Serth
49f4f0e6c5 Refactor exercise_controller and move more checks to policy
* We introduce a custom handler for Pundit::NotAuthorizedError
2022-09-04 00:05:13 +02:00
Karol
5ace779d0c fix and add specs 2022-08-31 20:51:58 +02:00
Janis4411
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
Karol
3effdbe600 merge master 2022-08-20 22:20:52 +02:00
Karol
6094767a65 - rename parameter to be more generic
- fix splatting of service args
- add file role depending on parent object of file
- add default feedback_message for imports
2022-08-20 22:17:20 +02:00
Sebastian Serth
166aa3cc6f Remove Ransack from Exercise edit for tags
* Also improve Ransack usage of attributes and associations
2022-08-20 01:33:00 +02:00
Sebastian Serth
c228850ae8 Update find method 2022-08-20 00:37:48 +02:00
Sebastian Serth
145c4aa8d5 Refactor various ruby files
* Insights based on brakeman report
2022-08-18 15:25:04 +02:00