mirror of
https://github.com/rommapp/romm.git
synced 2026-03-03 02:27:00 +00:00
loosen rules around fetch matching screenshots
This commit is contained in:
@@ -265,7 +265,7 @@ async def add_save(
|
||||
rom_id=rom.id,
|
||||
)
|
||||
db_screenshot = db_screenshot_handler.get_screenshot(
|
||||
filename=screenshotFile.filename,
|
||||
file_name=screenshotFile.filename,
|
||||
rom_id=rom.id,
|
||||
user_id=request.user.id,
|
||||
)
|
||||
@@ -481,7 +481,7 @@ async def update_save(request: Request, id: int) -> SaveSchema:
|
||||
rom_id=db_save.rom.id,
|
||||
)
|
||||
db_screenshot = db_screenshot_handler.get_screenshot(
|
||||
filename=screenshotFile.filename,
|
||||
file_name=screenshotFile.filename,
|
||||
rom_id=db_save.rom.id,
|
||||
user_id=request.user.id,
|
||||
)
|
||||
|
||||
@@ -67,7 +67,7 @@ async def add_screenshot(
|
||||
rom_id=rom.id,
|
||||
)
|
||||
db_screenshot = db_screenshot_handler.get_screenshot(
|
||||
filename=screenshotFile.filename,
|
||||
file_name=screenshotFile.filename,
|
||||
rom_id=rom.id,
|
||||
user_id=current_user.id,
|
||||
)
|
||||
|
||||
@@ -111,7 +111,7 @@ async def add_state(
|
||||
rom_id=rom.id,
|
||||
)
|
||||
db_screenshot = db_screenshot_handler.get_screenshot(
|
||||
filename=screenshotFile.filename,
|
||||
file_name=screenshotFile.filename,
|
||||
rom_id=rom.id,
|
||||
user_id=request.user.id,
|
||||
)
|
||||
@@ -221,7 +221,7 @@ async def update_state(request: Request, id: int) -> StateSchema:
|
||||
rom_id=db_state.rom.id,
|
||||
)
|
||||
db_screenshot = db_screenshot_handler.get_screenshot(
|
||||
filename=screenshotFile.filename,
|
||||
file_name=screenshotFile.filename,
|
||||
rom_id=db_state.rom.id,
|
||||
user_id=request.user.id,
|
||||
)
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
from collections.abc import Sequence
|
||||
from functools import partial
|
||||
|
||||
from sqlalchemy import delete, select, update
|
||||
import pydash
|
||||
from sqlalchemy import delete, or_, select, update
|
||||
from sqlalchemy.orm import Session
|
||||
from sqlalchemy.sql import Delete, Select, Update
|
||||
|
||||
@@ -16,27 +17,32 @@ class DBScreenshotsHandler(DBBaseHandler):
|
||||
self,
|
||||
query: QueryT,
|
||||
*,
|
||||
rom_id: int,
|
||||
user_id: int,
|
||||
filenames: Sequence[str] = (),
|
||||
filenames_no_ext: Sequence[str] = (),
|
||||
rom_ids: Sequence[int] = (),
|
||||
user_ids: Sequence[int] = (),
|
||||
exclude_filenames: Sequence[str] = (),
|
||||
exclude_filenames_no_ext: Sequence[str] = (),
|
||||
) -> QueryT:
|
||||
query = query.filter(
|
||||
Screenshot.rom_id == rom_id,
|
||||
Screenshot.user_id == user_id,
|
||||
)
|
||||
|
||||
if filenames:
|
||||
query = query.filter(Screenshot.file_name.in_(filenames))
|
||||
if filenames_no_ext:
|
||||
query = query.filter(Screenshot.file_name_no_ext.in_(filenames_no_ext))
|
||||
if rom_ids:
|
||||
query = query.filter(Screenshot.rom_id.in_(rom_ids))
|
||||
if user_ids:
|
||||
query = query.filter(Screenshot.user_id.in_(user_ids))
|
||||
if exclude_filenames:
|
||||
query = query.filter(Screenshot.file_name.not_in(exclude_filenames))
|
||||
if exclude_filenames_no_ext:
|
||||
query = query.filter(
|
||||
Screenshot.file_name_no_ext.not_in(exclude_filenames_no_ext)
|
||||
or_(
|
||||
Screenshot.file_name.in_(filenames),
|
||||
Screenshot.file_name_no_ext.in_(filenames),
|
||||
)
|
||||
)
|
||||
|
||||
if exclude_filenames:
|
||||
query = query.filter(
|
||||
or_(
|
||||
Screenshot.file_name.not_in(filenames),
|
||||
Screenshot.file_name_no_ext.not_in(filenames),
|
||||
)
|
||||
)
|
||||
|
||||
return query
|
||||
|
||||
@begin_session
|
||||
@@ -51,18 +57,17 @@ class DBScreenshotsHandler(DBBaseHandler):
|
||||
def get_screenshot(
|
||||
self,
|
||||
*,
|
||||
filename: str | None = None,
|
||||
filename_no_ext: str | None = None,
|
||||
rom_id: int | None = None,
|
||||
user_id: int | None = None,
|
||||
rom_id: int,
|
||||
user_id: int,
|
||||
file_name: str,
|
||||
file_name_no_ext: str | None = None,
|
||||
session: Session = None, # type: ignore
|
||||
) -> Screenshot | None:
|
||||
query = self.filter(
|
||||
select(Screenshot),
|
||||
filenames=[filename] if filename is not None else (),
|
||||
filenames_no_ext=[filename_no_ext] if filename_no_ext is not None else (),
|
||||
rom_ids=[rom_id] if rom_id is not None else (),
|
||||
user_ids=[user_id] if user_id is not None else (),
|
||||
rom_id=rom_id,
|
||||
user_id=user_id,
|
||||
filenames=pydash.compact([file_name, file_name_no_ext]),
|
||||
)
|
||||
return session.scalars(query.limit(1)).first()
|
||||
|
||||
@@ -111,8 +116,8 @@ class DBScreenshotsHandler(DBBaseHandler):
|
||||
) -> Sequence[Screenshot]:
|
||||
query_fn = partial(
|
||||
self.filter,
|
||||
rom_ids=[rom_id],
|
||||
user_ids=[user_id],
|
||||
rom_id=rom_id,
|
||||
user_id=user_id,
|
||||
exclude_filenames=screenshots_to_keep,
|
||||
)
|
||||
|
||||
|
||||
@@ -79,9 +79,10 @@ class Save(RomAsset):
|
||||
from handler.database import db_screenshot_handler
|
||||
|
||||
return db_screenshot_handler.get_screenshot(
|
||||
filename_no_ext=self.file_name, # Match state filename against screenshot filename stem
|
||||
rom_id=self.rom_id,
|
||||
user_id=self.user_id,
|
||||
file_name=self.file_name, # Match state filename against screenshot filename stem
|
||||
file_name_no_ext=self.file_name_no_ext,
|
||||
)
|
||||
|
||||
|
||||
@@ -99,7 +100,8 @@ class State(RomAsset):
|
||||
from handler.database import db_screenshot_handler
|
||||
|
||||
return db_screenshot_handler.get_screenshot(
|
||||
filename_no_ext=self.file_name, # Match state filename against screenshot filename stem
|
||||
rom_id=self.rom_id,
|
||||
user_id=self.user_id,
|
||||
file_name=self.file_name, # Match state filename against screenshot filename stem
|
||||
file_name_no_ext=self.file_name_no_ext,
|
||||
)
|
||||
|
||||
@@ -84,12 +84,7 @@ function handleDelete(event: Event) {
|
||||
@click="handleClick"
|
||||
>
|
||||
<v-card-text class="pa-2">
|
||||
<!-- Screenshot for states -->
|
||||
<v-row
|
||||
v-if="type === 'state' && isState(asset)"
|
||||
no-gutters
|
||||
class="bg-surface"
|
||||
>
|
||||
<v-row v-if="asset.screenshot" no-gutters class="bg-surface">
|
||||
<v-col cols="12">
|
||||
<v-img
|
||||
rounded
|
||||
|
||||
@@ -36,7 +36,7 @@ onMounted(async () => {
|
||||
romId.value = response.data.id;
|
||||
})
|
||||
.catch((error) => {
|
||||
console.error("Error fetching ROM by metadata provider:", error);
|
||||
console.warn("Error fetching ROM by metadata provider:", error);
|
||||
// Keep romId.value as null to fall back to IGDB link
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user