Verbeter grafische kwaliteit van kleurplaten (v0.4.67-beta) #5
4 changed files with 16 additions and 5 deletions
2
VERSION
2
VERSION
|
|
@ -1 +1 @@
|
|||
0.3.98-beta
|
||||
0.3.99-beta
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
"use strict";
|
||||
/* version — shown until /api/version resolves (or if the fetch fails, e.g. offline).
|
||||
Kept in sync by hand with the VERSION file at the repo root on every release. */
|
||||
const VERSION = "0.3.98-beta";
|
||||
const VERSION = "0.3.99-beta";
|
||||
(function(){
|
||||
const tag = document.getElementById("verTag");
|
||||
tag.textContent = "v"+VERSION;
|
||||
|
|
|
|||
|
|
@ -441,11 +441,15 @@ export default async function api(app) {
|
|||
need(req, reply, PERMISSIONS['users.manage']);
|
||||
// Ouders hebben school_id NULL en vallen daardoor buiten elke schoollijst;
|
||||
// een school ziet wél de ouders die aan haar eigen leerlingen gekoppeld zijn.
|
||||
// Postgres eist bij SELECT DISTINCT dat elke ORDER BY-expressie letterlijk
|
||||
// in de select-lijst staat - lower(p.username) alleen via p.* volstond niet
|
||||
// (gaf "for SELECT DISTINCT, ORDER BY expressions must appear in select
|
||||
// list"), dus expliciet als extra kolom toevoegen.
|
||||
const linkedParents = async (schoolId, extra = '', params = []) => (await pool.query(
|
||||
`SELECT DISTINCT p.* FROM users p
|
||||
`SELECT DISTINCT p.*, lower(p.username) AS sort_key FROM users p
|
||||
JOIN parent_children pc ON pc.parent_id = p.id
|
||||
JOIN users k ON k.id = pc.pupil_id
|
||||
WHERE k.school_id = $1 ${extra} ORDER BY lower(p.username)`,
|
||||
WHERE k.school_id = $1 ${extra} ORDER BY sort_key`,
|
||||
[schoolId, ...params])).rows;
|
||||
let rows;
|
||||
if (req.user.allRoles.includes('super')) {
|
||||
|
|
|
|||
|
|
@ -289,7 +289,7 @@ test('afwijzen verwijdert alleen het verzoek; andere school mag niet afhandelen'
|
|||
});
|
||||
|
||||
test('schoolbeheerder ziet gekoppelde ouders (met kindernamen) in de gebruikerslijst', async () => {
|
||||
const { app } = await makeApp({ user: admin, respond: (sql) => {
|
||||
const { app, calls } = await makeApp({ user: admin, respond: (sql) => {
|
||||
if (sql.startsWith('SELECT * FROM users WHERE school_id')) return { rows: [
|
||||
{ id: 50, username: 'lena', role: 'pupil', school_id: 2, class_id: 5 },
|
||||
] };
|
||||
|
|
@ -306,6 +306,13 @@ test('schoolbeheerder ziet gekoppelde ouders (met kindernamen) in de gebruikersl
|
|||
const p = res.json().users.find((u) => u.role === 'parent');
|
||||
assert.ok(p, 'ouder hoort in de schoollijst te staan');
|
||||
assert.deepEqual(p.childNames, ['Lena']);
|
||||
// regressie: Postgres weigert "SELECT DISTINCT ... ORDER BY lower(p.username)"
|
||||
// omdat die expressie niet letterlijk in de select-lijst staat (was stuk in
|
||||
// productie voor elke school-gescopede gebruikerslijst) - de sort-expressie
|
||||
// moet dus als kolom in de SELECT staan, niet alleen in de ORDER BY.
|
||||
const linkedParentsCall = calls.find((c) => c.sql.includes('JOIN parent_children pc ON pc.parent_id = p.id'));
|
||||
assert.match(linkedParentsCall.sql, /SELECT DISTINCT p\.\*, lower\(p\.username\) AS sort_key/);
|
||||
assert.match(linkedParentsCall.sql, /ORDER BY sort_key/);
|
||||
await app.close();
|
||||
});
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue