Add ProgrammingGroup & ProgrammingGroupMembership

* User can create programming group with other users for exercise
* Submission is shared in a group
* Also adjust specs
This commit is contained in:
kiragrammel
2023-08-10 17:07:04 +02:00
committed by Sebastian Serth
parent 0234414bae
commit 319c3ab3b4
42 changed files with 715 additions and 276 deletions

View File

@ -45,7 +45,7 @@ de:
maximum_score: Erreichbare Punktzahl
submission_deadline: Abgabefrist
late_submission_deadline: Verspätete Abgabefrist
number_of_users: "# Nutzer"
number_of_users_and_programming_groups: "# Nutzer und Programmiergruppen"
public: Öffentlich
selection: Ausgewählt
title: Titel
@ -56,6 +56,10 @@ de:
token: "Aufgaben-Token"
uuid: UUID
unpublished: Deaktiviert
programming_group:
programming_partner_ids: Nutzer-IDs der Programmierpartner
programming_group/programming_group_memberships:
base: Programmiergruppenmitgliedschaft
proxy_exercise:
title: Title
files_count: Anzahl der Aufgaben
@ -172,7 +176,7 @@ de:
exercises: "Aufgaben"
solutions: "Gesamtanzahl Lösungsversuche"
submissions: "Gesamtanzahl Submissions"
users: "Teilnehmer"
users_and_programming_groups: "Teilnehmer und Programmiergruppen"
user_exercise_feedback:
user: "Autor"
exercise: "Aufgabe"
@ -225,6 +229,12 @@ de:
internal_user:
one: Interner Nutzer
other: Interne Nutzer
programming_group:
one: Programmiergruppe
other: Programmiergruppen
programming_group_membership:
one: Programmiergruppenmitgliedschaft
other: Programmiergruppenmitgliedschaften
request_for_comment:
one: Kommentaranfrage
other: Kommentaranfragen
@ -259,6 +269,11 @@ de:
attributes:
password:
weak: ist zu schwach. Versuchen Sie es mit einem langen Passwort, welches Groß-, Kleinbuchstaben, Zahlen und Sonderzeichen enthält.
programming_group:
size_too_small: Die Größe dieser Programmiergruppe ist zu klein. Geben Sie mindestens eine andere Nutzer-ID an.
invalid_partner_id: Die Nutzer-ID '%{partner_id}' ist ungültig und wurde entfernt. Bitte überprüfen Sie die Nutzer-IDs der Programmierpartner.
programming_group_membership:
already_exists: 'existiert bereits für diese Aufgabe für den Nutzer mit der ID %{id_with_type}.'
admin:
dashboard:
show:
@ -346,7 +361,7 @@ de:
permission_denied: Der Zugriff auf die angeforderte Datei wurde verweigert. Bitte überprüfen Sie, dass die Datei existiert, der aktuelle Benutzer Leseberechtigungen besitzt und versuchen Sie ggf. die Datei mit "root"-Rechten anzufordern. Dazu müssen Sie den "sudo"-Schalter neben der Befehlszeile aktivieren und anschließend das Dateisystem vor dem Herunterladen einer Datei aktualisieren.
statistics:
exercise: Übung
users: Anzahl (externer) Nutzer
users_and_programming_groups: Anzahl Nutzer und Programmiergruppen
score: Durchschnittliche Punktzahl
stddev_score: stdabw (Punktzahl)
stddev_worktime: stdabw (Arbeitszeit)
@ -519,7 +534,7 @@ de:
final_submissions: Finale Abgaben
intermediate_submissions: Intermediäre Abgaben
participants: Bearbeitende Nutzer
users: '%{count} verschiedene Nutzer'
users_and_programming_groups: '%{count} verschiedene Nutzer und Programmiergruppen'
user: Nutzer
score: Maximale Punktzahl
deadline: Abgabefrist
@ -528,6 +543,7 @@ de:
average_worktime: Durchschnittliche Arbeitszeit
internal_users: Interne Nutzer
external_users: Externe Nutzer
programming_groups: Programmiergruppen
finishing_rate: Abschlussrate
submit:
failure: Beim Übermitteln Ihrer Punktzahl ist ein Fehler aufgetreten. Bitte versuchen Sie es später erneut.
@ -563,6 +579,15 @@ de:
proxy_exercises:
index:
clone: Duplizieren
programming_groups:
form:
hints:
programming_partner_ids: "Sie können mehrere Nutzer-IDs mit Kommata getrennt eingeben, wie z.B.: 'e123, e234'."
new:
check_invitation: "Einladung prüfen"
enter_partner_id: "Bitte geben Sie hier die Nutzer-IDs der Personen ein, mit denen Sie zusammen die Aufgabe '%{exercise_title}' lösen möchten. Beachten Sie jedoch, dass anschließend keiner aus der Gruppe austreten kann. Alle Teammitglieder können also sehen, was Sie in dieser Aufgabe schreiben und umgekehrt. Für die nächste Aufgabe können Sie sich erneuert entscheiden, ob und mit wem Sie zusammen arbeiten möchten."
own_user_id: "Ihre Nutzer-ID:"
work_alone: "Sie können sich einmalig dafür entscheiden, die Aufgabe alleine zu bearbeiten. Anschließend können Sie jedoch nicht mehr in die Gruppenarbeit für diese Aufgabe wechseln. Klicken Sie <a href=%{path})>hier</a>, um die Aufgabe im Einzelmodus zu starten."
external_users:
statistics:
title: Statistiken für Externe Benutzer
@ -967,7 +992,7 @@ de:
subscription_not_existent: "Das Abonnement, von dem Sie sich abmelden wollen, existiert nicht."
statistics:
sections:
users: "Benutzer"
contributors: "Mitwirkende"
exercises: "Aufgaben"
request_for_comments: "Kommentaranfragen"
entries:

View File

@ -45,7 +45,7 @@ en:
maximum_score: Maximum Score
submission_deadline: Submission Deadline
late_submission_deadline: Late Submission Deadline
number_of_users: "# Users"
number_of_users_and_programming_groups: "# Users and Programming Groups"
public: Public
selection: Selected
title: Title
@ -56,6 +56,10 @@ en:
token: "Exercise Token"
uuid: UUID
unpublished: Unpublished
programming_group:
programming_partner_ids: Programming Partner IDs
programming_group/programming_group_memberships:
base: Programming Group Membership
proxy_exercise:
title: Title
files_count: Exercises Count
@ -172,7 +176,7 @@ en:
exercises: "Exercises"
solutions: "Solution Attempts (accumulated)"
submissions: "Submissions (accumulated)"
users: "Users"
users_and_programming_groups: "Users and Programming Groups"
user_exercise_feedback:
user: "Author"
exercise: "Exercise"
@ -225,6 +229,12 @@ en:
internal_user:
one: Internal User
other: Internal Users
programming_group:
one: Programming Group
other: Programming Groups
programming_group_membership:
one: Programming Group Membership
other: Programming Group Memberships
request_for_comment:
one: Request for Comments
other: Requests for Comments
@ -259,6 +269,11 @@ en:
attributes:
password:
weak: is too weak. Try to use a long password with upper and lower case letters, numbers and special characters.
programming_group:
size_too_small: The size of this programming group is too small. Enter at least one other user ID to work with.
invalid_partner_id: The user ID '%{partner_id}' is invalid and was removed. Please check the user IDs of your programming partners.
programming_group_membership:
already_exists: 'already exists for this exercise for the user with ID %{id_with_type}.'
admin:
dashboard:
show:
@ -346,7 +361,7 @@ en:
permission_denied: Access to the requested file has been denied. Please verify that the file exists, the current user has read permissions, and try requesting the file with "root" privileges if necessary. To retrieve files as "root", you must enable the "sudo" switch shown next to the command input and then reload the file system before accessing any file.
statistics:
exercise: Exercise
users: (External) Users Count
users_and_programming_groups: Users and Programming Groups Count
score: Average Score
stddev_score: stddev (score)
stddev_worktime: stddev (working time)
@ -519,7 +534,7 @@ en:
final_submissions: Final Submissions
intermediate_submissions: Intermediate Submissions
participants: Participating Users
users: '%{count} distinct users'
users_and_programming_groups: '%{count} distinct users and programming groups'
user: User
score: Maximum Score
deadline: Deadline
@ -528,6 +543,7 @@ en:
average_worktime: Average Working Time
internal_users: Internal Users
external_users: External Users
programming_groups: Programming Groups
finishing_rate: Finishing Rate
submit:
failure: An error occurred while transmitting your score. Please try again later.
@ -563,6 +579,15 @@ en:
proxy_exercises:
index:
clone: Duplicate
programming_groups:
form:
hints:
programming_partner_ids: "You can enter several user IDs separated by commas such as 'e123, e234'."
new:
check_invitation: "Check invitation"
enter_partner_id: "Please enter the user IDs from the practice partners with whom you want to solve the exercise '%{exercise_title}'. However, note that no one can leave the group afterward. Hence, all team members can see what you write in this exercise and vice versa. For the next exercise, you can decide again whether and with whom you want to work together."
own_user_id: "Your user ID:"
work_alone: "You can choose once to work on the exercise alone. Afterward, however, you will not be able to switch to group work for this exercise. Click <a href=%{path}>here</a> to get to the exercise in single mode."
external_users:
statistics:
title: External User Statistics
@ -967,7 +992,7 @@ en:
subscription_not_existent: "The subscription you want to unsubscribe from does not exist."
statistics:
sections:
users: "Users"
contributors: "Contributors"
exercises: "Exercises"
request_for_comments: "Requests for Comment"
entries:

View File

@ -96,6 +96,8 @@ Rails.application.routes.draw do
post :export_external_check
post :export_external_confirm
end
resources :programming_groups, only: %i[new create]
end
resources :exercise_collections do