diff --git a/app/controllers/assignments_controller.rb b/app/controllers/assignments_controller.rb index f917c60547..14c57b561c 100644 --- a/app/controllers/assignments_controller.rb +++ b/app/controllers/assignments_controller.rb @@ -88,7 +88,7 @@ def assistant def new_assignment_params params .require(:assignment) - .permit(:title, :slug, :public_repo, :students_are_repo_admins, :invitations_enabled) + .permit(:title, :slug, :public_repo, :students_are_repo_admins, :invitations_enabled, :use_roster_id) .merge(creator: current_user, organization: @organization, starter_code_repo_id: starter_code_repo_id_param, @@ -130,7 +130,7 @@ def starter_code_repo_id_param def update_assignment_params params .require(:assignment) - .permit(:title, :slug, :public_repo, :students_are_repo_admins, :deadline, :invitations_enabled) + .permit(:title, :slug, :public_repo, :students_are_repo_admins, :deadline, :invitations_enabled, :use_roster_id) .merge(starter_code_repo_id: starter_code_repo_id_param) end diff --git a/app/models/assignment_repo/creator.rb b/app/models/assignment_repo/creator.rb index e54d33d866..896df5247c 100644 --- a/app/models/assignment_repo/creator.rb +++ b/app/models/assignment_repo/creator.rb @@ -197,11 +197,18 @@ def verify_organization_has_private_repos_available! ##################################### # rubocop:disable AbcSize + # rubocop:disable MethodLength def generate_github_repository_name suffix_count = 0 - owner = organization.github_organization.login_no_cache - repository_name = "#{assignment.slug}-#{user.github_user.login_no_cache}" + owner = organization.github_organization.login_no_cache + + entry = RosterEntry.find_by(roster: organization.roster, user: user) + repository_name = if assignment.use_roster_id && entry.present? + "#{assignment.slug}-#{entry.identifier}" + else + "#{assignment.slug}-#{user.github_user.login_no_cache}" + end loop do name = "#{owner}/#{suffixed_repo_name(repository_name, suffix_count)}" @@ -213,6 +220,7 @@ def generate_github_repository_name suffixed_repo_name(repository_name, suffix_count) end # rubocop:enable AbcSize + # rubocop:enable MethodLength def suffixed_repo_name(repository_name, suffix_count) return repository_name if suffix_count.zero? diff --git a/app/views/assignments/_assignment_form_options.html.erb b/app/views/assignments/_assignment_form_options.html.erb index d02fcda468..e41cc27efa 100644 --- a/app/views/assignments/_assignment_form_options.html.erb +++ b/app/views/assignments/_assignment_form_options.html.erb @@ -41,6 +41,12 @@ +