Commit Graph

868 Commits

Author SHA1 Message Date
8fc5123bae Exclusively lock Runners during code executions
Previously, the same runner could be used multiple times with different submissions simultaneously. This, however, yielded errors, for example when one submission time oud (causing the running to be deleted) while another submission was still executed.

Admin actions, such as the shell, can be still executed regardless of any other code execution.

Fixes CODEOCEAN-HG
Fixes openHPI/poseidon#423
2023-10-31 12:35:24 +01:00
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
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
e91b2ede7d Prevent an exception if score cannot be sent for survey 2023-10-22 12:07:41 +02:00
f7e3979e79 Set bonus points for survey via LTI parameter 2023-10-22 12:07:41 +02:00
b91a2b7ce0 Remove PairProgramming23Study and instead use LTI parameter 2023-10-22 12:07:41 +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
99bd46af1a Align project files with CodeHarbor
Since both projects are developed together and by the same team, we also want to have the same code structure and utility methods available in both projects. Therefore, this commit changes many files, but without a functional change.
2023-10-11 00:18:33 +02:00
052367c186 Allow fixing validation errors for Study Group update 2023-10-02 17:39:01 +02:00
dbca2c0fd8 Improve study_group_params to disallow ID and reformat 2023-10-02 17:35:54 +02:00
4dda45a696 Send point for opening LimeSurvey 2023-09-26 16:34:18 +02:00
e638e32435 Reduce SQL queries in the RfC controller
Fixes CODEOCEAN-Y5
2023-09-26 00:09:21 +02:00
684639696d Reduce SQL queries in the study groups controller
Fixes CODEOCEAN-Y7
2023-09-25 22:15:27 +02:00
ce53ef641e Add custom redirect to LimeSurvey through LTI 2023-09-25 18:17:52 +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
26ea69eba8 Require pair programming for a given set of exercises 2023-09-25 17:29:40 +02:00
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
bd1090be31 Store whether learners were manually invited to a programming group 2023-09-21 18:55:24 +02:00
dd78c18b87 Only identify users as working alone without an active programming group 2023-09-21 18:55:23 +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
8cfb9d22c1 Use Ruby interval for where query 2023-09-21 11:27:12 +02:00
69cc0f3c25 Retry storing LTI data on invalid record
We might receive a `RecordInvalid` error, if one part (such as the external user) is already assigned (not unique). Hence, we just retry.

Fixes CODEOCEAN-TZ
2023-09-20 23:53:35 +02:00
f49d1c6a7b Catch EOFError when sending LTI scores
Fixes CODEOCEAN-VN
Fixes CODEOCEAN-VP
2023-09-20 23:19:48 +02:00
8a5dc7abc0 Forward person when a programming group is created with them
Further, we remove the "check invitation" button and extract some methods to our new ProgrammingGroups object in JavaScript.

Co-authored-by: Sebastian Serth <Sebastian.Serth@hpi.de>
2023-09-19 20:14:33 +00:00
07458f4e2a Fix incomplete Pair Programming Feedbacks 2023-09-13 09:59:31 +02:00
c29256aa81 Fix Rubocop offenses 2023-09-11 14:10:16 +02:00
930d532fb6 Add third question in pp exercise feedback 2023-09-08 11:48:53 +02:00
50a4707f65 Prevent duplicated WebSocket close for client_kill
Our investigation in CODEOCEAN-TV showed that we might attempt to close the WebSocket connection twice, if learners press the stop button. With this commit, we fix that issue.
2023-09-08 00:16:12 +02:00
c6461f6bdd Only log runs not stopped by a client to Sentry 2023-09-08 00:05:50 +02:00
3ad946537b Log terminated_by_client to Sentry 2023-09-06 23:49:48 +02:00
80b457a0c9 Add Sentry exception to Runner::Error in SubmissionsController 2023-09-06 23:05:56 +02:00
8dd157e346 Only send LTI score for external users 2023-09-06 00:28:34 +02:00
4b90a2a3c5 Add exercise feedback page for pair programming study 2023-09-05 22:56:51 +02:00
79422225a8 Add events for pair programming study 2023-09-05 22:56:51 +02:00
0b42bba988 Assign users into A/B groups 2023-09-05 22:56:50 +02:00
f36f3cdc64 Rename user to contributor in exercise statistics
Fixes CODEOCEAN-TN
2023-09-05 18:44:20 +02:00
4b3f5d152b Set study group for current user during LTI launch 2023-09-05 16:00:03 +02:00
05a5a52c8e Require user for InternalUsersController
Fixes CODEOCEAN-TG
2023-09-01 22:18:03 +02:00
7aeca0078f Reduce N+1 queries for ExercisesController#feedback
Fixes CODEOCEAN-TF
2023-08-30 18:46:09 +02:00
6eed794aa0 Retry store_lti_session_data
We need to store or update the LTI parameters. However, this operation is not atomic and multiple requests can interfere with our database operation. Therefore, we need to retry in case the record is not unique.

Fixes CODEOCEAN-TC
2023-08-28 22:20:46 +02:00
235bf771fe Always use user object instead of ID and Type 2023-08-26 00:39:47 +02:00
c2995c96f0 Remove clear_lti_session_data as it is no longer needed
* no lti session data anymore included in the function
* decided not to delete the pg_id here as it is handled in create_through_lti and implement
* the function is only called once without an exercise id so the values are now directly deleted there
2023-08-24 19:32:06 +02:00
dddebcca67 Prevent new programming groups in case of existing submission for study group 2023-08-24 19:32:06 +02:00
3f674d3687 Prevent accessing another exercise during a programming group session 2023-08-24 19:32:06 +02:00
01accdae58 Use author_in_programming_group? policy for files & RfCs
* Allow all members of a programming group to list and solve RfCs
* Also adjust policy specs to respect programming groups
2023-08-24 19:32:06 +02:00
a1941336d9 Fix Runner access for programming groups
* We also rename the corresponding columns in the Runner model, so that for polymorphic association gets clear.
2023-08-24 19:32:06 +02:00
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
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
e2baa2ee55 Send score for all members of a programming group 2023-08-24 19:32:06 +02:00