diff --git a/Dockerfile b/Dockerfile index 0d762f9b..c9517b64 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM node:18-alpine AS server-dependencies +FROM node:22-alpine AS server-dependencies RUN apk -U upgrade \ && apk add build-base python3 --no-cache @@ -7,36 +7,35 @@ WORKDIR /app COPY server/package.json server/package-lock.json server/requirements.txt ./ -RUN npm install -g pnpm@latest-10 \ - && pnpm install -P +RUN npm install npm --global \ + && npm install --omit=dev -FROM node:lts AS client +FROM node:22 AS client WORKDIR /app COPY client . -RUN npm install -g pnpm@latest-10 \ - && pnpm install -P +RUN npm install npm --global \ + && npm install --omit=dev -RUN DISABLE_ESLINT_PLUGIN=true pnpm run build +RUN DISABLE_ESLINT_PLUGIN=true npm run build -FROM node:18-alpine +FROM node:22-alpine RUN apk -U upgrade \ && apk add bash python3 --no-cache \ - && npm install -g pnpm@latest-10 + && npm install npm --global USER node WORKDIR /app COPY --chown=node:node server . -RUN wget -qO- https://astral.sh/uv/install.sh | sh \ - && /home/node/.local/bin/uv venv \ - && /home/node/.local/bin/uv pip install -r requirements.txt --no-cache-dir \ +RUN python3 -m venv .venv \ + && .venv/bin/pip3 install -r requirements.txt --no-cache-dir \ && mv .env.sample .env \ - && pnpm config set update-notifier false + && npm config set update-notifier false COPY --from=server-dependencies --chown=node:node /app/node_modules node_modules diff --git a/client/src/models/Card.js b/client/src/models/Card.js index 1c80d241..669d6255 100755 --- a/client/src/models/Card.js +++ b/client/src/models/Card.js @@ -470,10 +470,6 @@ export default class extends BaseModel { }); } - getTaskListsModelArray() { - return this.getTaskListsQuerySet().toModelArray(); - } - getShownOnFrontOfCardTaskListsModelArray() { return this.getTaskListsQuerySet() .toModelArray() diff --git a/client/src/models/List.js b/client/src/models/List.js index e198af7c..8f9c6c6e 100755 --- a/client/src/models/List.js +++ b/client/src/models/List.js @@ -280,14 +280,20 @@ export default class extends BaseModel { if (filterUserIds.length > 0) { cardModels = cardModels.filter((cardModel) => { const users = cardModel.users.toRefArray(); - cardModel.getTaskListsModelArray().forEach((taskListModel) => { - taskListModel.getTasksModelArray().forEach((taskModel) => { - if (filterUserIds.includes(taskModel.assigneeUserId)) { - users.push(taskModel.user); - } - }); - }); - return users.some((user) => filterUserIds.includes(user.id)); + + if (users.some((user) => filterUserIds.includes(user.id))) { + return true; + } + + return cardModel + .getTaskListsQuerySet() + .toModelArray() + .some((taskListModel) => + taskListModel + .getTasksQuerySet() + .toRefArray() + .some((task) => filterUserIds.includes(task.assigneeUserId)), + ); }); } diff --git a/client/src/models/TaskList.js b/client/src/models/TaskList.js index a2069b08..56e02a8c 100755 --- a/client/src/models/TaskList.js +++ b/client/src/models/TaskList.js @@ -100,10 +100,6 @@ export default class extends BaseModel { return this.tasks.orderBy(['position', 'id.length', 'id']); } - getTasksModelArray() { - return this.getTasksQuerySet().toModelArray(); - } - duplicate(id, data, rootId) { if (rootId === undefined) { rootId = id; // eslint-disable-line no-param-reassign diff --git a/server/api/hooks/query-methods/models/Card.js b/server/api/hooks/query-methods/models/Card.js index 9bf227e9..7e47f8c0 100644 --- a/server/api/hooks/query-methods/models/Card.js +++ b/server/api/hooks/query-methods/models/Card.js @@ -29,6 +29,8 @@ const getIdsByEndlessListId = async ( if (filterUserIds) { query += ' JOIN card_membership ON card.id = card_membership.card_id'; + query += ' JOIN task_list ON card.id = task_list.card_id'; + query += ' JOIN task ON task_list.id = task.task_list_id'; } if (filterLabelIds) { @@ -84,6 +86,7 @@ const getIdsByEndlessListId = async ( }); query += ` AND card_membership.user_id IN (${inValues.join(', ')})`; + query += ` AND task.assignee_user_id IN (${inValues.join(', ')})`; } if (filterLabelIds) {