34 lines
1.1 KiB
Rust
34 lines
1.1 KiB
Rust
use crate::modules::member_management::model::filter_form::FilterForm;
|
|
use rocket::data::FromDataSimple;
|
|
use rocket::{Request, Data, data, Outcome};
|
|
use rocket::outcome::Outcome::Success;
|
|
|
|
/// We need to implement FromDataSimple to support multiple selected checkboxes with same name
|
|
/// for our list filters
|
|
impl FromDataSimple for FilterForm {
|
|
type Error = String;
|
|
|
|
fn from_data(req: &Request, data: Data) -> data::Outcome<Self, String> {
|
|
let mut selected : Vec<String> = vec![];
|
|
|
|
match req.raw_query_items(){
|
|
None => {Outcome::Forward(data)}
|
|
Some(qi) => {
|
|
for item in qi {
|
|
if item.key.as_str() == "selected_groups" {
|
|
selected.push(String::from(item.value.as_str()));
|
|
}
|
|
}
|
|
if selected.len() > 0 {
|
|
let form = FilterForm {
|
|
selected_groups: selected
|
|
};
|
|
Success(form)
|
|
} else {
|
|
Outcome::Forward(data)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|