Commit Graph

896 Commits

Author SHA1 Message Date
96f5f1f8d7 Enforce valid lis_outcome_service_url
Recently, a new institution joined CodeOcean and used a relative URL. This won't work, so that we are rejecting non-absolute URLs by now.
2024-04-26 10:21:53 +02:00
b11b8b9e1e Fix invalid column reference for non-detailed exercise statistics
Fixes CODEOCEAN-12D
2024-04-24 17:53:27 +02:00
4f8d313da4 Use webpack to deliver newest ACE editor
With this commit, we change the delivery method for the ACE editor from manually copied files to using yarn and webpack. As a side-change, we also modify how the mode is selected through JavaScript instead of Ruby.

Through webpack, the `modePath`, `themePath`, and `workerPath` are automatically determined and working as expected.

Closes #250
2024-03-25 10:00:04 +01:00
57073429d3 Extract choose_locale method, similar to CodeHarbor 2024-03-09 18:51:38 +01:00
7a1330323c Fix Sorcery conflict for redirect_back_or_to
See https://github.com/Sorcery/sorcery/issues/296
2024-01-19 11:06:40 +01:00
79faefde5a Set Content-Type nosniff for all downloads 2024-01-19 11:06:40 +01:00
8fd5829110 Use render_host for download_submission_file 2024-01-19 11:06:40 +01:00
17dd8b1267 Change syntax for routes with filename
Previously, the filename was URL-encoded, thus each / was replaced with %2F. This caused issues with some Apache2 configuration, smartly mingling with the URL to either encode it a second time (resulting in %252F) or decoding it (generating a real /). However, for authenticated file downloads with the JWT, we hardly require a byte-by-byte matching. With these changes, the URL parameter is no longer URL-encoded, so that Apache2 won't break our implementation any longer.

Further, we use this opportunity to get rid of the unnecessary .json extension for those filename routes, simplifying the routes generated and doing some further cleanup.
2024-01-19 11:06:40 +01:00
8c41aa5a73 Disable Sentry context for render_protected_upload
In this action, we are not using a regular cookie/user to authenticate. However, we have a special token, that is JWT-based. Since it has the same name as the login token sent via email, we previously searched the database for it as part of configuring the Sentry context. This is now avoided.
2024-01-19 11:06:40 +01:00
245bcf4224 Submission Download: Pass ID file content instead of path
Fixes CODEOCEAN-11M
2023-12-14 15:25:07 +01:00
5b654debbe Fix Rubocop offenses 2023-12-12 10:40:45 +01:00
768eb53f7a Reduce SQL queries for tag_statistics
Fixes CODEOCEAN-YP
2023-12-09 00:37:43 +01:00
1bb61f73fe Enable interventions for ProgrammingGroups and add indices 2023-12-08 21:33:06 +01:00
bcb6409126 Bump rubocop from 1.57.2 to 1.58.0 and fix offenses
Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.57.2 to 1.58.0.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v1.57.2...v1.58.0)

---
updated-dependencies:
- dependency-name: rubocop
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-07 11:02:00 +01:00
dccfe5cbc8 Reduce SQL queries for exercise batch update
Fixes CODEOCEAN-10D
2023-12-05 22:12:42 +01:00
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
5ddc5a8ca5 Redirect users after sign in to their desired page 2023-12-01 00:06:31 +01:00
60b0a5b5a1 Improve SQL query for fetching contributor for feedback 2023-11-23 14:42:10 +01:00
e9f099d59f Properly nest UserExerciseFeedback
Fixes CODEOCEAN-108
2023-11-23 14:42:10 +01:00
b43dfa364e Improve LTI handling for InternalUsers 2023-11-23 14:42:10 +01:00
3b05a44b9e Allow programming groups to score exercises remotely 2023-11-23 14:42:10 +01:00
fe26378387 Extract ScoringChecks and rework RemoteEvaluations 2023-11-23 14:42:10 +01:00
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
1e06ab3fa9 Prevent cross access of PG for different exercise
Here, we are only checking the condition based on the URL if both parameters (exercise and programming group) are given. Otherwise, we skip the check.
2023-11-23 14:42:10 +01:00
3048cf2644 Remove unnecessary #to_s in controller 2023-11-23 14:42:10 +01:00
ee351198f5 Fix CommunitySolution after introduction of programming pairs 2023-11-23 14:42:10 +01:00
cf5d7ffd1f Revert "Log terminated_by_client to Sentry"
This reverts commits 3ad94653 and c6461f6b
2023-11-06 00:29:25 +01:00
920f2dcb38 Handle broken pipe socket in SubmissionsController
Fixes CODEOCEAN-Y2
2023-11-06 00:16:53 +01:00
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