diff --git a/backend/projects/projects.py b/backend/projects/projects.py index 0aecae4..ee67682 100644 --- a/backend/projects/projects.py +++ b/backend/projects/projects.py @@ -40,7 +40,8 @@ def __init__(self): self.sorting_method = Project.upload_date self.search = "" - self.projects = self.active_projects.order_by(desc(self.sorting_method)) + self.projects_filter = self.active_projects_filter + self.projects = select(Project).where(self.projects_filter).order_by(desc(self.sorting_method)) with dep.Session() as session: result = session.scalars(self.projects).all() @@ -62,7 +63,8 @@ def _filter(self, search: str | None): if search is None or search == "": self.search = "" - self.projects = self.active_projects.order_by(desc(self.sorting_method)) + self.projects_filter = self.active_projects_filter + self.projects = select(Project).where(self.projects_filter).order_by(desc(self.sorting_method)) return def f(item: str): @@ -75,8 +77,8 @@ def f(item: str): search = search.split(",") search_query = [Project.search_body.icontains(f(item)) for item in search] - self.projects = self.active_projects.filter(and_(*search_query)) - self.projects = self.projects.order_by(desc(self.sorting_method)) + self.projects_filter = and_(self.active_projects_filter, *search_query) + self.projects = select(Project).where(self.projects_filter).order_by(desc(self.sorting_method)) def select_sorting_method(self, method: str): available = {"upload_date", "preview_hash"} @@ -106,7 +108,7 @@ def get_page(self, ppg: int, page: int = 1, search: str = None): def len(self): with dep.Session() as session: - stmt = select(func.count(Project.lid)).where(self.active_projects_filter) + stmt = select(func.count(Project.lid)).where(self.projects_filter) return session.scalar(stmt) def renew(self): diff --git a/routers/main.py b/routers/main.py index ff5f790..9f98e55 100644 --- a/routers/main.py +++ b/routers/main.py @@ -62,7 +62,7 @@ async def index(request: Request, page: int = 1, search: str = ""): displayed_projects = projects.get_page(PPG, page=page, search=search_query) - total_pages = (len(displayed_projects) + PPG - 1) // PPG + total_pages = (projects.len() + PPG - 1) // PPG visible_pages = get_visible_pages(page, total_pages) log.debug(f"Loading time: {datetime.now() - timer}")