Class: Team
Instance Attribute Summary collapse
-
#members_override ⇒ Object
When assigning faculty to a page, the user types in a series of strings that then need to be processed :members_override is a temporary variable that is used to do validation of the strings (to verify that they are people in the system) and then to save the people in the faculty association.
-
#team_members_list_changed ⇒ Object
Returns the value of attribute team_members_list_changed.
Class Method Summary
collapse
Instance Method Summary
collapse
#added_people, #detect_if_list_changed, #map_member_strings_to_users, #remove_empty_fields, #removed_people, #update_collection_members, #validate_members
Instance Attribute Details
#members_override ⇒ Object
When assigning faculty to a page, the user types in a series of strings that then need to be processed :members_override is a temporary variable that is used to do validation of the strings (to verify that they are people in the system) and then to save the people in the faculty association.
26
27
28
|
# File 'app/models/team.rb', line 26
def members_override
@members_override
end
|
#team_members_list_changed ⇒ Object
Returns the value of attribute team_members_list_changed.
15
16
17
|
# File 'app/models/team.rb', line 15
def team_members_list_changed
@team_members_list_changed
end
|
Class Method Details
.find_by_person(user) ⇒ Object
63
64
65
|
# File 'app/models/team.rb', line 63
def self.find_by_person(user)
Team.find_by_sql("SELECT t.* FROM teams t INNER JOIN team_assignments ta ON ( t.id = ta.team_id) WHERE ta.user_id = #{user.id}")
end
|
.find_current_by_person(user) ⇒ Object
67
68
69
70
71
|
# File 'app/models/team.rb', line 67
def self.find_current_by_person(user)
current_year = Date.today.year()
current_semester = AcademicCalendar.current_semester()
Team.find_by_sql(["SELECT t.* FROM teams t INNER JOIN team_assignments ta ON ( t.id = ta.team_id) INNER JOIN courses c ON (t.course_id = c.id) WHERE ta.user_id = ? AND c.semester = ? AND c.year = ?", user.id, current_semester, current_year])
end
|
.find_past_by_person(user) ⇒ Object
73
74
75
76
77
|
# File 'app/models/team.rb', line 73
def self.find_past_by_person(user)
current_year = Date.today.year()
current_semester = AcademicCalendar.current_semester()
Team.find_by_sql(["SELECT t.* FROM teams t INNER JOIN team_assignments ta ON ( t.id = ta.team_id) INNER JOIN courses c ON (t.course_id = c.id) WHERE ta.user_id = ? AND (c.semester <> ? OR c.year <> ?)", user.id, current_semester, current_year])
end
|
Instance Method Details
#clean_up_data ⇒ Object
34
35
36
|
# File 'app/models/team.rb', line 34
def clean_up_data
self.name = self.name.strip() unless self.name.blank?
end
|
#clone_to_another_course(destination_course_id) ⇒ Object
141
142
143
144
145
146
147
148
|
# File 'app/models/team.rb', line 141
def clone_to_another_course(destination_course_id)
destination_course = Course.find(destination_course_id)
clone = self.clone
clone.member_ids = self.member_ids
clone.course_id = destination_course_id
clone.name = self.name + " - " + destination_course.short_or_course_number
clone.save
end
|
#copy_peer_evaluation_dates_from_course ⇒ Object
38
39
40
41
|
# File 'app/models/team.rb', line 38
def copy_peer_evaluation_dates_from_course
self.peer_evaluation_first_email = self.course.peer_evaluation_first_email if self.peer_evaluation_first_email.blank?
self.peer_evaluation_second_email = self.course.peer_evaluation_second_email if self.peer_evaluation_second_email.blank?
end
|
#faculty_email_addresses ⇒ Object
113
114
115
116
117
118
119
120
121
122
123
124
125
|
# File 'app/models/team.rb', line 113
def faculty_email_addresses
faculty = []
unless self.primary_faculty_id.nil?
from_address = User.find_by_id(self.primary_faculty_id).email
faculty << from_address
end
unless self.secondary_faculty_id.nil?
from_address = User.find_by_id(self.secondary_faculty_id).email
faculty << from_address
end
return faculty
end
|
#google_group ⇒ Object
59
60
61
|
# File 'app/models/team.rb', line 59
def google_group
self.email.split('@')[0] end
|
#is_person_on_team?(person) ⇒ Boolean
127
128
129
130
|
# File 'app/models/team.rb', line 127
def is_person_on_team?(person)
user = User.find(person.id)
self.members.include?(user)
end
|
#is_user_on_team?(user) ⇒ Boolean
132
133
134
|
# File 'app/models/team.rb', line 132
def is_user_on_team?(user)
self.members.include?(user)
end
|
#need_to_update_google_list? ⇒ Boolean
43
44
45
46
47
|
# File 'app/models/team.rb', line 43
def need_to_update_google_list?
if self.email_changed?
self.updating_email = true
end
end
|
#peer_evaluation_message_one ⇒ Object
136
137
138
139
|
# File 'app/models/team.rb', line 136
def peer_evaluation_message_one
return "Action Required: please do this peer evaluation survey\n\n by the end of " + self.course.peer_evaluation_second_email.to_date.to_formatted_s(:long)
end
|
#show_addresses_for_mailing_list ⇒ Object
101
102
103
104
105
106
107
108
109
110
111
|
# File 'app/models/team.rb', line 101
def show_addresses_for_mailing_list
begin
@members = []
GoogleWrapper.retrieve_all_members(self.google_group).each do |member|
@members << member.member_id.sub('@west.cmu.edu', '@sv.cmu.edu')
end
return @members
rescue GDataError => e
return [pretty_print_google_error(e)]
end
end
|
#update_email_address ⇒ Object
80
81
82
|
# File 'app/models/team.rb', line 80
def update_email_address
self.email = generate_email_name unless self.name.blank?
end
|
#update_mailing_list ⇒ Object
49
50
51
52
53
54
55
56
|
# File 'app/models/team.rb', line 49
def update_mailing_list
tmp = self.updating_email
if self.updating_email
Delayed::Job.enqueue(GoogleMailingListJob.new(self.email, self.email_was, self.members, self.name, "#{self.name} for course #{self.course.name}", self.id, "teams"))
self.course.updating_email = true
self.course.save
end
end
|
#update_members ⇒ Object
When modifying validate_members or update_members, modify the same code in course.rb Todo - move to a higher class or try as a mixin
87
88
89
90
91
92
93
94
95
96
97
98
99
|
# File 'app/models/team.rb', line 87
def update_members
return "" if members_override.nil?
self.members_override = members_override.select { |name| name != nil && name.strip != "" }
if (self.members_override.sort != self.members.collect { |person| person.human_name }.sort)
self.updating_email = true
list = map_member_strings_to_users(self.members_override)
raise "Error converting members_override to IDs!" if list.include?(nil)
self.members = list
end
members_override = nil
end
|
#validate_team_members ⇒ Object
30
31
32
|
# File 'app/models/team.rb', line 30
def validate_team_members
validate_members :members_override
end
|