|
17 | 17 | const { ArgumentError } = require('./exceptions');
|
18 | 18 | const { Task } = require('./session');
|
19 | 19 |
|
20 |
| - function attachUsers(task, users) { |
21 |
| - if (task.assignee !== null) { |
22 |
| - [task.assignee] = users.filter((user) => user.id === task.assignee); |
23 |
| - } |
24 |
| - |
25 |
| - for (const segment of task.segments) { |
26 |
| - for (const job of segment.jobs) { |
27 |
| - if (job.assignee !== null) { |
28 |
| - [job.assignee] = users.filter((user) => user.id === job.assignee); |
29 |
| - } |
30 |
| - } |
31 |
| - } |
32 |
| - |
33 |
| - if (task.owner !== null) { |
34 |
| - [task.owner] = users.filter((user) => user.id === task.owner); |
35 |
| - } |
36 |
| - |
37 |
| - return task; |
38 |
| - } |
39 |
| - |
40 | 20 | function implementAPI(cvat) {
|
41 | 21 | cvat.plugins.list.implementation = PluginRegistry.list;
|
42 | 22 | cvat.plugins.register.implementation = PluginRegistry.register.bind(cvat);
|
|
122 | 102 |
|
123 | 103 | cvat.users.get.implementation = async (filter) => {
|
124 | 104 | checkFilter(filter, {
|
| 105 | + id: isInteger, |
125 | 106 | self: isBoolean,
|
| 107 | + search: isString, |
| 108 | + limit: isInteger, |
126 | 109 | });
|
127 | 110 |
|
128 | 111 | let users = null;
|
129 | 112 | if ('self' in filter && filter.self) {
|
130 | 113 | users = await serverProxy.users.getSelf();
|
131 | 114 | users = [users];
|
132 | 115 | } else {
|
133 |
| - users = await serverProxy.users.getUsers(); |
| 116 | + const searchParams = {}; |
| 117 | + for (const key in filter) { |
| 118 | + if (filter[key] && key !== 'self') { |
| 119 | + searchParams[key] = filter[key]; |
| 120 | + } |
| 121 | + } |
| 122 | + users = await serverProxy.users.getUsers(new URLSearchParams(searchParams).toString()); |
134 | 123 | }
|
135 | 124 |
|
136 | 125 | users = users.map((user) => new User(user));
|
|
163 | 152 |
|
164 | 153 | // If task was found by its id, then create task instance and get Job instance from it
|
165 | 154 | if (tasks !== null && tasks.length) {
|
166 |
| - const users = (await serverProxy.users.getUsers()).map((userData) => new User(userData)); |
167 |
| - const task = new Task(attachUsers(tasks[0], users)); |
| 155 | + const task = new Task(tasks[0]); |
168 | 156 |
|
169 | 157 | return filter.jobID ? task.jobs.filter((job) => job.id === filter.jobID) : task.jobs;
|
170 | 158 | }
|
|
203 | 191 | }
|
204 | 192 | }
|
205 | 193 |
|
206 |
| - const users = (await serverProxy.users.getUsers()).map((userData) => new User(userData)); |
207 | 194 | const tasksData = await serverProxy.tasks.getTasks(searchParams.toString());
|
208 |
| - const tasks = tasksData.map((task) => attachUsers(task, users)).map((task) => new Task(task)); |
| 195 | + const tasks = tasksData.map((task) => new Task(task)); |
209 | 196 |
|
210 | 197 | tasks.count = tasksData.count;
|
211 | 198 |
|
|
0 commit comments