Skip to content

Commit 4f637c3

Browse files
authored
Merge pull request #292 from hackerspacemmu/enrolment_to_supervisor
enrolment_to_supervisor
2 parents 12adf3d + 771d4d7 commit 4f637c3

11 files changed

Lines changed: 53 additions & 56 deletions

File tree

app/controllers/courses_controller.rb

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ def show
88
authorize @course
99

1010
# query for all projects_instances, owner_type and owner_id for participants table
11-
@course.projects.includes(project_instances: { enrolment: :user }).load
11+
@course.projects.includes(project_instances: { supervisor_enrolment: :user }).load
1212
@projects_by_owner = @course.projects.index_by { |p| [p.owner_type, p.owner_id] }
1313

1414
@student_list = @course.students
@@ -43,10 +43,10 @@ def show
4343
if @current_user_enrolment&.coordinator?
4444
supervisor_enrolment = @lecturer_enrolment || @current_user_enrolment
4545
@my_student_projects = @course.projects.supervised_by(supervisor_enrolment).approved
46-
@incoming_proposals = @course.projects.where(enrolment: supervisor_enrolment).proposals
46+
@incoming_proposals = @course.projects.where(supervisor_enrolment: supervisor_enrolment).proposals
4747
elsif @current_user_enrolment&.lecturer?
4848
@my_student_projects = @course.projects.supervised_by(@current_user_enrolment).approved
49-
@incoming_proposals = @course.projects.where(enrolment: @current_user_enrolment).proposals
49+
@incoming_proposals = @course.projects.where(supervisor_enrolment: @current_user_enrolment).proposals
5050
end
5151

5252
# view instances for participants_table
@@ -262,7 +262,7 @@ def profile
262262
@course = Course.find(params[:id])
263263
@grouped = @course.grouped
264264

265-
@course.projects.includes(project_instances: { enrolment: :user }).load
265+
@course.projects.includes(project_instances: { supervisor_enrolment: :user }).load
266266
@projects_by_owner = @course.projects.index_by { |p| [p.owner_type, p.owner_id] }
267267

268268
if @participant_type == 'group'

app/controllers/projects_controller.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@ def create
163163
@project = Project.create!(
164164
course: @course,
165165
owner: @course.grouped? ? group : current_user,
166-
enrolment: supervisor_enrolment
166+
supervisor_enrolment: supervisor_enrolment
167167
)
168168

169169
# Get title
@@ -176,7 +176,7 @@ def create
176176
version: 1,
177177
title: title_value,
178178
created_by: current_user,
179-
enrolment: supervisor_enrolment,
179+
supervisor_enrolment: supervisor_enrolment,
180180
source_topic: topic || nil,
181181
last_edit_time: Time.current,
182182
last_edit_by: current_user.id

app/models/project.rb

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ class Project < ApplicationRecord
22
enum :ownership_type, { student: 0, project_group: 1, lecturer: 2 }
33
default_scope { where(ownership_type: %i[student project_group]) }
44

5-
belongs_to :enrolment
5+
belongs_to :supervisor_enrolment, class_name: 'Enrolment', foreign_key: 'enrolment_id'
66
belongs_to :course
77
belongs_to :owner, polymorphic: true
88

@@ -23,7 +23,7 @@ class Project < ApplicationRecord
2323
scope :proposals, -> { where(status: %i[pending redo rejected]) }
2424

2525
# Enrolment (supervisor) filters
26-
scope :supervised_by, ->(enrolment) { where(enrolment: enrolment) }
26+
scope :supervised_by, ->(supervisor_enrolment) { where(supervisor_enrolment: supervisor_enrolment) }
2727

2828
scope :owned_by_user_or_groups, lambda { |user, groups|
2929
where(owner: [user] + groups.to_a)
@@ -36,10 +36,7 @@ class Project < ApplicationRecord
3636
STATUS_SORT_ORDER = { 'rejected' => 0, 'redo' => 1, 'pending' => 2, 'not_submitted' => 3, 'approved' => 4 }.freeze
3737

3838
def supervisor
39-
return nil unless enrolment_id.present?
40-
41-
enrolment = Enrolment.find_by(id: enrolment_id)
42-
enrolment&.user
39+
self.supervisor_enrolment.user
4340
end
4441

4542
def member
@@ -75,7 +72,7 @@ def instance_to_edit(created_by:, has_supervisor_comment:)
7572
project_instances.build(
7673
version: (project_instances.maximum(:version) || 0) + 1,
7774
created_by: created_by,
78-
enrolment: enrolment,
75+
supervisor_enrolment: supervisor_enrolment,
7976
title: current_title,
8077
status: (status if approved?)
8178
)

app/models/project_instance.rb

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ class ProjectInstance < ApplicationRecord
44
default_scope { where(project_instance_type: :project) }
55

66
belongs_to :project
7-
belongs_to :enrolment
7+
belongs_to :supervisor_enrolment, class_name: 'Enrolment', foreign_key: 'enrolment_id'
88

99
has_many :comments, as: :location, dependent: :destroy
1010

@@ -23,7 +23,7 @@ class ProjectInstance < ApplicationRecord
2323
validates :title, presence: true
2424

2525
def supervisor
26-
enrolment&.user
26+
self.supervisor_enrolment.user
2727
end
2828

2929
private
@@ -33,7 +33,7 @@ def update_parent_project
3333

3434
project.update(
3535
status: status,
36-
enrolment: enrolment
36+
supervisor_enrolment: supervisor_enrolment
3737
)
3838
end
3939

db/seeds.rb

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -604,56 +604,56 @@
604604

605605
group_1_project = Project.create!(
606606
course: course_with_groups,
607-
enrolment: lecturer_1_lecturer_enrolment,
607+
supervisor_enrolment: lecturer_1_lecturer_enrolment,
608608
owner: group_1,
609609
ownership_type: :project_group
610610
)
611611

612612
group_2_project = Project.create!(
613613
course: course_with_groups,
614-
enrolment: lecturer_1_lecturer_enrolment,
614+
supervisor_enrolment: lecturer_1_lecturer_enrolment,
615615
owner: group_2,
616616
ownership_type: :project_group
617617
)
618618

619619
group_3_project = Project.create!(
620620
course: course_with_groups,
621-
enrolment: lecturer_1_lecturer_enrolment,
621+
supervisor_enrolment: lecturer_1_lecturer_enrolment,
622622
owner: group_3,
623623
ownership_type: :project_group
624624
)
625625

626626
group_4_project = Project.create!(
627627
course: course_with_groups,
628-
enrolment: lecturer_1_lecturer_enrolment,
628+
supervisor_enrolment: lecturer_1_lecturer_enrolment,
629629
owner: group_4,
630630
ownership_type: :project_group
631631
)
632632

633633
student_1_project = Project.create!(
634634
course: course_no_groups,
635-
enrolment: lecturer_1_lecturer_enrolment_no_groups,
635+
supervisor_enrolment: lecturer_1_lecturer_enrolment_no_groups,
636636
owner: student1,
637637
ownership_type: :student
638638
)
639639

640640
student_2_project = Project.create!(
641641
course: course_no_groups,
642-
enrolment: lecturer_1_lecturer_enrolment_no_groups,
642+
supervisor_enrolment: lecturer_1_lecturer_enrolment_no_groups,
643643
owner: student2,
644644
ownership_type: :student
645645
)
646646

647647
student_3_project = Project.create!(
648648
course: course_no_groups,
649-
enrolment: lecturer_1_lecturer_enrolment_no_groups,
649+
supervisor_enrolment: lecturer_1_lecturer_enrolment_no_groups,
650650
owner: student3,
651651
ownership_type: :student
652652
)
653653

654654
student_4_project = Project.create!(
655655
course: course_no_groups,
656-
enrolment: lecturer_1_lecturer_enrolment_no_groups,
656+
supervisor_enrolment: lecturer_1_lecturer_enrolment_no_groups,
657657
owner: student4,
658658
ownership_type: :student
659659
)
@@ -809,7 +809,7 @@
809809
created_by: student1,
810810
title: 'Difficult Group Project 1',
811811
status: :pending,
812-
enrolment: lecturer_2_lecturer_enrolment
812+
supervisor_enrolment: lecturer_2_lecturer_enrolment
813813
)
814814

815815
group_1_instance_2 = ProjectInstance.create!(
@@ -818,7 +818,7 @@
818818
created_by: student1,
819819
title: 'Difficult Group Project 2',
820820
status: :redo,
821-
enrolment: lecturer_2_lecturer_enrolment
821+
supervisor_enrolment: lecturer_2_lecturer_enrolment
822822
)
823823

824824
group_1_instance_3 = ProjectInstance.create!(
@@ -827,7 +827,7 @@
827827
created_by: student1,
828828
title: 'Difficult Group Project 3',
829829
status: :rejected,
830-
enrolment: lecturer_3_lecturer_enrolment
830+
supervisor_enrolment: lecturer_3_lecturer_enrolment
831831
)
832832

833833
group_1_instance_4 = ProjectInstance.create!(
@@ -836,7 +836,7 @@
836836
created_by: student1,
837837
title: 'Difficult Group Project 4',
838838
status: :approved,
839-
enrolment: lecturer_1_lecturer_enrolment
839+
supervisor_enrolment: lecturer_1_lecturer_enrolment
840840
)
841841

842842
group_2_instance_1 = ProjectInstance.create!(
@@ -845,7 +845,7 @@
845845
created_by: student4,
846846
title: 'Difficult Group Project Group 2',
847847
status: :rejected,
848-
enrolment: lecturer_1_lecturer_enrolment
848+
supervisor_enrolment: lecturer_1_lecturer_enrolment
849849
)
850850

851851
group_3_instance_1 = ProjectInstance.create!(
@@ -854,7 +854,7 @@
854854
created_by: student7,
855855
title: 'Difficult Group Project Group 3',
856856
status: :redo,
857-
enrolment: lecturer_1_lecturer_enrolment
857+
supervisor_enrolment: lecturer_1_lecturer_enrolment
858858
)
859859

860860
group_4_instance_1 = ProjectInstance.create!(
@@ -863,7 +863,7 @@
863863
created_by: student10,
864864
title: 'Difficult Group Project Group 4',
865865
status: :pending,
866-
enrolment: lecturer_1_lecturer_enrolment
866+
supervisor_enrolment: lecturer_1_lecturer_enrolment
867867
)
868868

869869
student_1_project_instance_1 = ProjectInstance.create!(
@@ -872,7 +872,7 @@
872872
created_by: student1,
873873
title: 'Student 1 Project',
874874
status: :pending,
875-
enrolment: lecturer_3_lecturer_enrolment_no_groups
875+
supervisor_enrolment: lecturer_3_lecturer_enrolment_no_groups
876876
)
877877

878878
student_1_project_instance_2 = ProjectInstance.create!(
@@ -881,7 +881,7 @@
881881
created_by: student1,
882882
title: 'Student 1 Project 2',
883883
status: :rejected,
884-
enrolment: lecturer_3_lecturer_enrolment_no_groups
884+
supervisor_enrolment: lecturer_3_lecturer_enrolment_no_groups
885885
)
886886

887887
student_1_project_instance_3 = ProjectInstance.create!(
@@ -890,7 +890,7 @@
890890
created_by: student1,
891891
title: 'Student 1 Project 3',
892892
status: :redo,
893-
enrolment: lecturer_2_lecturer_enrolment_no_groups
893+
supervisor_enrolment: lecturer_2_lecturer_enrolment_no_groups
894894
)
895895

896896
student_1_project_instance_4 = ProjectInstance.create!(
@@ -899,7 +899,7 @@
899899
created_by: student1,
900900
title: 'Student 1 Project 4',
901901
status: :approved,
902-
enrolment: lecturer_1_lecturer_enrolment_no_groups
902+
supervisor_enrolment: lecturer_1_lecturer_enrolment_no_groups
903903
)
904904

905905
student_2_project_instance_1 = ProjectInstance.create!(
@@ -908,7 +908,7 @@
908908
created_by: student2,
909909
title: 'Student 2 Project',
910910
status: :pending,
911-
enrolment: lecturer_1_lecturer_enrolment_no_groups
911+
supervisor_enrolment: lecturer_1_lecturer_enrolment_no_groups
912912
)
913913

914914
student_3_project_instance_1 = ProjectInstance.create!(
@@ -917,7 +917,7 @@
917917
created_by: student3,
918918
title: 'Student 3 Project',
919919
status: :redo,
920-
enrolment: lecturer_1_lecturer_enrolment_no_groups
920+
supervisor_enrolment: lecturer_1_lecturer_enrolment_no_groups
921921
)
922922

923923
student_4_project_instance_1 = ProjectInstance.create!(
@@ -926,7 +926,7 @@
926926
created_by: student4,
927927
title: 'Student 4 Project',
928928
status: :rejected,
929-
enrolment: lecturer_1_lecturer_enrolment_no_groups
929+
supervisor_enrolment: lecturer_1_lecturer_enrolment_no_groups
930930
)
931931

932932
# Create Project Instance Fields

test/factories/project_instances.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
FactoryBot.define do
22
factory :project_instance do
33
association :project
4-
association :enrolment
4+
association :supervisor_enrolment, factory: :enrolment
55
association :created_by, factory: :user
66
version { 1 }
77
status { :pending }

test/factories/projects.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
FactoryBot.define do
22
factory :project do
33
association :course
4-
association :enrolment
4+
association :supervisor_enrolment, factory: :enrolment
55
owner { association :user }
66
owner_type { 'User' }
77
status { :pending }

test/models/project_instance_test.rb

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,13 @@ class ProjectInstanceTest < ActiveSupport::TestCase
55
@course = FactoryBot.create(:course)
66
@user = FactoryBot.create(:user, is_staff: false)
77
@enrolment = FactoryBot.create(:enrolment, user: @user, course: @course, role: :student)
8-
@project = FactoryBot.create(:project, course: @course, owner: @user, enrolment: @enrolment)
8+
@project = FactoryBot.create(:project, course: @course, owner: @user, supervisor_enrolment: @enrolment)
99
end
1010

1111
test 'project instance created with happy paths' do
1212
instance = ProjectInstance.create!(
1313
project: @project,
14-
enrolment: @enrolment,
14+
supervisor_enrolment: @enrolment,
1515
created_by: @user,
1616
version: 1,
1717
title: 'Test Project Title'
@@ -25,7 +25,7 @@ class ProjectInstanceTest < ActiveSupport::TestCase
2525
test 'saving project instance updates the parent project status happy path' do
2626
ProjectInstance.create!(
2727
project: @project,
28-
enrolment: @enrolment,
28+
supervisor_enrolment: @enrolment,
2929
created_by: @user,
3030
version: 1,
3131
title: 'Test Project Title'
@@ -36,12 +36,12 @@ class ProjectInstanceTest < ActiveSupport::TestCase
3636

3737
test 'saving an older instance does not overwrite parent project status sad path' do
3838
instance_v1 = ProjectInstance.create!(
39-
project: @project, enrolment: @enrolment,
39+
project: @project, supervisor_enrolment: @enrolment,
4040
created_by: @user, version: 1,
4141
title: 'Test Project Title', status: :pending
4242
)
4343
ProjectInstance.create!(
44-
project: @project, enrolment: @enrolment,
44+
project: @project, supervisor_enrolment: @enrolment,
4545
created_by: @user, version: 2,
4646
title: 'Test Project Title 2', status: :approved
4747
)
@@ -53,12 +53,12 @@ class ProjectInstanceTest < ActiveSupport::TestCase
5353

5454
test 'current_instance returns the instance with the highest version' do
5555
ProjectInstance.create!(
56-
project: @project, enrolment: @enrolment,
56+
project: @project, supervisor_enrolment: @enrolment,
5757
created_by: @user, version: 1,
5858
title: 'Test Project Title'
5959
)
6060
instance_v2 = ProjectInstance.create!(
61-
project: @project, enrolment: @enrolment,
61+
project: @project, supervisor_enrolment: @enrolment,
6262
created_by: @user, version: 2,
6363
title: 'Test Project Title 2'
6464
)
@@ -82,13 +82,13 @@ class ProjectInstanceTest < ActiveSupport::TestCase
8282

8383
test 'cannot create two instances with the same version for the same project' do
8484
ProjectInstance.create!(
85-
project: @project, enrolment: @enrolment,
85+
project: @project, supervisor_enrolment: @enrolment,
8686
created_by: @user, version: 1, title: 'First'
8787
)
8888

8989
assert_raises ActiveRecord::RecordNotUnique do
9090
ProjectInstance.create!(
91-
project: @project, enrolment: @enrolment,
91+
project: @project, supervisor_enrolment: @enrolment,
9292
created_by: @user, version: 1, title: 'Duplicate'
9393
)
9494
end

0 commit comments

Comments
 (0)