wip
This commit is contained in:
@@ -4,7 +4,7 @@ use std::collections::HashMap;
|
||||
use rocket::{*, fairing::AdHoc};
|
||||
use rocket_dyn_templates::{Template, tera::Value};
|
||||
use ::serde::Deserialize;
|
||||
use tools::tera::{static_filter, translate_filter};
|
||||
use tools::tera::{static_filter, translate_filter, calculate_age, insert_space_every};
|
||||
|
||||
pub mod routes;
|
||||
pub mod services;
|
||||
@@ -32,6 +32,8 @@ pub fn rocket_builder() -> Rocket<Build> {
|
||||
Template::try_custom(|engines| {
|
||||
engines.tera.register_filter("static", static_filter);
|
||||
engines.tera.register_filter("translate", translate_filter);
|
||||
engines.tera.register_filter("calculate_age", calculate_age);
|
||||
engines.tera.register_filter("insert_space_every", insert_space_every);
|
||||
Ok(())
|
||||
})
|
||||
).attach(
|
||||
|
||||
@@ -9,7 +9,8 @@ use crate::{PresentationConfig, services::cv::fetch_cv_data_from_backend, CVBack
|
||||
#[derive(Serialize, Debug)]
|
||||
struct RootPage {
|
||||
static_host: String,
|
||||
cv: CV
|
||||
cv: CV,
|
||||
download_cv_url: String,
|
||||
}
|
||||
|
||||
#[get("/")]
|
||||
@@ -17,7 +18,8 @@ pub async fn index(presentation_config: &State<PresentationConfig>, cv_config: &
|
||||
let context = match fetch_cv_data_from_backend(cv_config.cv_backend_path.clone()).await {
|
||||
Ok(cv) => RootPage {
|
||||
static_host: presentation_config.static_route.clone(),
|
||||
cv
|
||||
cv,
|
||||
download_cv_url: "FIXME!".to_string(),
|
||||
},
|
||||
Err(e) => {
|
||||
error!("Can't fetch CV data from backend {:?}", e);
|
||||
|
||||
@@ -1,7 +1,11 @@
|
||||
use std::collections::HashMap;
|
||||
|
||||
use chrono::{Utc, Datelike};
|
||||
use log::error;
|
||||
use rocket_dyn_templates::tera::{Value, Error};
|
||||
use ovlach_data::cv::chrono::from_string;
|
||||
|
||||
// TODO: tenhle modul je trochu prasacky..
|
||||
|
||||
pub fn static_filter(
|
||||
value: &Value,
|
||||
@@ -16,4 +20,48 @@ pub fn translate_filter(
|
||||
args: &HashMap<String, rocket_dyn_templates::tera::Value>
|
||||
) -> Result<Value, Error> {
|
||||
return Ok(rocket_dyn_templates::tera::Value::String(format!("{}", value.as_str().unwrap()))); // TODO: fix-me here!
|
||||
}
|
||||
}
|
||||
|
||||
pub fn insert_space_every(
|
||||
value: &Value,
|
||||
args: &HashMap<String, rocket_dyn_templates::tera::Value>
|
||||
) -> Result<Value, Error> {
|
||||
let mut input = value.as_u64().unwrap().to_string();
|
||||
let times = args.get("times").unwrap().as_u64().unwrap();
|
||||
let mut result = String::new();
|
||||
|
||||
for (index, ch) in input.chars().enumerate() {
|
||||
if index > 0 && index as u64 % times == 0 {
|
||||
result.push(' ');
|
||||
}
|
||||
result.push(ch);
|
||||
}
|
||||
|
||||
Ok(rocket_dyn_templates::tera::Value::String(result))
|
||||
}
|
||||
|
||||
pub fn calculate_age(
|
||||
value: &Value,
|
||||
args: &HashMap<String, rocket_dyn_templates::tera::Value>
|
||||
) -> Result<Value, Error> {
|
||||
error!("{:?}", value.as_str());
|
||||
//let s = value.to_string().trim_matches('"'); // TODO: unwrap here!
|
||||
let value = from_string(value.as_str().unwrap().into());
|
||||
match value {
|
||||
Ok(value) => {
|
||||
let current_date = Utc::now().naive_utc().date();
|
||||
let mut age = current_date.year() - value.year();
|
||||
|
||||
// Adjust age if the birthday hasn't occurred yet this year
|
||||
age = if current_date.month() < value.month() ||
|
||||
(current_date.month() == value.month() && current_date.day() < value.day()) {
|
||||
age - 1
|
||||
} else {
|
||||
age
|
||||
};
|
||||
|
||||
Ok(rocket_dyn_templates::tera::Value::String(age.to_string()))
|
||||
}
|
||||
Err(e) => panic!("Can't parse date: {}", e)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user