Merge pull request 'only have a single user with details struct' (#480) from simplify-user-structs into staging
Reviewed-on: #480
This commit is contained in:
commit
6813d75db5
@ -47,36 +47,20 @@ pub struct User {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Serialize, Deserialize)]
|
#[derive(Debug, Serialize, Deserialize)]
|
||||||
pub struct UserWithRolesAndNotificationCount {
|
pub struct UserWithDetails {
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
pub user: User,
|
pub user: User,
|
||||||
pub amount_unread_notifications: i32,
|
pub amount_unread_notifications: i32,
|
||||||
pub roles: Vec<String>,
|
|
||||||
}
|
|
||||||
|
|
||||||
impl UserWithRolesAndNotificationCount {
|
|
||||||
pub async fn from_user(user: User, db: &SqlitePool) -> Self {
|
|
||||||
Self {
|
|
||||||
roles: user.roles(db).await,
|
|
||||||
amount_unread_notifications: user.amount_unread_notifications(db).await,
|
|
||||||
user,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Debug, Serialize, Deserialize)]
|
|
||||||
pub struct UserWithWaterStatus {
|
|
||||||
#[serde(flatten)]
|
|
||||||
pub user: User,
|
|
||||||
pub on_water: bool,
|
pub on_water: bool,
|
||||||
pub roles: Vec<String>,
|
pub roles: Vec<String>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl UserWithWaterStatus {
|
impl UserWithDetails {
|
||||||
pub async fn from_user(user: User, db: &SqlitePool) -> Self {
|
pub async fn from_user(user: User, db: &SqlitePool) -> Self {
|
||||||
Self {
|
Self {
|
||||||
on_water: user.on_water(db).await,
|
on_water: user.on_water(db).await,
|
||||||
roles: user.roles(db).await,
|
roles: user.roles(db).await,
|
||||||
|
amount_unread_notifications: user.amount_unread_notifications(db).await,
|
||||||
user,
|
user,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2,7 +2,7 @@ use crate::model::{
|
|||||||
boat::{Boat, BoatToAdd, BoatToUpdate},
|
boat::{Boat, BoatToAdd, BoatToUpdate},
|
||||||
location::Location,
|
location::Location,
|
||||||
log::Log,
|
log::Log,
|
||||||
user::{AdminUser, User, UserWithRolesAndNotificationCount},
|
user::{AdminUser, User, UserWithDetails},
|
||||||
};
|
};
|
||||||
use rocket::{
|
use rocket::{
|
||||||
form::Form,
|
form::Form,
|
||||||
@ -33,7 +33,7 @@ async fn index(
|
|||||||
context.insert("users", &users);
|
context.insert("users", &users);
|
||||||
context.insert(
|
context.insert(
|
||||||
"loggedin_user",
|
"loggedin_user",
|
||||||
&UserWithRolesAndNotificationCount::from_user(admin.user, db).await,
|
&UserWithDetails::from_user(admin.user, db).await,
|
||||||
);
|
);
|
||||||
|
|
||||||
Template::render("admin/boat/index", context.into_json())
|
Template::render("admin/boat/index", context.into_json())
|
||||||
|
@ -10,7 +10,7 @@ use crate::model::log::Log;
|
|||||||
use crate::model::mail::Mail;
|
use crate::model::mail::Mail;
|
||||||
use crate::model::role::Role;
|
use crate::model::role::Role;
|
||||||
use crate::model::user::AdminUser;
|
use crate::model::user::AdminUser;
|
||||||
use crate::model::user::UserWithRolesAndNotificationCount;
|
use crate::model::user::UserWithDetails;
|
||||||
use crate::tera::Config;
|
use crate::tera::Config;
|
||||||
|
|
||||||
#[get("/mail")]
|
#[get("/mail")]
|
||||||
@ -27,7 +27,7 @@ async fn index(
|
|||||||
|
|
||||||
context.insert(
|
context.insert(
|
||||||
"loggedin_user",
|
"loggedin_user",
|
||||||
&UserWithRolesAndNotificationCount::from_user(admin.user, db).await,
|
&UserWithDetails::from_user(admin.user, db).await,
|
||||||
);
|
);
|
||||||
context.insert("roles", &roles);
|
context.insert("roles", &roles);
|
||||||
|
|
||||||
|
@ -2,7 +2,7 @@ use crate::model::{
|
|||||||
log::Log,
|
log::Log,
|
||||||
notification::Notification,
|
notification::Notification,
|
||||||
role::Role,
|
role::Role,
|
||||||
user::{AdminUser, User, UserWithRolesAndNotificationCount},
|
user::{AdminUser, User, UserWithDetails},
|
||||||
};
|
};
|
||||||
use rocket::{
|
use rocket::{
|
||||||
form::Form,
|
form::Form,
|
||||||
@ -26,7 +26,7 @@ async fn index(
|
|||||||
}
|
}
|
||||||
context.insert(
|
context.insert(
|
||||||
"loggedin_user",
|
"loggedin_user",
|
||||||
&UserWithRolesAndNotificationCount::from_user(user.user, db).await,
|
&UserWithDetails::from_user(user.user, db).await,
|
||||||
);
|
);
|
||||||
context.insert("roles", &Role::all(db).await);
|
context.insert("roles", &Role::all(db).await);
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
use crate::model::{
|
use crate::model::{
|
||||||
role::Role,
|
role::Role,
|
||||||
user::{SchnupperBetreuerUser, User, UserWithRolesAndNotificationCount},
|
user::{SchnupperBetreuerUser, User, UserWithDetails},
|
||||||
};
|
};
|
||||||
use futures::future::join_all;
|
use futures::future::join_all;
|
||||||
use rocket::{get, request::FlashMessage, routes, Route, State};
|
use rocket::{get, request::FlashMessage, routes, Route, State};
|
||||||
@ -18,9 +18,9 @@ async fn index(
|
|||||||
let user_futures: Vec<_> = User::all_with_role(db, &schnupperant)
|
let user_futures: Vec<_> = User::all_with_role(db, &schnupperant)
|
||||||
.await
|
.await
|
||||||
.into_iter()
|
.into_iter()
|
||||||
.map(|u| async move { UserWithRolesAndNotificationCount::from_user(u, db).await })
|
.map(|u| async move { UserWithDetails::from_user(u, db).await })
|
||||||
.collect();
|
.collect();
|
||||||
let users: Vec<UserWithRolesAndNotificationCount> = join_all(user_futures).await;
|
let users: Vec<UserWithDetails> = join_all(user_futures).await;
|
||||||
|
|
||||||
let mut context = Context::new();
|
let mut context = Context::new();
|
||||||
if let Some(msg) = flash {
|
if let Some(msg) = flash {
|
||||||
@ -29,7 +29,7 @@ async fn index(
|
|||||||
context.insert("schnupperanten", &users);
|
context.insert("schnupperanten", &users);
|
||||||
context.insert(
|
context.insert(
|
||||||
"loggedin_user",
|
"loggedin_user",
|
||||||
&UserWithRolesAndNotificationCount::from_user(user.into(), db).await,
|
&UserWithDetails::from_user(user.into(), db).await,
|
||||||
);
|
);
|
||||||
|
|
||||||
Template::render("admin/schnupper/index", context.into_json())
|
Template::render("admin/schnupper/index", context.into_json())
|
||||||
|
@ -6,8 +6,8 @@ use crate::model::{
|
|||||||
logbook::Logbook,
|
logbook::Logbook,
|
||||||
role::Role,
|
role::Role,
|
||||||
user::{
|
user::{
|
||||||
AdminUser, User, UserWithMembershipPdf, UserWithRolesAndMembershipPdf,
|
AdminUser, User, UserWithDetails, UserWithMembershipPdf, UserWithRolesAndMembershipPdf,
|
||||||
UserWithRolesAndNotificationCount, VorstandUser,
|
VorstandUser,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
use futures::future::join_all;
|
use futures::future::join_all;
|
||||||
@ -67,10 +67,7 @@ async fn index(
|
|||||||
context.insert("users", &users);
|
context.insert("users", &users);
|
||||||
context.insert("roles", &roles);
|
context.insert("roles", &roles);
|
||||||
context.insert("families", &families);
|
context.insert("families", &families);
|
||||||
context.insert(
|
context.insert("loggedin_user", &UserWithDetails::from_user(user, db).await);
|
||||||
"loggedin_user",
|
|
||||||
&UserWithRolesAndNotificationCount::from_user(user, db).await,
|
|
||||||
);
|
|
||||||
|
|
||||||
Template::render("admin/user/index", context.into_json())
|
Template::render("admin/user/index", context.into_json())
|
||||||
}
|
}
|
||||||
@ -102,10 +99,7 @@ async fn index_admin(
|
|||||||
context.insert("users", &users);
|
context.insert("users", &users);
|
||||||
context.insert("roles", &roles);
|
context.insert("roles", &roles);
|
||||||
context.insert("families", &families);
|
context.insert("families", &families);
|
||||||
context.insert(
|
context.insert("loggedin_user", &UserWithDetails::from_user(user, db).await);
|
||||||
"loggedin_user",
|
|
||||||
&UserWithRolesAndNotificationCount::from_user(user, db).await,
|
|
||||||
);
|
|
||||||
|
|
||||||
Template::render("admin/user/index", context.into_json())
|
Template::render("admin/user/index", context.into_json())
|
||||||
}
|
}
|
||||||
@ -133,7 +127,7 @@ async fn fees(
|
|||||||
}
|
}
|
||||||
context.insert(
|
context.insert(
|
||||||
"loggedin_user",
|
"loggedin_user",
|
||||||
&UserWithRolesAndNotificationCount::from_user(admin.into(), db).await,
|
&UserWithDetails::from_user(admin.into(), db).await,
|
||||||
);
|
);
|
||||||
|
|
||||||
Template::render("admin/user/fees", context.into_json())
|
Template::render("admin/user/fees", context.into_json())
|
||||||
@ -153,7 +147,7 @@ async fn scheckbuch(
|
|||||||
for s in scheckbooks {
|
for s in scheckbooks {
|
||||||
scheckbooks_with_roles.push((
|
scheckbooks_with_roles.push((
|
||||||
Logbook::completed_with_user(db, &s).await,
|
Logbook::completed_with_user(db, &s).await,
|
||||||
UserWithRolesAndNotificationCount::from_user(s, db).await,
|
UserWithDetails::from_user(s, db).await,
|
||||||
))
|
))
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -164,7 +158,7 @@ async fn scheckbuch(
|
|||||||
}
|
}
|
||||||
context.insert(
|
context.insert(
|
||||||
"loggedin_user",
|
"loggedin_user",
|
||||||
&UserWithRolesAndNotificationCount::from_user(user.into(), db).await,
|
&UserWithDetails::from_user(user.into(), db).await,
|
||||||
);
|
);
|
||||||
|
|
||||||
Template::render("admin/user/scheckbuch", context.into_json())
|
Template::render("admin/user/scheckbuch", context.into_json())
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
use crate::model::{
|
use crate::model::{
|
||||||
boat::Boat,
|
boat::Boat,
|
||||||
boathouse::Boathouse,
|
boathouse::Boathouse,
|
||||||
user::{AdminUser, UserWithRolesAndNotificationCount, VorstandUser},
|
user::{AdminUser, UserWithDetails, VorstandUser},
|
||||||
};
|
};
|
||||||
use rocket::{
|
use rocket::{
|
||||||
form::Form,
|
form::Form,
|
||||||
@ -39,7 +39,7 @@ async fn index(
|
|||||||
|
|
||||||
context.insert(
|
context.insert(
|
||||||
"loggedin_user",
|
"loggedin_user",
|
||||||
&UserWithRolesAndNotificationCount::from_user(admin.into(), db).await,
|
&UserWithDetails::from_user(admin.into(), db).await,
|
||||||
);
|
);
|
||||||
|
|
||||||
Template::render("board/boathouse", context.into_json())
|
Template::render("board/boathouse", context.into_json())
|
||||||
|
@ -13,7 +13,7 @@ use crate::{
|
|||||||
model::{
|
model::{
|
||||||
boat::Boat,
|
boat::Boat,
|
||||||
boatdamage::{BoatDamage, BoatDamageFixed, BoatDamageToAdd, BoatDamageVerified},
|
boatdamage::{BoatDamage, BoatDamageFixed, BoatDamageToAdd, BoatDamageVerified},
|
||||||
user::{CoxUser, DonauLinzUser, TechUser, User, UserWithRolesAndNotificationCount},
|
user::{CoxUser, DonauLinzUser, TechUser, User, UserWithDetails},
|
||||||
},
|
},
|
||||||
tera::log::KioskCookie,
|
tera::log::KioskCookie,
|
||||||
};
|
};
|
||||||
@ -59,7 +59,7 @@ async fn index(
|
|||||||
context.insert("boats", &boats);
|
context.insert("boats", &boats);
|
||||||
context.insert(
|
context.insert(
|
||||||
"loggedin_user",
|
"loggedin_user",
|
||||||
&UserWithRolesAndNotificationCount::from_user(user.into(), db).await,
|
&UserWithDetails::from_user(user.into(), db).await,
|
||||||
);
|
);
|
||||||
|
|
||||||
Template::render("boatdamages", context.into_json())
|
Template::render("boatdamages", context.into_json())
|
||||||
|
@ -15,7 +15,7 @@ use crate::{
|
|||||||
boat::Boat,
|
boat::Boat,
|
||||||
boatreservation::{BoatReservation, BoatReservationToAdd},
|
boatreservation::{BoatReservation, BoatReservationToAdd},
|
||||||
log::Log,
|
log::Log,
|
||||||
user::{DonauLinzUser, User, UserWithRolesAndNotificationCount},
|
user::{DonauLinzUser, User, UserWithDetails},
|
||||||
},
|
},
|
||||||
tera::log::KioskCookie,
|
tera::log::KioskCookie,
|
||||||
};
|
};
|
||||||
@ -75,7 +75,7 @@ async fn index(
|
|||||||
context.insert("user", &User::all(db).await);
|
context.insert("user", &User::all(db).await);
|
||||||
context.insert(
|
context.insert(
|
||||||
"loggedin_user",
|
"loggedin_user",
|
||||||
&UserWithRolesAndNotificationCount::from_user(user.into(), db).await,
|
&UserWithDetails::from_user(user.into(), db).await,
|
||||||
);
|
);
|
||||||
|
|
||||||
Template::render("boatreservations", context.into_json())
|
Template::render("boatreservations", context.into_json())
|
||||||
|
@ -18,7 +18,7 @@ use tera::Context;
|
|||||||
|
|
||||||
use crate::model::{
|
use crate::model::{
|
||||||
log::Log,
|
log::Log,
|
||||||
user::{AdminUser, User, UserWithRolesAndNotificationCount},
|
user::{AdminUser, User, UserWithDetails},
|
||||||
};
|
};
|
||||||
|
|
||||||
#[derive(Serialize)]
|
#[derive(Serialize)]
|
||||||
@ -51,7 +51,7 @@ async fn send(db: &State<SqlitePool>, _user: AdminUser) -> Template {
|
|||||||
|
|
||||||
Template::render(
|
Template::render(
|
||||||
"ergo.final",
|
"ergo.final",
|
||||||
context!(loggedin_user: &UserWithRolesAndNotificationCount::from_user(_user.user, db).await, thirty, dozen),
|
context!(loggedin_user: &UserWithDetails::from_user(_user.user, db).await, thirty, dozen),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -120,10 +120,7 @@ async fn index(db: &State<SqlitePool>, user: User, flash: Option<FlashMessage<'_
|
|||||||
if let Some(msg) = flash {
|
if let Some(msg) = flash {
|
||||||
context.insert("flash", &msg.into_inner());
|
context.insert("flash", &msg.into_inner());
|
||||||
}
|
}
|
||||||
context.insert(
|
context.insert("loggedin_user", &UserWithDetails::from_user(user, db).await);
|
||||||
"loggedin_user",
|
|
||||||
&UserWithRolesAndNotificationCount::from_user(user, db).await,
|
|
||||||
);
|
|
||||||
context.insert("users", &users);
|
context.insert("users", &users);
|
||||||
context.insert("thirty", &thirty);
|
context.insert("thirty", &thirty);
|
||||||
context.insert("dozen", &dozen);
|
context.insert("dozen", &dozen);
|
||||||
|
@ -24,9 +24,7 @@ use crate::model::{
|
|||||||
LogbookUpdateError,
|
LogbookUpdateError,
|
||||||
},
|
},
|
||||||
logtype::LogType,
|
logtype::LogType,
|
||||||
user::{
|
user::{AdminUser, DonauLinzUser, User, UserWithDetails},
|
||||||
AdminUser, DonauLinzUser, User, UserWithRolesAndNotificationCount, UserWithWaterStatus,
|
|
||||||
},
|
|
||||||
};
|
};
|
||||||
|
|
||||||
pub struct KioskCookie(String);
|
pub struct KioskCookie(String);
|
||||||
@ -51,22 +49,22 @@ async fn index(
|
|||||||
) -> Template {
|
) -> Template {
|
||||||
let boats = Boat::for_user(db, &user).await;
|
let boats = Boat::for_user(db, &user).await;
|
||||||
|
|
||||||
let mut coxes: Vec<UserWithWaterStatus> = futures::future::join_all(
|
let mut coxes: Vec<UserWithDetails> = futures::future::join_all(
|
||||||
User::cox(db)
|
User::cox(db)
|
||||||
.await
|
.await
|
||||||
.into_iter()
|
.into_iter()
|
||||||
.map(|user| UserWithWaterStatus::from_user(user, db)),
|
.map(|user| UserWithDetails::from_user(user, db)),
|
||||||
)
|
)
|
||||||
.await;
|
.await;
|
||||||
coxes.retain(|u| {
|
coxes.retain(|u| {
|
||||||
u.roles.contains(&"Donau Linz".into()) || u.roles.contains(&"scheckbuch".into())
|
u.roles.contains(&"Donau Linz".into()) || u.roles.contains(&"scheckbuch".into())
|
||||||
});
|
});
|
||||||
|
|
||||||
let mut users: Vec<UserWithWaterStatus> = futures::future::join_all(
|
let mut users: Vec<UserWithDetails> = futures::future::join_all(
|
||||||
User::all(db)
|
User::all(db)
|
||||||
.await
|
.await
|
||||||
.into_iter()
|
.into_iter()
|
||||||
.map(|user| UserWithWaterStatus::from_user(user, db)),
|
.map(|user| UserWithDetails::from_user(user, db)),
|
||||||
)
|
)
|
||||||
.await;
|
.await;
|
||||||
users.retain(|u| {
|
users.retain(|u| {
|
||||||
@ -93,7 +91,7 @@ async fn index(
|
|||||||
context.insert("logtypes", &logtypes);
|
context.insert("logtypes", &logtypes);
|
||||||
context.insert(
|
context.insert(
|
||||||
"loggedin_user",
|
"loggedin_user",
|
||||||
&UserWithRolesAndNotificationCount::from_user(user.into(), db).await,
|
&UserWithDetails::from_user(user.into(), db).await,
|
||||||
);
|
);
|
||||||
context.insert("on_water", &on_water);
|
context.insert("on_water", &on_water);
|
||||||
context.insert("distances", &distances);
|
context.insert("distances", &distances);
|
||||||
@ -107,7 +105,7 @@ async fn show(db: &State<SqlitePool>, user: DonauLinzUser) -> Template {
|
|||||||
|
|
||||||
Template::render(
|
Template::render(
|
||||||
"log.completed",
|
"log.completed",
|
||||||
context!(logs, loggedin_user: &UserWithRolesAndNotificationCount::from_user(user.into(), db).await),
|
context!(logs, loggedin_user: &UserWithDetails::from_user(user.into(), db).await),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -117,7 +115,7 @@ async fn show_for_year(db: &State<SqlitePool>, user: AdminUser, year: i32) -> Te
|
|||||||
|
|
||||||
Template::render(
|
Template::render(
|
||||||
"log.completed",
|
"log.completed",
|
||||||
context!(logs, loggedin_user: &UserWithRolesAndNotificationCount::from_user(user.user, db).await),
|
context!(logs, loggedin_user: &UserWithDetails::from_user(user.user, db).await),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -153,11 +151,11 @@ async fn kiosk(
|
|||||||
_kiosk: KioskCookie,
|
_kiosk: KioskCookie,
|
||||||
) -> Template {
|
) -> Template {
|
||||||
let boats = Boat::all(db).await;
|
let boats = Boat::all(db).await;
|
||||||
let mut coxes: Vec<UserWithWaterStatus> = futures::future::join_all(
|
let mut coxes: Vec<UserWithDetails> = futures::future::join_all(
|
||||||
User::cox(db)
|
User::cox(db)
|
||||||
.await
|
.await
|
||||||
.into_iter()
|
.into_iter()
|
||||||
.map(|user| UserWithWaterStatus::from_user(user, db)),
|
.map(|user| UserWithDetails::from_user(user, db)),
|
||||||
)
|
)
|
||||||
.await;
|
.await;
|
||||||
|
|
||||||
@ -165,11 +163,11 @@ async fn kiosk(
|
|||||||
u.roles.contains(&"Donau Linz".into()) || u.roles.contains(&"scheckbuch".into())
|
u.roles.contains(&"Donau Linz".into()) || u.roles.contains(&"scheckbuch".into())
|
||||||
});
|
});
|
||||||
|
|
||||||
let mut users: Vec<UserWithWaterStatus> = futures::future::join_all(
|
let mut users: Vec<UserWithDetails> = futures::future::join_all(
|
||||||
User::all(db)
|
User::all(db)
|
||||||
.await
|
.await
|
||||||
.into_iter()
|
.into_iter()
|
||||||
.map(|user| UserWithWaterStatus::from_user(user, db)),
|
.map(|user| UserWithDetails::from_user(user, db)),
|
||||||
)
|
)
|
||||||
.await;
|
.await;
|
||||||
|
|
||||||
|
@ -23,7 +23,7 @@ use tera::Context;
|
|||||||
use crate::model::{
|
use crate::model::{
|
||||||
notification::Notification,
|
notification::Notification,
|
||||||
role::Role,
|
role::Role,
|
||||||
user::{User, UserWithRolesAndNotificationCount},
|
user::{User, UserWithDetails},
|
||||||
};
|
};
|
||||||
|
|
||||||
pub(crate) mod admin;
|
pub(crate) mod admin;
|
||||||
@ -53,10 +53,7 @@ async fn index(db: &State<SqlitePool>, user: User, flash: Option<FlashMessage<'_
|
|||||||
}
|
}
|
||||||
|
|
||||||
context.insert("notifications", &Notification::for_user(db, &user).await);
|
context.insert("notifications", &Notification::for_user(db, &user).await);
|
||||||
context.insert(
|
context.insert("loggedin_user", &UserWithDetails::from_user(user, db).await);
|
||||||
"loggedin_user",
|
|
||||||
&UserWithRolesAndNotificationCount::from_user(user, db).await,
|
|
||||||
);
|
|
||||||
Template::render("index", context.into_json())
|
Template::render("index", context.into_json())
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -78,10 +75,7 @@ async fn steering(db: &State<SqlitePool>, user: User, flash: Option<FlashMessage
|
|||||||
context.insert("coxes", &coxes);
|
context.insert("coxes", &coxes);
|
||||||
context.insert("bootskundige", &bootskundige);
|
context.insert("bootskundige", &bootskundige);
|
||||||
|
|
||||||
context.insert(
|
context.insert("loggedin_user", &UserWithDetails::from_user(user, db).await);
|
||||||
"loggedin_user",
|
|
||||||
&UserWithRolesAndNotificationCount::from_user(user, db).await,
|
|
||||||
);
|
|
||||||
Template::render("steering", context.into_json())
|
Template::render("steering", context.into_json())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -13,7 +13,7 @@ use crate::model::{
|
|||||||
logbook::Logbook,
|
logbook::Logbook,
|
||||||
tripdetails::TripDetails,
|
tripdetails::TripDetails,
|
||||||
triptype::TripType,
|
triptype::TripType,
|
||||||
user::{AllowedForPlannedTripsUser, User, UserWithRolesAndNotificationCount},
|
user::{AllowedForPlannedTripsUser, User, UserWithDetails},
|
||||||
usertrip::{UserTrip, UserTripDeleteError, UserTripError},
|
usertrip::{UserTrip, UserTripDeleteError, UserTripError},
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -44,10 +44,7 @@ async fn index(
|
|||||||
}
|
}
|
||||||
|
|
||||||
context.insert("fee", &user.fee(db).await);
|
context.insert("fee", &user.fee(db).await);
|
||||||
context.insert(
|
context.insert("loggedin_user", &UserWithDetails::from_user(user, db).await);
|
||||||
"loggedin_user",
|
|
||||||
&UserWithRolesAndNotificationCount::from_user(user, db).await,
|
|
||||||
);
|
|
||||||
context.insert("days", &days);
|
context.insert("days", &days);
|
||||||
Template::render("planned", context.into_json())
|
Template::render("planned", context.into_json())
|
||||||
}
|
}
|
||||||
|
@ -4,7 +4,7 @@ use sqlx::SqlitePool;
|
|||||||
|
|
||||||
use crate::model::{
|
use crate::model::{
|
||||||
stat::{self, BoatStat, Stat},
|
stat::{self, BoatStat, Stat},
|
||||||
user::{DonauLinzUser, UserWithRolesAndNotificationCount},
|
user::{DonauLinzUser, UserWithDetails},
|
||||||
};
|
};
|
||||||
|
|
||||||
use super::log::KioskCookie;
|
use super::log::KioskCookie;
|
||||||
@ -16,7 +16,7 @@ async fn index_boat(db: &State<SqlitePool>, user: DonauLinzUser) -> Template {
|
|||||||
|
|
||||||
Template::render(
|
Template::render(
|
||||||
"stat.boats",
|
"stat.boats",
|
||||||
context!(loggedin_user: &UserWithRolesAndNotificationCount::from_user(user.into(), db).await, stat, kiosk),
|
context!(loggedin_user: &UserWithDetails::from_user(user.into(), db).await, stat, kiosk),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -38,7 +38,7 @@ async fn index(db: &State<SqlitePool>, user: DonauLinzUser, year: Option<i32>) -
|
|||||||
|
|
||||||
Template::render(
|
Template::render(
|
||||||
"stat.people",
|
"stat.people",
|
||||||
context!(loggedin_user: &UserWithRolesAndNotificationCount::from_user(user.into(), db).await, stat, personal, kiosk, guest_km, club_km),
|
context!(loggedin_user: &UserWithDetails::from_user(user.into(), db).await, stat, personal, kiosk, guest_km, club_km),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user