Commit Graph

2469 Commits

Author SHA1 Message Date
c29256aa81 Fix Rubocop offenses 2023-09-11 14:10:16 +02:00
5f99e7ee54 Store Session ID for Event::SynchronizedEditor 2023-09-08 11:48:53 +02:00
02e50e9921 Correct connection status if user used multiple windows 2023-09-08 11:48:53 +02:00
930d532fb6 Add third question in pp exercise feedback 2023-09-08 11:48:53 +02:00
b43441f85e Set lastDeltaObject per file
* This change will potentially resolve a race condition that could occur when the same change was simultaneously performed in two different files.
2023-09-08 11:48:53 +02:00
f7c2fbebd6 Simplify comparison of delta objects 2023-09-08 11:48:53 +02:00
5dd6df9418 Synchronized Editor: Store all events and allow multiple tabs
* This commit refactors the table used to store events.
* We also use a UUID as session identifier in the synchronized editor to support multiple concurrent tabs opened by the same user.
* Further, we renamed some methods to make them easier to distinguish.
2023-09-08 11:48:53 +02:00
33aa0cecba Provide current-user application-wide
* This change allows us to reuse the current user in multiple places.
* Sentry still receives the same information as before.
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
6d6851a27a Check for Sentry span before appending header for WebSocket
Fix CODEOCEAN-FRONTEND-2X
2023-09-07 22:50:14 +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
9f37034d0b Prevent multiple unsubscribe calls for ActionCable 2023-09-06 00:00:27 +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
d1d5b0df6f Etherpad link for pair programming feedback 2023-09-05 22:56:51 +02:00
056a8e5107 Show if partner is online 2023-09-05 22:56:51 +02:00
97764bd02e Limit programming groups to two people
* adapt text on programming_groups/new site
* in German change from 'Sie' to 'du'
2023-09-05 22:56:51 +02:00
0e4a239960 Unsubscribe from channel when redirecting
fixes CODEOCEAN-FRONTEND-2S
2023-09-05 22:56:51 +02:00
23a95d315d Synchronized editor for multiple files 2023-09-05 22:56:51 +02:00
7df37078f4 Add etherpad to exchange user IDs 2023-09-05 22:56:51 +02:00
e3bf14efe1 Add button to start (video) chat with programming group 2023-09-05 22:56:50 +02:00
0b42bba988 Assign users into A/B groups 2023-09-05 22:56:50 +02:00
125215ea35 Show in statusbar on implement route if pair programming session 2023-09-05 19:41:52 +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
094aba096c Fix feedback page by accessing the contributor
Fixes CODEOCEAN-TE
2023-08-30 18:16:47 +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
89afb599e4 Apply changes from team members in own editor 2023-08-26 00:38:58 +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
9d1be1eeff Migrate AnomalyNotification to contributor
* Also, this commit aims to fix the (broken) anomaly notifications.
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
977fa4539e Check polymorphic type in validations
* Previously, some models had "duplicated" `belongs_to` associations, which were now removed (and replaced by the `include Creation`).
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
2fb8def1d0 Add PairProgrammingStudy
* Later used to create the A/B groups
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
97138288f4 Delete unused LTI params from session 2023-08-24 19:32:06 +02:00
245c3dba8c Update from proforma to proformaxml 2023-08-24 00:14:41 +02:00
269f135812 Fix Errno::ECONNRESET error for Tubesock
* We must not close the socket manually (with `client_socket.close`), as this would close it twice. Compare: 2c83794b85/lib/tubesock.rb (L92)
* When the socket is closed twice, nginx registers a `Connection reset by peer` error: `recv() failed (104: Connection reset by peer) while proxying upgraded connection`
* Tubesock automatically closes the socket when the `hijack` block ends and otherwise ignores `Errno::ECONNRESET`: 2c83794b85/lib/tubesock.rb (L161-L162)
2023-08-22 00:20:02 +02:00