forked from Ruderverein-Donau-Linz/rowt
Merge pull request 'show all activities for admin; Fixes #984' (#1000) from show-all-activities into main
Reviewed-on: Ruderverein-Donau-Linz/rowt#1000
This commit is contained in:
commit
0c5812f725
@ -1,7 +1,7 @@
|
|||||||
use std::ops::DerefMut;
|
use std::ops::DerefMut;
|
||||||
|
|
||||||
use super::{role::Role, user::User};
|
use super::{role::Role, user::User};
|
||||||
use chrono::NaiveDateTime;
|
use chrono::{DateTime, Local, NaiveDateTime, TimeZone, Utc};
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
use sqlx::{FromRow, Sqlite, SqlitePool, Transaction};
|
use sqlx::{FromRow, Sqlite, SqlitePool, Transaction};
|
||||||
|
|
||||||
@ -110,4 +110,30 @@ ORDER BY created_at DESC;
|
|||||||
.await
|
.await
|
||||||
.unwrap()
|
.unwrap()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async fn last(db: &SqlitePool) -> Vec<Self> {
|
||||||
|
sqlx::query_as!(
|
||||||
|
Self,
|
||||||
|
"
|
||||||
|
SELECT id, created_at, text, relevant_for, keep_until FROM activity
|
||||||
|
ORDER BY id DESC
|
||||||
|
LIMIT 1000
|
||||||
|
"
|
||||||
|
)
|
||||||
|
.fetch_all(db)
|
||||||
|
.await
|
||||||
|
.unwrap()
|
||||||
|
}
|
||||||
|
|
||||||
|
pub async fn show(db: &SqlitePool) -> String {
|
||||||
|
let mut ret = String::new();
|
||||||
|
|
||||||
|
for log in Self::last(db).await {
|
||||||
|
let utc_time: DateTime<Utc> = Utc::from_utc_datetime(&Utc, &log.created_at);
|
||||||
|
let local_time = utc_time.with_timezone(&Local);
|
||||||
|
ret.push_str(&format!("- {local_time}: {}\n", log.text));
|
||||||
|
}
|
||||||
|
|
||||||
|
ret
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
use csv::ReaderBuilder;
|
use csv::ReaderBuilder;
|
||||||
use rocket::{FromForm, Route, State, form::Form, get, post, routes};
|
use rocket::{form::Form, get, post, routes, FromForm, Route, State};
|
||||||
use rocket_dyn_templates::{Template, context};
|
use rocket_dyn_templates::{context, Template};
|
||||||
use sqlx::SqlitePool;
|
use sqlx::SqlitePool;
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
model::{log::Log, role::Role, user::AdminUser},
|
model::{activity::Activity, log::Log, role::Role, user::AdminUser},
|
||||||
tera::Config,
|
tera::Config,
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -25,11 +25,16 @@ async fn rss(db: &State<SqlitePool>, key: &str, config: &State<Config>) -> Strin
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[get("/rss", rank = 2)]
|
#[get("/rss/old", rank = 2)]
|
||||||
async fn show_rss(db: &State<SqlitePool>, _admin: AdminUser) -> String {
|
async fn show_rss(db: &State<SqlitePool>, _admin: AdminUser) -> String {
|
||||||
Log::show(db).await
|
Log::show(db).await
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[get("/rss", rank = 2)]
|
||||||
|
async fn show_activities(db: &State<SqlitePool>, _admin: AdminUser) -> String {
|
||||||
|
Activity::show(db).await
|
||||||
|
}
|
||||||
|
|
||||||
#[get("/list")]
|
#[get("/list")]
|
||||||
async fn show_list(_admin: AdminUser) -> Template {
|
async fn show_list(_admin: AdminUser) -> Template {
|
||||||
Template::render("admin/list/index", context!())
|
Template::render("admin/list/index", context!())
|
||||||
@ -83,6 +88,12 @@ pub fn routes() -> Vec<Route> {
|
|||||||
ret.append(&mut mail::routes());
|
ret.append(&mut mail::routes());
|
||||||
ret.append(&mut event::routes());
|
ret.append(&mut event::routes());
|
||||||
ret.append(&mut role::routes());
|
ret.append(&mut role::routes());
|
||||||
ret.append(&mut routes![rss, show_rss, show_list, list]);
|
ret.append(&mut routes![
|
||||||
|
rss,
|
||||||
|
show_rss,
|
||||||
|
show_activities,
|
||||||
|
show_list,
|
||||||
|
list
|
||||||
|
]);
|
||||||
ret
|
ret
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user