Skip to content
Snippets Groups Projects
Commit 4871813b authored by Venceslas's avatar Venceslas
Browse files

Adding the ability to define roles specific to each club

parent cc17b433
No related branches found
Tags
No related merge requests found
Pipeline #10293 passed
...@@ -102,6 +102,9 @@ pub struct Club { ...@@ -102,6 +102,9 @@ pub struct Club {
#[serde(default)] #[serde(default)]
pub sections : ListManager<Vec<Member>>, pub sections : ListManager<Vec<Member>>,
#[serde(default)]
pub roles : HashMap<String, Role>,
#[serde(default="default_shirt_color")] #[serde(default="default_shirt_color")]
pub shirt_color : String, pub shirt_color : String,
#[serde(default="default_serigraph_color")] #[serde(default="default_serigraph_color")]
...@@ -273,7 +276,14 @@ impl Format { ...@@ -273,7 +276,14 @@ impl Format {
let mut member_stack = HashSet::with_capacity(club_info.members.len()); let mut member_stack = HashSet::with_capacity(club_info.members.len());
self.populate_members(&mut club.base_members, &mut member_stack, &mut club.member_number, club_info.members.as_slice(), &default_user_cards); self.populate_members(
&mut club.base_members,
&mut member_stack,
&mut club.member_number,
club_info.members.as_slice(),
&club_info.roles,
&default_user_cards
);
let sections = club_info.sections.list_ids(HashSet::new()); let sections = club_info.sections.list_ids(HashSet::new());
...@@ -282,7 +292,14 @@ impl Format { ...@@ -282,7 +292,14 @@ impl Format {
let mut section = Section::new(section_name, members.len()); let mut section = Section::new(section_name, members.len());
self.populate_members(&mut section.members, &mut member_stack, &mut club.member_number, members.as_slice(), &default_user_cards); self.populate_members(
&mut section.members,
&mut member_stack,
&mut club.member_number,
members.as_slice(),
&club_info.roles,
&default_user_cards
);
club.sections.push(section); club.sections.push(section);
} }
...@@ -297,6 +314,7 @@ impl Format { ...@@ -297,6 +314,7 @@ impl Format {
member_stack : &mut HashSet<&'a str>, member_stack : &mut HashSet<&'a str>,
member_number : &mut usize, member_number : &mut usize,
members : &'a [Member], members : &'a [Member],
club_roles : &HashMap<String, Role>,
user_info : &HashMap<String, (cards::Member, Gender, &Option<ShirtInfo>)> user_info : &HashMap<String, (cards::Member, Gender, &Option<ShirtInfo>)>
) { ) {
for member in members { for member in members {
...@@ -310,6 +328,15 @@ impl Format { ...@@ -310,6 +328,15 @@ impl Format {
if let Some((default_card, gender, shirt_info)) = user_info.get(member.name.as_str()) { if let Some((default_card, gender, shirt_info)) = user_info.get(member.name.as_str()) {
let mut card = default_card.clone(); let mut card = default_card.clone();
if let Some(role) = club_roles.get(member.role.as_str()) {
card.role_name = if let Gender::Men = gender {
role.name.as_str()
} else {
role.variant.as_ref().unwrap_or(&role.name).as_str()
}.to_string();
card.role_alias = role.alias.as_ref().unwrap_or(&card.role_name).clone();
} else {
if let Some(role) = self.roles.get(member.role.as_str()) { if let Some(role) = self.roles.get(member.role.as_str()) {
card.role_name = if let Gender::Men = gender { card.role_name = if let Gender::Men = gender {
role.name.as_str() role.name.as_str()
...@@ -323,6 +350,7 @@ impl Format { ...@@ -323,6 +350,7 @@ impl Format {
card.role_name = role.to_string(); card.role_name = role.to_string();
card.role_alias = role.to_string(); card.role_alias = role.to_string();
}
}; };
if let Some(info) = shirt_info { if let Some(info) = shirt_info {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment