refactor: move modules and use whole user in templates

This commit is contained in:
Max Hohlfeld 2024-02-18 21:40:45 +01:00
parent b736b04ced
commit a06f86dcaa
13 changed files with 41 additions and 38 deletions

View File

@ -3,7 +3,7 @@ use actix_web::{http::header::LOCATION, web, HttpMessage, HttpRequest, HttpRespo
use serde::Deserialize;
use sqlx::PgPool;
use crate::{auth::utils::hash_plain_password_with_salt, models::user::User};
use crate::{auth::utils::hash_plain_password_with_salt, models::User};
#[derive(Deserialize)]
struct LoginForm {

View File

@ -2,7 +2,7 @@ use actix_web::{http::header::LOCATION, web, HttpResponse, Responder};
use serde::Deserialize;
use sqlx::PgPool;
use crate::{auth::utils::generate_salt_and_hash_plain_password, models::user::User};
use crate::{auth::utils::generate_salt_and_hash_plain_password, models::User};
#[derive(Deserialize)]
struct RegisterForm {

View File

@ -3,7 +3,7 @@ use actix_web::{web, HttpResponse, Responder};
use serde::Deserialize;
use sqlx::PgPool;
use crate::models::availabillity::Availabillity;
use crate::models::Availabillity;
#[derive(Deserialize)]
pub struct AvailabillityPath {

View File

@ -6,12 +6,12 @@ use chrono::NaiveDate;
use serde::Deserialize;
use sqlx::PgPool;
use crate::models::{role::Role, user::User};
use crate::models::User;
#[derive(Template)]
#[template(path = "availabillity_new.html")]
struct AvailabillityNewTemplate {
user_role: Role,
user: User,
date: NaiveDate
}
@ -30,7 +30,7 @@ pub async fn get_availabillity_new(
if let Some(user) = user {
let current_user = User::read_by_id(pool.as_ref(), user.id().unwrap().parse().unwrap()).await.unwrap();
let template = AvailabillityNewTemplate { user_role: current_user.role, date: query.date };
let template = AvailabillityNewTemplate { user: current_user, date: query.date };
template.to_response()
} else {

View File

@ -4,7 +4,7 @@ use chrono::{NaiveDate, NaiveTime};
use serde::Deserialize;
use sqlx::PgPool;
use crate::models::{availabillity::Availabillity, user::User};
use crate::models::{Availabillity, User};
#[derive(Deserialize)]
pub struct AvailabillityForm {

View File

@ -5,11 +5,14 @@ use chrono::{NaiveDate, Utc};
use serde::Deserialize;
use sqlx::PgPool;
use crate::models::{
area::Area, availabillity::Availabillity, event::Event, function, role::Role, user::User
};
use crate::models::{Area, Availabillity, Event, Function, User};
use super::{delete_availabillity::delete_availabillity, get_availabillity_new::get_availabillity_new, post_availabillity::post_availabillity, update_availabillity::{get_update_availabillity, post_update_availabillity}};
use super::{
delete_availabillity::delete_availabillity,
get_availabillity_new::get_availabillity_new,
post_availabillity::post_availabillity,
update_availabillity::{get_update_availabillity, post_update_availabillity},
};
pub fn init(cfg: &mut web::ServiceConfig) {
cfg.service(get_index);
@ -28,16 +31,13 @@ pub struct CalendarQuery {
#[derive(Template)]
#[template(path = "index.html")]
struct CalendarTemplate {
user_role: Role,
current_user_id: i32,
user: User,
date: NaiveDate,
area: Area,
events: Vec<Event>,
availabillities: Vec<Availabillity>,
}
type Function = function::Function;
#[actix_web::get("/")]
async fn get_index(
user: Identity,
@ -60,8 +60,7 @@ async fn get_index(
.unwrap();
let template = CalendarTemplate {
user_role: current_user.role,
current_user_id: current_user.id,
user: current_user,
date,
area,
events,

View File

@ -5,14 +5,14 @@ use askama_actix::TemplateToResponse;
use chrono::{NaiveDate, NaiveTime};
use sqlx::PgPool;
use crate::{calendar::post_availabillity::AvailabillityForm, models::{availabillity::Availabillity, role::Role, user::User}};
use crate::{calendar::post_availabillity::AvailabillityForm, models::{Availabillity, User}};
use super::delete_availabillity::AvailabillityPath;
#[derive(Template)]
#[template(path = "availabillity_edit.html")]
pub struct AvailabillityEditTemplate {
user_role: Role,
user: User,
date: NaiveDate,
id: i32,
start_time: String,
@ -50,7 +50,7 @@ pub async fn get_update_availabillity(
let comment = availabillity.comment.unwrap_or(String::new());
let template = AvailabillityEditTemplate {
user_role: current_user.role,
user: current_user,
date: availabillity.date,
id: path.id,
start_time,
@ -73,10 +73,6 @@ pub async fn post_update_availabillity(
path: web::Path<AvailabillityPath>,
form: web::Form<AvailabillityForm>
) -> impl Responder {
let current_user = User::read_by_id(pool.as_ref(), user.id().unwrap().parse().unwrap())
.await
.unwrap();
if let Ok(mut availabillity) = Availabillity::read_by_id(pool.get_ref(), path.id).await {
if availabillity.user_id == user.id().unwrap().parse::<i32>().unwrap() {
let mut has_changed = false;

View File

@ -1,5 +1,5 @@
use chrono::{NaiveDate, NaiveTime};
use sqlx::{query, query_as, PgPool};
use sqlx::{query, PgPool};
pub struct Event {
pub id: i32,

View File

@ -1,9 +1,17 @@
pub mod role;
pub mod function;
pub mod user;
pub mod event;
pub mod area;
pub mod vehicle;
pub mod availabillity;
pub mod assignement;
pub mod location;
mod area;
mod assignement;
mod availabillity;
mod event;
mod function;
mod location;
mod role;
mod user;
mod vehicle;
pub use area::Area;
pub use availabillity::Availabillity;
pub use event::Event;
pub use function::Function;
pub use location::Location;
pub use role::Role;
pub use user::User;

View File

@ -1,4 +1,4 @@
#[derive(sqlx::Type, Debug, Clone)]
#[derive(sqlx::Type, Debug, Clone, PartialEq)]
#[sqlx(type_name = "role", rename_all = "lowercase")]
pub enum Role {
Staff = 1,

View File

@ -1,7 +1,7 @@
use chrono::{DateTime, Utc};
use sqlx::PgPool;
use super::{function::Function, role::Role};
use super::{Function, Role};
#[derive(Clone)]
pub struct User {

View File

@ -98,7 +98,7 @@
{{ availabillity.comment.as_deref().unwrap_or("") }}
</td>
<td>
{% if availabillity.user_id == current_user_id %}
{% if availabillity.user_id == user.id %}
<div class="buttons is-right">
<a class="button is-link" href="/availabillity/edit/{{ availabillity.id }}">Bearbeiten</a>
<button class="button is-danger" name="delete-availabillity">Löschen</button>

View File

@ -20,7 +20,7 @@
Kalender
</a>
{% match user_role %}
{% match user.role %}
{% when AreaManager %}
<a class="navbar-item">
Planung