Verbeter grafische kwaliteit van kleurplaten (v0.4.67-beta) #5

Open
bes-r wants to merge 208 commits from bes-r/coloring-quality-v0.4.67 into main AGit
4 changed files with 16 additions and 5 deletions
Showing only changes of commit be8ecc5378 - Show all commits

View file

@ -1 +1 @@
0.3.98-beta
0.3.99-beta

View file

@ -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;

View file

@ -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')) {

View file

@ -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();
});