diff options
author | metamuffin <metamuffin@disroot.org> | 2023-08-05 12:32:35 +0200 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2023-08-05 12:32:35 +0200 |
commit | ba3dedfaa6fee280761282f50fdee92b65cf0bfd (patch) | |
tree | 2798c163a2ff3fd9c11ca68dab9e6ca2f9a73cf9 /server | |
parent | abb8e4a10f0ac0a8c0a652efe8b0efc0da59c46e (diff) | |
download | jellything-ba3dedfaa6fee280761282f50fdee92b65cf0bfd.tar jellything-ba3dedfaa6fee280761282f50fdee92b65cf0bfd.tar.bz2 jellything-ba3dedfaa6fee280761282f50fdee92b65cf0bfd.tar.zst |
ability to override id from json and import
Diffstat (limited to 'server')
-rw-r--r-- | server/src/import.rs | 18 | ||||
-rw-r--r-- | server/src/routes/ui/account/admin.rs | 7 |
2 files changed, 16 insertions, 9 deletions
diff --git a/server/src/import.rs b/server/src/import.rs index 3b45f14..d72690c 100644 --- a/server/src/import.rs +++ b/server/src/import.rs @@ -100,14 +100,15 @@ pub async fn import_path( info!("loading {path:?}"); let datafile = File::open(path.clone()).context("cant load metadata")?; let mut data: Node = serde_json::from_reader(datafile).context("invalid metadata")?; - let identifier = path - .file_name() - .unwrap() - .to_str() - .unwrap() - .strip_suffix(".jelly") - .unwrap() - .to_string(); + let identifier = data.private.id.clone().unwrap_or_else(|| { + path.file_name() + .unwrap() + .to_str() + .unwrap() + .strip_suffix(".jelly") + .unwrap() + .to_string() + }); if let Some(io) = data.private.import.take() { let session = fed @@ -152,6 +153,7 @@ async fn import_remote( backdrop: Some(AssetLocation::Cache(backdrop)), poster: Some(AssetLocation::Cache(poster)), import: None, + id: None, source: Some(MediaSource::Remote { host: opts.host.clone(), remote_id: opts.id.clone(), diff --git a/server/src/routes/ui/account/admin.rs b/server/src/routes/ui/account/admin.rs index d0ad433..f1520b7 100644 --- a/server/src/routes/ui/account/admin.rs +++ b/server/src/routes/ui/account/admin.rs @@ -17,6 +17,7 @@ use crate::{ use anyhow::anyhow; use rand::Rng; use rocket::{form::Form, get, post, FromForm, State}; +use std::time::Instant; #[get("/account/admin/dashboard")] pub fn r_account_admin_dashboard( @@ -141,9 +142,13 @@ pub async fn r_account_admin_import( if !session.user.admin { Err(anyhow!("you not admin"))? } + let t = Instant::now(); let r = import(&database, &federation).await; admin_dashboard( &database, - Some(r.map_err(|e| e.into()).map(|_| "Import successful".into())), + Some( + r.map_err(|e| e.into()) + .map(|_| format!("Import successful; took {:?}", t.elapsed())), + ), ) } |