mirror of
https://github.com/plankanban/planka.git
synced 2025-07-18 20:59:44 +02:00
fix: Add server-side filtering, cleanup
This commit is contained in:
parent
a5b3b4ad5b
commit
98eeb80a19
5 changed files with 29 additions and 29 deletions
25
Dockerfile
25
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
|
||||
|
||||
|
|
|
@ -470,10 +470,6 @@ export default class extends BaseModel {
|
|||
});
|
||||
}
|
||||
|
||||
getTaskListsModelArray() {
|
||||
return this.getTaskListsQuerySet().toModelArray();
|
||||
}
|
||||
|
||||
getShownOnFrontOfCardTaskListsModelArray() {
|
||||
return this.getTaskListsQuerySet()
|
||||
.toModelArray()
|
||||
|
|
|
@ -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)),
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue