refactor: add html content type to all template responses
This commit is contained in:
parent
349a539765
commit
3a085a025a
@ -1,11 +1,10 @@
|
|||||||
use actix_web::{web, HttpResponse, Responder};
|
use actix_web::{web, HttpResponse, Responder};
|
||||||
use rinja::Template;
|
|
||||||
use sqlx::PgPool;
|
use sqlx::PgPool;
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
endpoints::{area::NewOrEditAreaTemplate, IdPath},
|
endpoints::{area::NewOrEditAreaTemplate, IdPath},
|
||||||
models::{Area, Role, User},
|
models::{Area, Role, User},
|
||||||
utils::ApplicationError,
|
utils::{ApplicationError, TemplateResponse},
|
||||||
};
|
};
|
||||||
|
|
||||||
#[actix_web::get("/area/edit/{id}")]
|
#[actix_web::get("/area/edit/{id}")]
|
||||||
@ -24,7 +23,7 @@ async fn get(
|
|||||||
area: Some(area_in_db),
|
area: Some(area_in_db),
|
||||||
};
|
};
|
||||||
|
|
||||||
Ok(HttpResponse::Ok().body(template.render()?))
|
Ok(template.to_response()?)
|
||||||
} else {
|
} else {
|
||||||
Ok(HttpResponse::NotFound().finish())
|
Ok(HttpResponse::NotFound().finish())
|
||||||
}
|
}
|
||||||
|
@ -1,15 +1,14 @@
|
|||||||
use crate::{
|
use crate::{
|
||||||
endpoints::area::NewOrEditAreaTemplate,
|
endpoints::area::NewOrEditAreaTemplate,
|
||||||
models::{Role, User},
|
models::{Role, User},
|
||||||
utils::ApplicationError,
|
utils::{ApplicationError, TemplateResponse},
|
||||||
};
|
};
|
||||||
use actix_web::{web, HttpResponse, Responder};
|
use actix_web::{web, Responder};
|
||||||
use brass_macros::db_test;
|
use brass_macros::db_test;
|
||||||
use rinja::Template;
|
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
use crate::utils::test_helper::{
|
use crate::utils::test_helper::{
|
||||||
assert_snapshot, read_body, test_get, DbTestContext, RequestConfig, StatusCode
|
assert_snapshot, read_body, test_get, DbTestContext, RequestConfig, StatusCode,
|
||||||
};
|
};
|
||||||
|
|
||||||
#[actix_web::get("/area/new")]
|
#[actix_web::get("/area/new")]
|
||||||
@ -23,7 +22,7 @@ async fn get(user: web::ReqData<User>) -> Result<impl Responder, ApplicationErro
|
|||||||
area: None,
|
area: None,
|
||||||
};
|
};
|
||||||
|
|
||||||
Ok(HttpResponse::Ok().body(template.render()?))
|
Ok(template.to_response()?)
|
||||||
}
|
}
|
||||||
|
|
||||||
#[db_test]
|
#[db_test]
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
use actix_web::{web, HttpResponse, Responder};
|
use actix_web::{web, HttpResponse, Responder};
|
||||||
use rinja::Template;
|
|
||||||
use serde::Deserialize;
|
use serde::Deserialize;
|
||||||
use sqlx::PgPool;
|
use sqlx::PgPool;
|
||||||
|
|
||||||
@ -10,7 +9,7 @@ use crate::{
|
|||||||
event_planning_template::{
|
event_planning_template::{
|
||||||
generate_availabillity_assignment_list, generate_status_whether_staff_is_required,
|
generate_availabillity_assignment_list, generate_status_whether_staff_is_required,
|
||||||
},
|
},
|
||||||
ApplicationError,
|
ApplicationError, TemplateResponse,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -61,5 +60,5 @@ pub async fn delete(
|
|||||||
further_wachhabender_required,
|
further_wachhabender_required,
|
||||||
};
|
};
|
||||||
|
|
||||||
Ok(HttpResponse::Ok().body(template.render()?))
|
Ok(template.to_response()?)
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
use actix_web::{web, HttpResponse, Responder};
|
use actix_web::{web, HttpResponse, Responder};
|
||||||
use garde::Validate;
|
use garde::Validate;
|
||||||
use rinja::Template;
|
|
||||||
use serde::Deserialize;
|
use serde::Deserialize;
|
||||||
use sqlx::PgPool;
|
use sqlx::PgPool;
|
||||||
|
|
||||||
@ -14,7 +13,7 @@ use crate::{
|
|||||||
event_planning_template::{
|
event_planning_template::{
|
||||||
generate_availabillity_assignment_list, generate_status_whether_staff_is_required,
|
generate_availabillity_assignment_list, generate_status_whether_staff_is_required,
|
||||||
},
|
},
|
||||||
ApplicationError,
|
ApplicationError, TemplateResponse,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -98,5 +97,5 @@ pub async fn post(
|
|||||||
further_wachhabender_required,
|
further_wachhabender_required,
|
||||||
};
|
};
|
||||||
|
|
||||||
Ok(HttpResponse::Ok().body(template.render()?))
|
Ok(template.to_response()?)
|
||||||
}
|
}
|
||||||
|
@ -1,14 +1,14 @@
|
|||||||
use actix_web::{web, HttpResponse, Responder};
|
use actix_web::{web, HttpResponse, Responder};
|
||||||
use chrono::NaiveDate;
|
use chrono::NaiveDate;
|
||||||
use rinja::Template;
|
|
||||||
use serde::Deserialize;
|
use serde::Deserialize;
|
||||||
use sqlx::PgPool;
|
use sqlx::PgPool;
|
||||||
|
|
||||||
use crate::endpoints::availability::NewOrEditAvailabilityTemplate;
|
use crate::endpoints::availability::NewOrEditAvailabilityTemplate;
|
||||||
use crate::models::{
|
use crate::models::{
|
||||||
find_free_time_slots, only_one_availability_exists_and_is_whole_day, Availability, AvailabilityTime, User
|
find_free_time_slots, only_one_availability_exists_and_is_whole_day, Availability,
|
||||||
|
AvailabilityTime, User,
|
||||||
};
|
};
|
||||||
use crate::utils::ApplicationError;
|
use crate::utils::{ApplicationError, TemplateResponse};
|
||||||
use crate::{END_OF_DAY, START_OF_DAY};
|
use crate::{END_OF_DAY, START_OF_DAY};
|
||||||
|
|
||||||
#[derive(Deserialize)]
|
#[derive(Deserialize)]
|
||||||
@ -51,5 +51,5 @@ pub async fn get(
|
|||||||
slot_suggestions: free_slots,
|
slot_suggestions: free_slots,
|
||||||
};
|
};
|
||||||
|
|
||||||
Ok(HttpResponse::Ok().body(template.render()?))
|
Ok(template.to_response()?)
|
||||||
}
|
}
|
||||||
|
@ -4,7 +4,7 @@ use crate::{
|
|||||||
find_free_time_slots, only_one_availability_exists_and_is_whole_day, Assignment,
|
find_free_time_slots, only_one_availability_exists_and_is_whole_day, Assignment,
|
||||||
AvailabilityTime, Function, Vehicle,
|
AvailabilityTime, Function, Vehicle,
|
||||||
},
|
},
|
||||||
utils::{event_planning_template::generate_vehicles_assigned_and_available, ApplicationError},
|
utils::{event_planning_template::generate_vehicles_assigned_and_available, ApplicationError, TemplateResponse},
|
||||||
};
|
};
|
||||||
use actix_web::{web, HttpResponse, Responder};
|
use actix_web::{web, HttpResponse, Responder};
|
||||||
use chrono::{NaiveDate, Utc};
|
use chrono::{NaiveDate, Utc};
|
||||||
@ -148,5 +148,5 @@ async fn get(
|
|||||||
availabillities,
|
availabillities,
|
||||||
};
|
};
|
||||||
|
|
||||||
Ok(HttpResponse::Ok().body(template.render()?))
|
Ok(template.to_response()?)
|
||||||
}
|
}
|
||||||
|
@ -1,12 +1,11 @@
|
|||||||
use actix_web::{web, HttpResponse, Responder};
|
use actix_web::{web, HttpResponse, Responder};
|
||||||
use rinja::Template;
|
|
||||||
use serde::Deserialize;
|
use serde::Deserialize;
|
||||||
use sqlx::PgPool;
|
use sqlx::PgPool;
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
endpoints::{availability::NewOrEditAvailabilityTemplate, IdPath},
|
endpoints::{availability::NewOrEditAvailabilityTemplate, IdPath},
|
||||||
models::{find_free_time_slots, Availability, AvailabilityTime, User},
|
models::{find_free_time_slots, Availability, AvailabilityTime, User},
|
||||||
utils::ApplicationError,
|
utils::{ApplicationError, TemplateResponse},
|
||||||
END_OF_DAY, START_OF_DAY,
|
END_OF_DAY, START_OF_DAY,
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -64,5 +63,5 @@ pub async fn get(
|
|||||||
slot_suggestions: suggestions,
|
slot_suggestions: suggestions,
|
||||||
};
|
};
|
||||||
|
|
||||||
Ok(HttpResponse::Ok().body(template.render()?))
|
Ok(template.to_response()?)
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
use actix_web::{web, HttpResponse, Responder};
|
use actix_web::{web, HttpResponse, Responder};
|
||||||
use brass_macros::db_test;
|
use brass_macros::db_test;
|
||||||
use rinja::Template;
|
|
||||||
use sqlx::PgPool;
|
use sqlx::PgPool;
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
@ -13,7 +12,7 @@ use chrono::{NaiveDate, NaiveTime};
|
|||||||
use crate::{
|
use crate::{
|
||||||
endpoints::{events::NewEventTemplate, IdPath},
|
endpoints::{events::NewEventTemplate, IdPath},
|
||||||
models::{Assignment, Event, Function, Location, Role, User},
|
models::{Assignment, Event, Function, Location, Role, User},
|
||||||
utils::ApplicationError,
|
utils::{ApplicationError, TemplateResponse},
|
||||||
};
|
};
|
||||||
|
|
||||||
#[actix_web::get("/events/{id}/edit")]
|
#[actix_web::get("/events/{id}/edit")]
|
||||||
@ -55,7 +54,7 @@ pub async fn get(
|
|||||||
.any(|x| x.function == Function::Wachhabender),
|
.any(|x| x.function == Function::Wachhabender),
|
||||||
};
|
};
|
||||||
|
|
||||||
Ok(HttpResponse::Ok().body(template.render()?))
|
Ok(template.to_response()?)
|
||||||
}
|
}
|
||||||
|
|
||||||
#[db_test]
|
#[db_test]
|
||||||
@ -101,9 +100,7 @@ async fn produces_template(context: &DbTestContext) {
|
|||||||
note: None,
|
note: None,
|
||||||
};
|
};
|
||||||
|
|
||||||
Event::create(&context.db_pool, changeset)
|
Event::create(&context.db_pool, changeset).await.unwrap();
|
||||||
.await
|
|
||||||
.unwrap();
|
|
||||||
|
|
||||||
let app = context.app().await;
|
let app = context.app().await;
|
||||||
let config = RequestConfig {
|
let config = RequestConfig {
|
||||||
|
@ -1,11 +1,10 @@
|
|||||||
use actix_web::{web, HttpResponse, Responder};
|
use actix_web::{web, Responder};
|
||||||
use rinja::Template;
|
|
||||||
use sqlx::PgPool;
|
use sqlx::PgPool;
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
endpoints::{events::NewEventTemplate, NaiveDateQuery},
|
endpoints::{events::NewEventTemplate, NaiveDateQuery},
|
||||||
models::{Location, Role, User},
|
models::{Location, Role, User},
|
||||||
utils::ApplicationError,
|
utils::{ApplicationError, TemplateResponse},
|
||||||
};
|
};
|
||||||
|
|
||||||
#[actix_web::get("/events/new")]
|
#[actix_web::get("/events/new")]
|
||||||
@ -31,8 +30,8 @@ pub async fn get(
|
|||||||
event: None,
|
event: None,
|
||||||
amount_of_planned_posten: 0,
|
amount_of_planned_posten: 0,
|
||||||
is_fuehrungsassistent_planned: false,
|
is_fuehrungsassistent_planned: false,
|
||||||
is_wachhabender_planned: false
|
is_wachhabender_planned: false,
|
||||||
};
|
};
|
||||||
|
|
||||||
Ok(HttpResponse::Ok().body(template.render()?))
|
Ok(template.to_response()?)
|
||||||
}
|
}
|
||||||
|
@ -5,13 +5,13 @@ use sqlx::PgPool;
|
|||||||
use crate::{
|
use crate::{
|
||||||
endpoints::IdPath,
|
endpoints::IdPath,
|
||||||
filters,
|
filters,
|
||||||
models::{Availability, AvailabillityAssignmentState, AvailabilityTime, Event, Function, Role, User, Vehicle},
|
models::{Availability, AvailabilityTime, AvailabillityAssignmentState, Event, Function, Role, User, Vehicle},
|
||||||
utils::{
|
utils::{
|
||||||
event_planning_template::{
|
event_planning_template::{
|
||||||
generate_availabillity_assignment_list, generate_status_whether_staff_is_required,
|
generate_availabillity_assignment_list, generate_status_whether_staff_is_required,
|
||||||
generate_vehicles_assigned_and_available,
|
generate_vehicles_assigned_and_available,
|
||||||
},
|
},
|
||||||
ApplicationError,
|
ApplicationError, TemplateResponse,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -68,5 +68,5 @@ pub async fn get(
|
|||||||
vehicles_available,
|
vehicles_available,
|
||||||
};
|
};
|
||||||
|
|
||||||
Ok(HttpResponse::Ok().body(template.render()?))
|
Ok(template.to_response()?)
|
||||||
}
|
}
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
use actix_web::{web, HttpResponse, Responder};
|
use actix_web::{web, Responder};
|
||||||
use chrono::{NaiveDate, Utc};
|
use chrono::{NaiveDate, Utc};
|
||||||
use rinja::Template;
|
use rinja::Template;
|
||||||
use sqlx::PgPool;
|
use sqlx::PgPool;
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
models::{Area, Role, User},
|
models::{Area, Role, User},
|
||||||
utils::ApplicationError,
|
utils::{ApplicationError, TemplateResponse},
|
||||||
};
|
};
|
||||||
|
|
||||||
#[derive(Template)]
|
#[derive(Template)]
|
||||||
@ -37,5 +37,5 @@ pub async fn get(
|
|||||||
today: Utc::now().date_naive(),
|
today: Utc::now().date_naive(),
|
||||||
};
|
};
|
||||||
|
|
||||||
Ok(HttpResponse::Ok().body(template.render()?))
|
Ok(template.to_response()?)
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
use actix_web::{HttpResponse, Responder};
|
use actix_web::Responder;
|
||||||
use rinja::Template;
|
use rinja::Template;
|
||||||
|
|
||||||
use crate::utils::ApplicationError;
|
use crate::utils::{ApplicationError, TemplateResponse};
|
||||||
|
|
||||||
#[derive(Template)]
|
#[derive(Template)]
|
||||||
#[template(path = "imprint.html")]
|
#[template(path = "imprint.html")]
|
||||||
@ -11,5 +11,5 @@ struct ImprintTemplate {}
|
|||||||
pub async fn get_imprint() -> Result<impl Responder, ApplicationError> {
|
pub async fn get_imprint() -> Result<impl Responder, ApplicationError> {
|
||||||
let template = ImprintTemplate {};
|
let template = ImprintTemplate {};
|
||||||
|
|
||||||
Ok(HttpResponse::Ok().body(template.render()?))
|
Ok(template.to_response()?)
|
||||||
}
|
}
|
||||||
|
@ -1,11 +1,10 @@
|
|||||||
use actix_web::{web, HttpResponse, Responder};
|
use actix_web::{web, HttpResponse, Responder};
|
||||||
use rinja::Template;
|
|
||||||
use sqlx::PgPool;
|
use sqlx::PgPool;
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
endpoints::{location::LocationTemplate, IdPath},
|
endpoints::{location::LocationTemplate, IdPath},
|
||||||
models::{Area, Location, Role, User},
|
models::{Area, Location, Role, User},
|
||||||
utils::ApplicationError,
|
utils::{ApplicationError, TemplateResponse},
|
||||||
};
|
};
|
||||||
|
|
||||||
#[actix_web::get("/locations/edit/{id}")]
|
#[actix_web::get("/locations/edit/{id}")]
|
||||||
@ -38,5 +37,5 @@ pub async fn get(
|
|||||||
location: Some(location),
|
location: Some(location),
|
||||||
};
|
};
|
||||||
|
|
||||||
Ok(HttpResponse::Ok().body(template.render()?))
|
Ok(template.to_response()?)
|
||||||
}
|
}
|
||||||
|
@ -1,11 +1,10 @@
|
|||||||
use actix_web::{web, HttpResponse, Responder};
|
use actix_web::{web, Responder};
|
||||||
use rinja::Template;
|
|
||||||
use sqlx::PgPool;
|
use sqlx::PgPool;
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
endpoints::location::LocationTemplate,
|
endpoints::location::LocationTemplate,
|
||||||
models::{Area, Role, User},
|
models::{Area, Role, User},
|
||||||
utils::ApplicationError,
|
utils::{ApplicationError, TemplateResponse},
|
||||||
};
|
};
|
||||||
|
|
||||||
#[actix_web::get("/locations/new")]
|
#[actix_web::get("/locations/new")]
|
||||||
@ -29,5 +28,5 @@ pub async fn get(
|
|||||||
location: None,
|
location: None,
|
||||||
};
|
};
|
||||||
|
|
||||||
Ok(HttpResponse::Ok().body(template.render()?))
|
Ok(template.to_response()?)
|
||||||
}
|
}
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
use actix_web::{web, HttpResponse, Responder};
|
use actix_web::{web, Responder};
|
||||||
use rinja::Template;
|
use rinja::Template;
|
||||||
use sqlx::PgPool;
|
use sqlx::PgPool;
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
models::{Area, Location, Role, User},
|
models::{Area, Location, Role, User},
|
||||||
utils::ApplicationError,
|
utils::{ApplicationError, TemplateResponse},
|
||||||
};
|
};
|
||||||
|
|
||||||
#[derive(Template)]
|
#[derive(Template)]
|
||||||
@ -55,5 +55,5 @@ pub async fn get(
|
|||||||
grouped_locations,
|
grouped_locations,
|
||||||
};
|
};
|
||||||
|
|
||||||
Ok(HttpResponse::Ok().body(template.render()?))
|
Ok(template.to_response()?)
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,10 @@
|
|||||||
use actix_web::{web, HttpResponse, Responder};
|
use actix_web::{web, Responder};
|
||||||
use rinja::Template;
|
use rinja::Template;
|
||||||
|
|
||||||
use crate::{models::User, utils::ApplicationError};
|
use crate::{
|
||||||
|
models::User,
|
||||||
|
utils::{ApplicationError, TemplateResponse},
|
||||||
|
};
|
||||||
|
|
||||||
#[derive(Template)]
|
#[derive(Template)]
|
||||||
#[template(path = "user/profile_change_password.html")]
|
#[template(path = "user/profile_change_password.html")]
|
||||||
@ -11,5 +14,5 @@ struct ProfileChangePasswordTemplate {}
|
|||||||
pub async fn get(_user: web::ReqData<User>) -> Result<impl Responder, ApplicationError> {
|
pub async fn get(_user: web::ReqData<User>) -> Result<impl Responder, ApplicationError> {
|
||||||
let template = ProfileChangePasswordTemplate {};
|
let template = ProfileChangePasswordTemplate {};
|
||||||
|
|
||||||
Ok(HttpResponse::Ok().body(template.render()?))
|
Ok(template.to_response()?)
|
||||||
}
|
}
|
||||||
|
@ -1,11 +1,10 @@
|
|||||||
use actix_web::{web, HttpResponse, Responder};
|
use actix_web::{web, HttpResponse, Responder};
|
||||||
use rinja::Template;
|
|
||||||
use sqlx::PgPool;
|
use sqlx::PgPool;
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
endpoints::{user::NewOrEditUserTemplate, IdPath},
|
endpoints::{user::NewOrEditUserTemplate, IdPath},
|
||||||
models::{Area, Role, User},
|
models::{Area, Role, User},
|
||||||
utils::ApplicationError,
|
utils::{ApplicationError, TemplateResponse},
|
||||||
};
|
};
|
||||||
|
|
||||||
#[actix_web::get("/users/edit/{id}")]
|
#[actix_web::get("/users/edit/{id}")]
|
||||||
@ -39,5 +38,5 @@ pub async fn get_edit(
|
|||||||
area_id: Some(user_in_db.area_id),
|
area_id: Some(user_in_db.area_id),
|
||||||
};
|
};
|
||||||
|
|
||||||
Ok(HttpResponse::Ok().body(template.render()?))
|
Ok(template.to_response()?)
|
||||||
}
|
}
|
||||||
|
@ -3,7 +3,7 @@ use actix_web::{http::header::LOCATION, web, HttpResponse, Responder};
|
|||||||
use rinja::Template;
|
use rinja::Template;
|
||||||
use serde::Deserialize;
|
use serde::Deserialize;
|
||||||
|
|
||||||
use crate::utils::ApplicationError;
|
use crate::utils::{ApplicationError, TemplateResponse};
|
||||||
|
|
||||||
#[derive(Template)]
|
#[derive(Template)]
|
||||||
#[template(path = "user/login.html")]
|
#[template(path = "user/login.html")]
|
||||||
@ -30,6 +30,6 @@ async fn get(
|
|||||||
next: query.next.clone(),
|
next: query.next.clone(),
|
||||||
};
|
};
|
||||||
|
|
||||||
Ok(HttpResponse::Ok().body(template.render()?))
|
Ok(template.to_response()?)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,11 +1,10 @@
|
|||||||
use actix_web::{web, HttpResponse, Responder};
|
use actix_web::{web, Responder};
|
||||||
use rinja::Template;
|
|
||||||
use sqlx::PgPool;
|
use sqlx::PgPool;
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
endpoints::user::NewOrEditUserTemplate,
|
endpoints::user::NewOrEditUserTemplate,
|
||||||
models::{Area, Role, User},
|
models::{Area, Role, User},
|
||||||
utils::ApplicationError,
|
utils::{ApplicationError, TemplateResponse},
|
||||||
};
|
};
|
||||||
|
|
||||||
#[actix_web::get("/users/new")]
|
#[actix_web::get("/users/new")]
|
||||||
@ -30,5 +29,5 @@ pub async fn get_new(
|
|||||||
area_id: None,
|
area_id: None,
|
||||||
};
|
};
|
||||||
|
|
||||||
Ok(HttpResponse::Ok().body(template.render()?))
|
Ok(template.to_response()?)
|
||||||
}
|
}
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
use crate::{
|
use crate::{
|
||||||
models::{Area, Function, Role, User},
|
models::{Area, Function, Role, User},
|
||||||
utils::ApplicationError,
|
utils::{ApplicationError, TemplateResponse},
|
||||||
};
|
};
|
||||||
|
|
||||||
use actix_web::{web, HttpResponse, Responder};
|
use actix_web::{web, Responder};
|
||||||
use rinja::Template;
|
use rinja::Template;
|
||||||
use sqlx::PgPool;
|
use sqlx::PgPool;
|
||||||
|
|
||||||
@ -44,5 +44,5 @@ pub async fn get_overview(
|
|||||||
users,
|
users,
|
||||||
};
|
};
|
||||||
|
|
||||||
Ok(HttpResponse::Ok().body(template.render()?))
|
Ok(template.to_response()?)
|
||||||
}
|
}
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
use actix_web::{web, HttpResponse, Responder};
|
use actix_web::{web, Responder};
|
||||||
use rinja::Template;
|
use rinja::Template;
|
||||||
use sqlx::PgPool;
|
use sqlx::PgPool;
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
filters,
|
filters,
|
||||||
models::{Area, Role, User},
|
models::{Area, Role, User},
|
||||||
utils::ApplicationError,
|
utils::{ApplicationError, TemplateResponse},
|
||||||
};
|
};
|
||||||
|
|
||||||
#[derive(Template)]
|
#[derive(Template)]
|
||||||
@ -26,5 +26,5 @@ pub async fn get(
|
|||||||
|
|
||||||
let template = ProfileTemplate { user };
|
let template = ProfileTemplate { user };
|
||||||
|
|
||||||
Ok(HttpResponse::Ok().body(template.render()?))
|
Ok(template.to_response()?)
|
||||||
}
|
}
|
||||||
|
@ -1,10 +1,12 @@
|
|||||||
use actix_identity::Identity;
|
use actix_identity::Identity;
|
||||||
use actix_web::{get, http::header::LOCATION, web, HttpResponse, Responder};
|
use actix_web::{get, http::header::LOCATION, web, HttpResponse, Responder};
|
||||||
use rinja::Template;
|
|
||||||
use serde::Deserialize;
|
use serde::Deserialize;
|
||||||
use sqlx::PgPool;
|
use sqlx::PgPool;
|
||||||
|
|
||||||
use crate::{models::Registration, utils::ApplicationError};
|
use crate::{
|
||||||
|
models::Registration,
|
||||||
|
utils::{ApplicationError, TemplateResponse},
|
||||||
|
};
|
||||||
|
|
||||||
use super::ResetPasswordTemplate;
|
use super::ResetPasswordTemplate;
|
||||||
|
|
||||||
@ -38,5 +40,5 @@ pub async fn get(
|
|||||||
submit_button_label: "Registrieren",
|
submit_button_label: "Registrieren",
|
||||||
};
|
};
|
||||||
|
|
||||||
Ok(HttpResponse::Ok().body(template.render()?))
|
Ok(template.to_response()?)
|
||||||
}
|
}
|
||||||
|
@ -4,7 +4,10 @@ use rinja::Template;
|
|||||||
use serde::Deserialize;
|
use serde::Deserialize;
|
||||||
use sqlx::PgPool;
|
use sqlx::PgPool;
|
||||||
|
|
||||||
use crate::{models::PasswordReset, utils::ApplicationError};
|
use crate::{
|
||||||
|
models::PasswordReset,
|
||||||
|
utils::{ApplicationError, TemplateResponse},
|
||||||
|
};
|
||||||
|
|
||||||
use super::ResetPasswordTemplate;
|
use super::ResetPasswordTemplate;
|
||||||
|
|
||||||
@ -38,10 +41,10 @@ pub async fn get(
|
|||||||
submit_button_label: "Passwort zurücksetzen",
|
submit_button_label: "Passwort zurücksetzen",
|
||||||
};
|
};
|
||||||
|
|
||||||
return Ok(HttpResponse::Ok().body(template.render()?))
|
return Ok(template.to_response()?);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let template = ForgotPasswordTemplate {};
|
let template = ForgotPasswordTemplate {};
|
||||||
Ok(HttpResponse::Ok().body(template.render()?))
|
Ok(template.to_response()?)
|
||||||
}
|
}
|
||||||
|
@ -1,11 +1,10 @@
|
|||||||
use actix_web::{web, HttpResponse, Responder};
|
use actix_web::{web, HttpResponse, Responder};
|
||||||
use rinja::Template;
|
|
||||||
use sqlx::PgPool;
|
use sqlx::PgPool;
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
endpoints::{vehicle::VehicleNewOrEditTemplate, IdPath},
|
endpoints::{vehicle::VehicleNewOrEditTemplate, IdPath},
|
||||||
models::{Role, User, Vehicle},
|
models::{Role, User, Vehicle},
|
||||||
utils::ApplicationError,
|
utils::{ApplicationError, TemplateResponse},
|
||||||
};
|
};
|
||||||
|
|
||||||
#[actix_web::get("/vehicles/{id}")]
|
#[actix_web::get("/vehicles/{id}")]
|
||||||
@ -27,5 +26,5 @@ pub async fn get(
|
|||||||
vehicle: Some(vehicle),
|
vehicle: Some(vehicle),
|
||||||
};
|
};
|
||||||
|
|
||||||
Ok(HttpResponse::Ok().body(template.render()?))
|
Ok(template.to_response()?)
|
||||||
}
|
}
|
||||||
|
@ -1,10 +1,9 @@
|
|||||||
use actix_web::{web, HttpResponse, Responder};
|
use actix_web::{web, Responder};
|
||||||
use rinja::Template;
|
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
endpoints::vehicle::VehicleNewOrEditTemplate,
|
endpoints::vehicle::VehicleNewOrEditTemplate,
|
||||||
models::{Role, User},
|
models::{Role, User},
|
||||||
utils::ApplicationError,
|
utils::{ApplicationError, TemplateResponse},
|
||||||
};
|
};
|
||||||
|
|
||||||
#[actix_web::get("/vehicles/new")]
|
#[actix_web::get("/vehicles/new")]
|
||||||
@ -18,5 +17,5 @@ pub async fn get(user: web::ReqData<User>) -> Result<impl Responder, Application
|
|||||||
vehicle: None,
|
vehicle: None,
|
||||||
};
|
};
|
||||||
|
|
||||||
Ok(HttpResponse::Ok().body(template.render()?))
|
Ok(template.to_response()?)
|
||||||
}
|
}
|
||||||
|
@ -1,18 +1,24 @@
|
|||||||
use actix_web::{web, HttpResponse, Responder};
|
use actix_web::{web, Responder};
|
||||||
use rinja::Template;
|
use rinja::Template;
|
||||||
use sqlx::PgPool;
|
use sqlx::PgPool;
|
||||||
|
|
||||||
use crate::{models::{User, Vehicle, Role}, utils::ApplicationError};
|
use crate::{
|
||||||
|
models::{Role, User, Vehicle},
|
||||||
|
utils::{ApplicationError, TemplateResponse},
|
||||||
|
};
|
||||||
|
|
||||||
#[derive(Template)]
|
#[derive(Template)]
|
||||||
#[template(path = "vehicles/overview.html")]
|
#[template(path = "vehicles/overview.html")]
|
||||||
pub struct VehiclesOverviewTemplate {
|
pub struct VehiclesOverviewTemplate {
|
||||||
user: User,
|
user: User,
|
||||||
vehicles: Vec<Vehicle>
|
vehicles: Vec<Vehicle>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[actix_web::get("/vehicles")]
|
#[actix_web::get("/vehicles")]
|
||||||
pub async fn get(user: web::ReqData<User>, pool: web::Data<PgPool>) -> Result<impl Responder, ApplicationError> {
|
pub async fn get(
|
||||||
|
user: web::ReqData<User>,
|
||||||
|
pool: web::Data<PgPool>,
|
||||||
|
) -> Result<impl Responder, ApplicationError> {
|
||||||
if user.role != Role::Admin {
|
if user.role != Role::Admin {
|
||||||
return Err(ApplicationError::Unauthorized);
|
return Err(ApplicationError::Unauthorized);
|
||||||
}
|
}
|
||||||
@ -21,8 +27,8 @@ pub async fn get(user: web::ReqData<User>, pool: web::Data<PgPool>) -> Result<im
|
|||||||
|
|
||||||
let template = VehiclesOverviewTemplate {
|
let template = VehiclesOverviewTemplate {
|
||||||
user: user.into_inner(),
|
user: user.into_inner(),
|
||||||
vehicles
|
vehicles,
|
||||||
};
|
};
|
||||||
|
|
||||||
Ok(HttpResponse::Ok().body(template.render()?))
|
Ok(template.to_response()?)
|
||||||
}
|
}
|
||||||
|
@ -1,12 +1,14 @@
|
|||||||
use actix_web::{web, HttpResponse, Responder};
|
use actix_web::{web, HttpResponse, Responder};
|
||||||
use rinja::Template;
|
|
||||||
use serde::Deserialize;
|
use serde::Deserialize;
|
||||||
use sqlx::PgPool;
|
use sqlx::PgPool;
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
endpoints::vehicle_assignment::PlanVehiclesPartialTemplate,
|
endpoints::vehicle_assignment::PlanVehiclesPartialTemplate,
|
||||||
models::{Event, Role, User, VehicleAssignement},
|
models::{Event, Role, User, VehicleAssignement},
|
||||||
utils::{event_planning_template::generate_vehicles_assigned_and_available, ApplicationError},
|
utils::{
|
||||||
|
event_planning_template::generate_vehicles_assigned_and_available, ApplicationError,
|
||||||
|
TemplateResponse,
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
#[derive(Deserialize)]
|
#[derive(Deserialize)]
|
||||||
@ -55,5 +57,5 @@ pub async fn delete(
|
|||||||
vehicles_available,
|
vehicles_available,
|
||||||
};
|
};
|
||||||
|
|
||||||
Ok(HttpResponse::Ok().body(template.render()?))
|
Ok(template.to_response()?)
|
||||||
}
|
}
|
||||||
|
@ -1,12 +1,14 @@
|
|||||||
use actix_web::{web, HttpResponse, Responder};
|
use actix_web::{web, HttpResponse, Responder};
|
||||||
use rinja::Template;
|
|
||||||
use serde::Deserialize;
|
use serde::Deserialize;
|
||||||
use sqlx::PgPool;
|
use sqlx::PgPool;
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
endpoints::vehicle_assignment::PlanVehiclesPartialTemplate,
|
endpoints::vehicle_assignment::PlanVehiclesPartialTemplate,
|
||||||
models::{Event, Role, User, Vehicle, VehicleAssignement},
|
models::{Event, Role, User, Vehicle, VehicleAssignement},
|
||||||
utils::{event_planning_template::generate_vehicles_assigned_and_available, ApplicationError},
|
utils::{
|
||||||
|
event_planning_template::generate_vehicles_assigned_and_available, ApplicationError,
|
||||||
|
TemplateResponse,
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
#[derive(Deserialize)]
|
#[derive(Deserialize)]
|
||||||
@ -44,7 +46,8 @@ pub async fn post(
|
|||||||
};
|
};
|
||||||
|
|
||||||
let existing_assignments_for_vehicle =
|
let existing_assignments_for_vehicle =
|
||||||
VehicleAssignement::read_all_by_vehicle_and_date(pool.get_ref(), vehicle.id, event.date).await?;
|
VehicleAssignement::read_all_by_vehicle_and_date(pool.get_ref(), vehicle.id, event.date)
|
||||||
|
.await?;
|
||||||
let has_start_time_during_event =
|
let has_start_time_during_event =
|
||||||
|a: &VehicleAssignement| a.start_time >= event.start_time && a.start_time <= event.end_time;
|
|a: &VehicleAssignement| a.start_time >= event.start_time && a.start_time <= event.end_time;
|
||||||
let has_end_time_during_event =
|
let has_end_time_during_event =
|
||||||
@ -76,5 +79,5 @@ pub async fn post(
|
|||||||
vehicles_available,
|
vehicles_available,
|
||||||
};
|
};
|
||||||
|
|
||||||
Ok(HttpResponse::Ok().body(template.render()?))
|
Ok(template.to_response()?)
|
||||||
}
|
}
|
||||||
|
@ -4,6 +4,7 @@ pub mod event_planning_template;
|
|||||||
pub mod manage_commands;
|
pub mod manage_commands;
|
||||||
pub mod password_help;
|
pub mod password_help;
|
||||||
pub mod token_generation;
|
pub mod token_generation;
|
||||||
|
mod template_response_trait;
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
pub mod test_helper;
|
pub mod test_helper;
|
||||||
@ -11,6 +12,8 @@ pub mod test_helper;
|
|||||||
pub use application_error::ApplicationError;
|
pub use application_error::ApplicationError;
|
||||||
use chrono::{NaiveDate, Utc};
|
use chrono::{NaiveDate, Utc};
|
||||||
|
|
||||||
|
pub use template_response_trait::TemplateResponse;
|
||||||
|
|
||||||
pub fn get_return_url_for_date(date: &NaiveDate) -> String {
|
pub fn get_return_url_for_date(date: &NaiveDate) -> String {
|
||||||
let today = Utc::now().date_naive();
|
let today = Utc::now().date_naive();
|
||||||
if date == &today {
|
if date == &today {
|
||||||
|
18
web/src/utils/template_response_trait.rs
Normal file
18
web/src/utils/template_response_trait.rs
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
use actix_web::{http::header::ContentType, HttpResponse};
|
||||||
|
use rinja::Template;
|
||||||
|
|
||||||
|
pub trait TemplateResponse {
|
||||||
|
fn to_response(&self) -> Result<HttpResponse, rinja::Error>;
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<T: Template> TemplateResponse for T {
|
||||||
|
fn to_response(&self) -> Result<HttpResponse, rinja::Error> {
|
||||||
|
let rendered_template = self.render()?;
|
||||||
|
|
||||||
|
let response = HttpResponse::Ok()
|
||||||
|
.content_type(ContentType::html())
|
||||||
|
.body(rendered_template);
|
||||||
|
|
||||||
|
Ok(response)
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user