[Bug 42503] New: Optimize retrieval and display of the holds queue
https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=42503 Bug ID: 42503 Summary: Optimize retrieval and display of the holds queue Initiative type: --- Sponsorship --- status: Product: Koha Version: Main Hardware: All OS: All Status: NEW Severity: enhancement Priority: P5 - low Component: Hold requests Assignee: koha-bugs@lists.koha-community.org Reporter: andrew@bywatersolutions.com QA Contact: testopia@bugs.koha-community.org CC: gmcharlt@gmail.com, lisette@bywatersolutions.com, tomascohen@gmail.com The holds queue page (view_holdsqueue.pl) should be reworked to fetch data via API to improve performance for large systems. -- You are receiving this mail because: You are watching all bug changes. You are the assignee for the bug.
https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=42503 Tomás Cohen Arazi (tcohen) <tomascohen@gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Assignee|koha-bugs@lists.koha-commun |tomascohen@gmail.com |ity.org | Status|NEW |ASSIGNED -- You are receiving this mail because: You are watching all bug changes. You are the assignee for the bug.
https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=42503 Tomás Cohen Arazi (tcohen) <tomascohen@gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Patch complexity|--- |Medium patch Status|ASSIGNED |Needs Signoff -- You are receiving this mail because: You are watching all bug changes.
https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=42503 --- Comment #1 from Tomás Cohen Arazi (tcohen) <tomascohen@gmail.com> --- Created attachment 198918 --> https://bugs.koha-community.org/bugzilla3/attachment.cgi?id=198918&action=edit [DO NOT PUSH] Bug 42503: Sample holds queue population script Usage: $ ktd --shell k$ cd /kohadevbox/koha && perl t/lib/sample_holds_queue.pl Assisted-by: Sonnet 4.6 (Anthropic) -- You are receiving this mail because: You are watching all bug changes.
https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=42503 --- Comment #2 from Tomás Cohen Arazi (tcohen) <tomascohen@gmail.com> --- Created attachment 198919 --> https://bugs.koha-community.org/bugzilla3/attachment.cgi?id=198919&action=edit Bug 42503: Add holds queue REST API endpoint Adds GET /api/v1/holds/queue backed by Koha::Hold::HoldsQueueItems (the tmp_holdsqueue table populated by the holds queue cron job). New files: - Koha/REST/V1/Holds/Queue.pm: controller with list method - api/v1/swagger/paths/holds_queue.yaml: path spec - api/v1/swagger/definitions/holds_queue_item.yaml: definition Changes: - Koha/Hold/HoldsQueueItem.pm: adds to_api_mapping - api/v1/swagger/swagger.yaml: registers path and definition Supports filtering by holding_library_id, pickup_library_id, biblio_id, item_id, patron_id, item_level. Embeds: biblio, item, item+strings, patron, patron.notice_email_address. Test plan: 1. Apply patch 2. Run: $ ktd --shell k$ prove xt/api.t => SUCCESS: Tests pass! 3. Populate the holds queue: k$ perl misc/cronjobs/holds/build_holdsqueue.pl 4. Verify the endpoint: GET /api/v1/holds/queue x-koha-embed: biblio,item+strings,patron => SUCCESS: Returns holds queue items with embedded data 5. Sign off :-D Assisted-by: Sonnet 4.6 (Anthropic) -- You are receiving this mail because: You are watching all bug changes.
https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=42503 --- Comment #3 from Tomás Cohen Arazi (tcohen) <tomascohen@gmail.com> --- Created attachment 198920 --> https://bugs.koha-community.org/bugzilla3/attachment.cgi?id=198920&action=edit Bug 42503: Convert holds queue page to API-driven The holds queue page (circ/view_holdsqueue.pl) loaded all queue items at once server-side via GetHoldsQueueItems(), which is slow for large systems. This patch converts it to use the new /api/v1/holds/queue endpoint with DataTables for paginated, server-side rendering. Changes: - circ/view_holdsqueue.pl: stripped to auth + template params only. Data loading removed entirely. - view_holdsqueue.tt: replaced server-rendered FOREACH loop with a kohaTable instance calling /api/v1/holds/queue with dynamic filters via additional_filters (ILL table pattern). The sidebar form redraws the table without page reload on subsequent filter changes. - Embeds used: biblio, item+strings, patron, patron.notice_email_address - Removed publication details column (available via biblio embed if needed in the future) and patron category column (simplification, can be re-added as patron+strings embed) Test plan: 1. Apply patches (including the [DO NOT PUSH] sample data commit) 2. Populate the holds queue: $ ktd --shell k$ cd /kohadevbox/koha && perl t/lib/sample_holds_queue.pl => SUCCESS: 40 items populated 3. Navigate to Circulation > Holds queue 4. Submit the filter form (select a library or leave as All) => SUCCESS: Table loads data via API with pagination 5. Verify columns: title, author, current library, home library, collection, location, item type, call number, copy number, enumeration, barcode, patron (name+phone+email), send to, date, notes 6. Change library filter in sidebar, click Submit => SUCCESS: Table redraws without page reload 7. Click Clear button => SUCCESS: All filters reset, full results shown 8. Verify sorting works on columns 9. Sign off :-D Assisted-by: Sonnet 4.6 (Anthropic) -- You are receiving this mail because: You are watching all bug changes.
https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=42503 Tomás Cohen Arazi (tcohen) <tomascohen@gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Attachment #198919|0 |1 is obsolete| | -- You are receiving this mail because: You are watching all bug changes.
https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=42503 Tomás Cohen Arazi (tcohen) <tomascohen@gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Attachment #198920|0 |1 is obsolete| | -- You are receiving this mail because: You are watching all bug changes.
https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=42503 --- Comment #4 from Tomás Cohen Arazi (tcohen) <tomascohen@gmail.com> --- Created attachment 198921 --> https://bugs.koha-community.org/bugzilla3/attachment.cgi?id=198921&action=edit Bug 42503: Add holds queue REST API endpoint Adds GET /api/v1/holds/queue backed by Koha::Hold::HoldsQueueItems (the tmp_holdsqueue table populated by the holds queue cron job). New files: - Koha/REST/V1/Holds/Queue.pm: controller with list method - api/v1/swagger/paths/holds_queue.yaml: path spec - api/v1/swagger/definitions/holds_queue_item.yaml: definition Changes: - Koha/Hold/HoldsQueueItem.pm: adds to_api_mapping - api/v1/swagger/swagger.yaml: registers path and definition Supports filtering by holding_library_id, pickup_library_id, biblio_id, item_id, patron_id, item_level. Embeds: biblio, item, item+strings, patron, patron.notice_email_address. Test plan: 1. Apply patch 2. Run: $ ktd --shell k$ prove xt/api.t => SUCCESS: Tests pass! 3. Populate the holds queue: k$ perl misc/cronjobs/holds/build_holdsqueue.pl 4. Verify the endpoint: GET /api/v1/holds/queue x-koha-embed: biblio,item+strings,patron => SUCCESS: Returns holds queue items with embedded data 5. Sign off :-D Assisted-by: Sonnet 4.6 (Anthropic) -- You are receiving this mail because: You are watching all bug changes.
https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=42503 --- Comment #5 from Tomás Cohen Arazi (tcohen) <tomascohen@gmail.com> --- Created attachment 198922 --> https://bugs.koha-community.org/bugzilla3/attachment.cgi?id=198922&action=edit Bug 42503: Convert holds queue page to API-driven The holds queue page (circ/view_holdsqueue.pl) loaded all queue items at once server-side via GetHoldsQueueItems(), which is slow for large systems. This patch converts it to use the new /api/v1/holds/queue endpoint with DataTables for paginated, server-side rendering. Changes: - circ/view_holdsqueue.pl: stripped to auth + template params only. Data loading removed entirely. - view_holdsqueue.tt: replaced server-rendered FOREACH loop with a kohaTable instance calling /api/v1/holds/queue with dynamic filters via additional_filters (ILL table pattern). The sidebar form redraws the table without page reload on subsequent filter changes. - Embeds used: biblio, item+strings, patron, patron.notice_email_address - Removed publication details column (available via biblio embed if needed in the future) and patron category column (simplification, can be re-added as patron+strings embed) Test plan: 1. Apply patches (including the [DO NOT PUSH] sample data commit) 2. Populate the holds queue: $ ktd --shell k$ cd /kohadevbox/koha && perl t/lib/sample_holds_queue.pl => SUCCESS: 40 items populated 3. Navigate to Circulation > Holds queue 4. Submit the filter form (select a library or leave as All) => SUCCESS: Table loads data via API with pagination 5. Verify columns: title, author, current library, home library, collection, location, item type, call number, copy number, enumeration, barcode, patron (name+phone+email), send to, date, notes 6. Change library filter in sidebar, click Submit => SUCCESS: Table redraws without page reload 7. Click Clear button => SUCCESS: All filters reset, full results shown 8. Verify sorting works on columns 9. Sign off :-D Assisted-by: Sonnet 4.6 (Anthropic) -- You are receiving this mail because: You are watching all bug changes.
https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=42503 Tomás Cohen Arazi (tcohen) <tomascohen@gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Summary|Optimize retrieval and |Render the holds queue |display of the holds queue |using the REST API -- You are receiving this mail because: You are watching all bug changes.
https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=42503 Alex Carver [Acerock7] <alex@rcls.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|Needs Signoff |Failed QA CC| |alex@rcls.org --- Comment #6 from Alex Carver [Acerock7] <alex@rcls.org> --- I'm running into trouble at step 4. After populating the holds queue with sample_holds_queue.pl, navigating to the holds queue and submitting the filters form generates a popup error: Something went wrong with loading the table. 404: Not Found. -- You are receiving this mail because: You are watching all bug changes.
https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=42503 --- Comment #7 from Alex Carver [Acerock7] <alex@rcls.org> --- Running yarn build after step four gets me further in the test plan. I am now failing at step 8. Attempting to sort on the following columns generates a 500 error: Publication Details Patron Patron Category -- You are receiving this mail because: You are watching all bug changes.
https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=42503 Tomás Cohen Arazi (tcohen) <tomascohen@gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|Failed QA |Needs Signoff -- You are receiving this mail because: You are watching all bug changes.
https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=42503 Tomás Cohen Arazi (tcohen) <tomascohen@gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Attachment #198918|0 |1 is obsolete| | -- You are receiving this mail because: You are watching all bug changes.
https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=42503 Tomás Cohen Arazi (tcohen) <tomascohen@gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Attachment #198921|0 |1 is obsolete| | -- You are receiving this mail because: You are watching all bug changes.
https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=42503 Tomás Cohen Arazi (tcohen) <tomascohen@gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Attachment #198922|0 |1 is obsolete| | -- You are receiving this mail because: You are watching all bug changes.
https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=42503 --- Comment #8 from Tomás Cohen Arazi (tcohen) <tomascohen@gmail.com> --- Created attachment 199145 --> https://bugs.koha-community.org/bugzilla3/attachment.cgi?id=199145&action=edit [DO NOT PUSH] Bug 42503: Sample holds queue population script Usage: $ ktd --shell k$ cd /kohadevbox/koha && perl t/lib/sample_holds_queue.pl Assisted-by: Sonnet 4.6 (Anthropic) -- You are receiving this mail because: You are watching all bug changes.
https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=42503 --- Comment #9 from Tomás Cohen Arazi (tcohen) <tomascohen@gmail.com> --- Created attachment 199146 --> https://bugs.koha-community.org/bugzilla3/attachment.cgi?id=199146&action=edit Bug 42503: Add holds queue REST API endpoint Adds GET /api/v1/holds/queue backed by Koha::Hold::HoldsQueueItems (the tmp_holdsqueue table populated by the holds queue cron job). Changes: - Koha/REST/V1/Holds/Queue.pm: controller with list method - Koha/Hold/HoldsQueueItem.pm: Koha::Object class with relationship accessors (patron, biblio, item), strings_map, and to_api_mapping - Koha/Hold/HoldsQueueItems.pm: Koha::Objects class with api_query_fixer for biblioitem field resolution - Koha/Schema/Result/TmpHoldsqueue.pm: adds 'patron' relationship alias so patron.* fields are embeddable and sortable - api/v1/swagger/paths/holds_queue.yaml: path spec - api/v1/swagger/definitions/holds_queue_item.yaml: definition Supports filtering by holding_library_id, pickup_library_id, biblio_id, item_id, patron_id, item_level. Embeds: +strings, biblio, item, item+strings, patron, patron+strings, patron.notice_email_address. Sorting on embedded fields (patron.surname, patron.category_id, biblio.publisher) works correctly. Test plan: 1. Apply all patches for this bug 2. Run: $ ktd --shell k$ yarn build ; koha-plack --restart kohadev k$ prove t/db_dependent/api/v1/holds_queue.t => SUCCESS: Tests pass! 3. Populate the holds queue: k$ perl misc/cronjobs/holds/build_holdsqueue.pl 4. Verify the endpoint: GET /api/v1/holds/queue x-koha-embed: biblio,item+strings,patron+strings => SUCCESS: Returns holds queue items with embedded data 5. Sign off :-D Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io> -- You are receiving this mail because: You are watching all bug changes.
https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=42503 --- Comment #10 from Tomás Cohen Arazi (tcohen) <tomascohen@gmail.com> --- Created attachment 199147 --> https://bugs.koha-community.org/bugzilla3/attachment.cgi?id=199147&action=edit Bug 42503: Convert holds queue page to API-driven The holds queue page (circ/view_holdsqueue.pl) loaded all queue items at once server-side via GetHoldsQueueItems(), which is slow for large systems. This patch converts it to use the new /api/v1/holds/queue endpoint with DataTables for paginated, server-side rendering. Changes: - circ/view_holdsqueue.pl: stripped to auth + template params only. Data loading removed entirely. - view_holdsqueue.tt: replaced server-rendered FOREACH loop with a kohaTable instance calling /api/v1/holds/queue with dynamic filters via additional_filters (ILL table pattern). The sidebar form redraws the table without page reload on subsequent filter changes. - Embeds used: biblio, item+strings, patron, patron.notice_email_address - Removed publication details column (available via biblio embed if needed in the future) and patron category column (simplification, can be re-added as patron+strings embed) Test plan: 1. Apply patches (including the [DO NOT PUSH] sample data commit) 2. Populate the holds queue: $ ktd --shell k$ cd /kohadevbox/koha && perl t/lib/sample_holds_queue.pl => SUCCESS: 40 items populated 3. Navigate to Circulation > Holds queue 4. Submit the filter form (select a library or leave as All) => SUCCESS: Table loads data via API with pagination 5. Verify columns: title, author, current library, home library, collection, location, item type, call number, copy number, enumeration, barcode, patron (name+phone+email), send to, date, notes 6. Change library filter in sidebar, click Submit => SUCCESS: Table redraws without page reload 7. Click Clear button => SUCCESS: All filters reset, full results shown 8. Verify sorting works on columns 9. Sign off :-D Assisted-by: Sonnet 4.6 (Anthropic) -- You are receiving this mail because: You are watching all bug changes.
https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=42503 --- Comment #11 from Tomás Cohen Arazi (tcohen) <tomascohen@gmail.com> --- Created attachment 199148 --> https://bugs.koha-community.org/bugzilla3/attachment.cgi?id=199148&action=edit Bug 42503: (follow-up) Cache library names in strings_map The original holds queue page resolved library names using Branches.GetName() per row per field in the template, resulting in individual DB queries for each cell. The initial API implementation replicated this with Koha::Libraries->find() per field. This patch uses the shared 'libraries:name' cache (the same one populated by C4::Biblio::GetAuthorisedValueDesc) so library name resolution is a single DB query regardless of result set size. Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io> -- You are receiving this mail because: You are watching all bug changes.
https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=42503 Tomás Cohen Arazi (tcohen) <tomascohen@gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Blocks| |42607 --- Comment #12 from Tomás Cohen Arazi (tcohen) <tomascohen@gmail.com> --- Hi! (In reply to Alex Carver [Acerock7] from comment #7)
Running yarn build after step four gets me further in the test plan. I am
I amended the test plan to include the missing step. Thanks!
now failing at step 8. Attempting to sort on the following columns generates a 500 error:
Publication Details Patron Patron Category
Solved with the submitted patchset. I also included a nice optimization. Referenced Bugs: https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=42607 [Bug 42607] Holds queue: Remove intermediate filter page now that results are API-driven -- You are receiving this mail because: You are watching all bug changes.
https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=42503 Tomás Cohen Arazi (tcohen) <tomascohen@gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Blocks| |42609 Attachment #199146|0 |1 is obsolete| | Referenced Bugs: https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=42609 [Bug 42609] Koha::Patron->strings_map triggers per-row DB queries for library and category -- You are receiving this mail because: You are watching all bug changes.
https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=42503 Tomás Cohen Arazi (tcohen) <tomascohen@gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Attachment #199147|0 |1 is obsolete| | -- You are receiving this mail because: You are watching all bug changes.
https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=42503 Tomás Cohen Arazi (tcohen) <tomascohen@gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Attachment #199148|0 |1 is obsolete| | -- You are receiving this mail because: You are watching all bug changes.
https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=42503 --- Comment #13 from Tomás Cohen Arazi (tcohen) <tomascohen@gmail.com> --- Created attachment 199160 --> https://bugs.koha-community.org/bugzilla3/attachment.cgi?id=199160&action=edit Bug 42503: Add holds queue REST API endpoint Adds GET /api/v1/holds/queue backed by Koha::Hold::HoldsQueueItems (the tmp_holdsqueue table populated by the holds queue cron job). Changes: - Koha/REST/V1/Holds/Queue.pm: controller with list method - Koha/Hold/HoldsQueueItem.pm: Koha::Object class with relationship accessors (patron, biblio, item), strings_map, and to_api_mapping - Koha/Hold/HoldsQueueItems.pm: Koha::Objects class with api_query_fixer for biblioitem field resolution - Koha/Schema/Result/TmpHoldsqueue.pm: adds 'patron' relationship alias so patron.* fields are embeddable and sortable - api/v1/swagger/paths/holds_queue.yaml: path spec - api/v1/swagger/definitions/holds_queue_item.yaml: definition Supports filtering by holding_library_id, pickup_library_id, biblio_id, item_id, patron_id, item_level. Embeds: +strings, biblio, item, item+strings, patron, patron+strings, patron.notice_email_address. Sorting on embedded fields (patron.surname, patron.category_id, biblio.publisher) works correctly. Test plan: 1. Apply all patches for this bug 2. Run: $ ktd --shell k$ yarn build ; koha-plack --restart kohadev k$ prove t/db_dependent/api/v1/holds_queue.t => SUCCESS: Tests pass! 3. Populate the holds queue: k$ perl misc/cronjobs/holds/build_holdsqueue.pl 4. Verify the endpoint: GET /api/v1/holds/queue x-koha-embed: biblio,item+strings,patron+strings => SUCCESS: Returns holds queue items with embedded data 5. Sign off :-D Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io> -- You are receiving this mail because: You are watching all bug changes.
https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=42503 --- Comment #14 from Tomás Cohen Arazi (tcohen) <tomascohen@gmail.com> --- Created attachment 199161 --> https://bugs.koha-community.org/bugzilla3/attachment.cgi?id=199161&action=edit Bug 42503: Convert holds queue page to API-driven The holds queue page (circ/view_holdsqueue.pl) loaded all queue items at once server-side via GetHoldsQueueItems(), which is slow for large systems. This patch converts it to use the new /api/v1/holds/queue endpoint with DataTables for paginated, server-side rendering. Changes: - circ/view_holdsqueue.pl: stripped to auth + template params only. Data loading removed entirely. - view_holdsqueue.tt: replaced server-rendered FOREACH loop with a kohaTable instance calling /api/v1/holds/queue with dynamic filters via additional_filters (ILL table pattern). The sidebar form redraws the table without page reload on subsequent filter changes. - Embeds used: biblio, item+strings, patron, patron.notice_email_address - Removed publication details column (available via biblio embed if needed in the future) and patron category column (simplification, can be re-added as patron+strings embed) Test plan: 1. Apply patches (including the [DO NOT PUSH] sample data commit) 2. Populate the holds queue: $ ktd --shell k$ cd /kohadevbox/koha && perl t/lib/sample_holds_queue.pl => SUCCESS: 40 items populated 3. Navigate to Circulation > Holds queue 4. Submit the filter form (select a library or leave as All) => SUCCESS: Table loads data via API with pagination 5. Verify columns: title, author, current library, home library, collection, location, item type, call number, copy number, enumeration, barcode, patron (name+phone+email), send to, date, notes 6. Change library filter in sidebar, click Submit => SUCCESS: Table redraws without page reload 7. Click Clear button => SUCCESS: All filters reset, full results shown 8. Verify sorting works on columns 9. Sign off :-D Assisted-by: Sonnet 4.6 (Anthropic) -- You are receiving this mail because: You are watching all bug changes.
https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=42503 --- Comment #15 from Tomás Cohen Arazi (tcohen) <tomascohen@gmail.com> --- Created attachment 199162 --> https://bugs.koha-community.org/bugzilla3/attachment.cgi?id=199162&action=edit Bug 42503: (follow-up) Sort libraries and category by name Sorting on library and category columns was ordering by code values (branchcode, categorycode) rather than human-readable names. This patch: - Adds item.holding_library, item.home_library, and pickup_library embeds so the library names are JOINed and sortable - Adds patron.category and patron.library embeds for the same reason - Adds a pickup_library relationship alias to TmpHoldsqueue - Changes data fields to point to the .name columns for sorting Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io> -- You are receiving this mail because: You are watching all bug changes.
https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=42503 --- Comment #16 from Tomás Cohen Arazi (tcohen) <tomascohen@gmail.com> --- I've been testing the table side-by-side with the current one, and noticed my implementation was sorting by code in some fields like patron category or pickup library (and even home/holding library code, which were hidden in my setup). Because of that, I reworked how things are retrieved/embedded using the API and ended up not needing the `strings_map` at all. -- You are receiving this mail because: You are watching all bug changes.
https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=42503 Emmi Takkinen <emmi.takkinen@koha-suomi.fi> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |emmi.takkinen@koha-suomi.fi -- You are receiving this mail because: You are watching all bug changes.
https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=42503 Pedro Amorim <pedro.amorim@openfifth.co.uk> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |martin.renvoize@openfifth.c | |o.uk, | |pedro.amorim@openfifth.co.u | |k -- You are receiving this mail because: You are watching all bug changes.
https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=42503 Pedro Amorim <pedro.amorim@openfifth.co.uk> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|Needs Signoff |Failed QA --- Comment #17 from Pedro Amorim <pedro.amorim@openfifth.co.uk> --- 1) There is an extra closing bracket in view_holdsqueue.tt preventing the table from rendering at all, had to make the following to test further: @@ -392,7 +392,6 @@ if (!row.patron || !row.patron.category) return ""; return (row.patron.category.name || "").escapeHtml() + " (" + (row.patron.category_id || "").escapeHtml() + ")"; }, - }, }, { 2) HidePatronName sys pref support is gone. Test before and after applying patches, with HidePatronName enabled and disabled. Notice that patron name is displayed in accordance to HidePatronName before the patches, but always shows after the patches, completely ignoring the sys pref. 3) Before, one of the following labels would show on the barcode column: - Only item: <barcode> - <barcode> or any item from item group - <barcode> or any available But now, the item group case (2nd) is gone entirely. To test, apply only the sample data script patch + my follow-up and run: cd /kohadevbox/koha && perl t/lib/sample_holds_queue.pl Ensure 'or any item from item group' exists on the holds queue page when loading all 40 for All libraries. Apply all patches, run: $ yarn api:bundle $ koha-plack --restart kohadev. Notice the 'or any item from item group' is gone. 4) The old table had per-column text filter inputs in the header row — those are gone, replaced by sidebar-only filtering. Loss of functionality. Not major but worth flagging. 5) encodeURIComponent on the mailto href will encode @ to %40, producing broken mailto links. Hover over any email address on the patron column. Notice the produced mailto link is e.g. 'patron1%40example.com'. -- You are receiving this mail because: You are watching all bug changes.
https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=42503 --- Comment #18 from Pedro Amorim <pedro.amorim@openfifth.co.uk> --- Created attachment 199251 --> https://bugs.koha-community.org/bugzilla3/attachment.cgi?id=199251&action=edit [DO NOT PUSH] Bug 42503: Add item groups to population script Patch from commit e6df817 -- You are receiving this mail because: You are watching all bug changes.
https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=42503 Pedro Amorim <pedro.amorim@openfifth.co.uk> changed: What |Removed |Added ---------------------------------------------------------------------------- QA Contact|testopia@bugs.koha-communit |pedro.amorim@openfifth.co.u |y.org |k -- You are receiving this mail because: You are watching all bug changes.
https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=42503 Andrew Fuerste-Henry <andrew@bywatersolutions.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Blocks| |42643 Referenced Bugs: https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=42643 [Bug 42643] [OMNIBUS] Assorted performance and stability work -- You are receiving this mail because: You are watching all bug changes.
https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=42503 --- Comment #19 from Tomás Cohen Arazi (tcohen) <tomascohen@gmail.com> --- Hi Pedro! Thanks for the valuable feedback! (In reply to Pedro Amorim (ammopt) from comment #17)
1) There is an extra closing bracket in view_holdsqueue.tt preventing the table from rendering at all, had to make the following to test further:
@@ -392,7 +392,6 @@ if (!row.patron || !row.patron.category) return ""; return (row.patron.category.name || "").escapeHtml() + " (" + (row.patron.category_id || "").escapeHtml() + ")"; }, - }, }, {
I think I messed up with several submissions because of submitting from the wrong worktree! Thanks for pointing this out. I'll take a closer look at my workflow! I've been testing this and didn't notice it.
2) HidePatronName sys pref support is gone. Test before and after applying patches, with HidePatronName enabled and disabled. Notice that patron name is displayed in accordance to HidePatronName before the patches, but always shows after the patches, completely ignoring the sys pref.
I didn't really think about the syspref. This will be very tricky.
3) Before, one of the following labels would show on the barcode column: - Only item: <barcode> - <barcode> or any item from item group - <barcode> or any available
But now, the item group case (2nd) is gone entirely.
To test, apply only the sample data script patch + my follow-up and run: cd /kohadevbox/koha && perl t/lib/sample_holds_queue.pl
Ensure 'or any item from item group' exists on the holds queue page when loading all 40 for All libraries. Apply all patches, run: $ yarn api:bundle $ koha-plack --restart kohadev.
Notice the 'or any item from item group' is gone.
Thanks, I'll add the relevant embeds for this.
4) The old table had per-column text filter inputs in the header row — those are gone, replaced by sidebar-only filtering. Loss of functionality. Not major but worth flagging.
Will add it back, thanks!
5) encodeURIComponent on the mailto href will encode @ to %40, producing broken mailto links. Hover over any email address on the patron column. Notice the produced mailto link is e.g. 'patron1%40example.com'.
Hm, taking a look! Thanks! -- You are receiving this mail because: You are watching all bug changes.
https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=42503 Tomás Cohen Arazi (tcohen) <tomascohen@gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|Failed QA |Needs Signoff -- You are receiving this mail because: You are watching all bug changes.
https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=42503 Tomás Cohen Arazi (tcohen) <tomascohen@gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Attachment #199145|0 |1 is obsolete| | -- You are receiving this mail because: You are watching all bug changes.
https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=42503 Tomás Cohen Arazi (tcohen) <tomascohen@gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Attachment #199160|0 |1 is obsolete| | -- You are receiving this mail because: You are watching all bug changes.
https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=42503 Tomás Cohen Arazi (tcohen) <tomascohen@gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Attachment #199161|0 |1 is obsolete| | -- You are receiving this mail because: You are watching all bug changes.
https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=42503 Tomás Cohen Arazi (tcohen) <tomascohen@gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Attachment #199162|0 |1 is obsolete| | -- You are receiving this mail because: You are watching all bug changes.
https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=42503 Tomás Cohen Arazi (tcohen) <tomascohen@gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Attachment #199251|0 |1 is obsolete| | -- You are receiving this mail because: You are watching all bug changes.
https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=42503 --- Comment #20 from Tomás Cohen Arazi (tcohen) <tomascohen@gmail.com> --- Created attachment 199347 --> https://bugs.koha-community.org/bugzilla3/attachment.cgi?id=199347&action=edit Bug 42503: Sample holds queue population script Usage: $ ktd --shell k$ cd /kohadevbox/koha && perl t/lib/sample_holds_queue.pl Assisted-by: Sonnet 4.6 (Anthropic) -- You are receiving this mail because: You are watching all bug changes.
https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=42503 --- Comment #21 from Tomás Cohen Arazi (tcohen) <tomascohen@gmail.com> --- Created attachment 199348 --> https://bugs.koha-community.org/bugzilla3/attachment.cgi?id=199348&action=edit Bug 42503: Add item groups to population script Patch from commit 3755040 -- You are receiving this mail because: You are watching all bug changes.
https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=42503 --- Comment #22 from Tomás Cohen Arazi (tcohen) <tomascohen@gmail.com> --- Created attachment 199349 --> https://bugs.koha-community.org/bugzilla3/attachment.cgi?id=199349&action=edit Bug 42503: Add holds queue REST API endpoint Adds GET /api/v1/holds/queue backed by Koha::Hold::HoldsQueueItems (the tmp_holdsqueue table populated by the holds queue cron job). Changes: - Koha/REST/V1/Holds/Queue.pm: controller with list method - Koha/Hold/HoldsQueueItem.pm: Koha::Object class with relationship accessors (patron, biblio, item), strings_map, and to_api_mapping - Koha/Hold/HoldsQueueItems.pm: Koha::Objects class with api_query_fixer for biblioitem field resolution - Koha/Schema/Result/TmpHoldsqueue.pm: adds 'patron' relationship alias so patron.* fields are embeddable and sortable - api/v1/swagger/paths/holds_queue.yaml: path spec - api/v1/swagger/definitions/holds_queue_item.yaml: definition Supports filtering by holding_library_id, pickup_library_id, biblio_id, item_id, patron_id, item_level. Embeds: +strings, biblio, item, item+strings, patron, patron+strings, patron.notice_email_address. Sorting on embedded fields (patron.surname, patron.category_id, biblio.publisher) works correctly. Test plan: 1. Apply all patches for this bug 2. Run: $ ktd --shell k$ yarn build ; koha-plack --restart kohadev k$ prove t/db_dependent/api/v1/holds_queue.t => SUCCESS: Tests pass! 3. Populate the holds queue: k$ perl misc/cronjobs/holds/build_holdsqueue.pl 4. Verify the endpoint: GET /api/v1/holds/queue x-koha-embed: biblio,item+strings,patron+strings => SUCCESS: Returns holds queue items with embedded data 5. Sign off :-D Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io> -- You are receiving this mail because: You are watching all bug changes.
https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=42503 --- Comment #23 from Tomás Cohen Arazi (tcohen) <tomascohen@gmail.com> --- Created attachment 199350 --> https://bugs.koha-community.org/bugzilla3/attachment.cgi?id=199350&action=edit Bug 42503: Convert holds queue page to API-driven The holds queue page (circ/view_holdsqueue.pl) loaded all queue items at once server-side via GetHoldsQueueItems(), which is slow for large systems. This patch converts it to use the new /api/v1/holds/queue endpoint with DataTables for paginated, server-side rendering. Changes: - circ/view_holdsqueue.pl: stripped to auth + template params only. Data loading removed entirely. - view_holdsqueue.tt: replaced server-rendered FOREACH loop with a kohaTable instance calling /api/v1/holds/queue with dynamic filters via additional_filters (ILL table pattern). The sidebar form redraws the table without page reload on subsequent filter changes. - Embeds used: biblio, item+strings, patron, patron.notice_email_address - Removed publication details column (available via biblio embed if needed in the future) and patron category column (simplification, can be re-added as patron+strings embed) Test plan: 1. Apply patches (including the [DO NOT PUSH] sample data commit) 2. Populate the holds queue: $ ktd --shell k$ cd /kohadevbox/koha && perl t/lib/sample_holds_queue.pl => SUCCESS: 40 items populated 3. Navigate to Circulation > Holds queue 4. Submit the filter form (select a library or leave as All) => SUCCESS: Table loads data via API with pagination 5. Verify columns: title, author, current library, home library, collection, location, item type, call number, copy number, enumeration, barcode, patron (name+phone+email), send to, date, notes 6. Change library filter in sidebar, click Submit => SUCCESS: Table redraws without page reload 7. Click Clear button => SUCCESS: All filters reset, full results shown 8. Verify sorting works on columns 9. Sign off :-D Assisted-by: Sonnet 4.6 (Anthropic) -- You are receiving this mail because: You are watching all bug changes.
https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=42503 --- Comment #24 from Tomás Cohen Arazi (tcohen) <tomascohen@gmail.com> --- Created attachment 199351 --> https://bugs.koha-community.org/bugzilla3/attachment.cgi?id=199351&action=edit Bug 42503: (follow-up) Respect HidePatronName system preference The old server-rendered template hid patron name, phone and email when HidePatronName was enabled, showing only the cardnumber. This patch redacts patron personal fields server-side in the controller when HidePatronName is set, keeping only patron_id, cardnumber, category_id and the embedded category. The JS falls back to displaying the cardnumber when surname is absent. Superlibrarians are exempt from the redaction as they have unrestricted access to patron data. Signed-off-by: Tomás Cohen Arazi <tomascohen@theke.io> -- You are receiving this mail because: You are watching all bug changes.
https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=42503 --- Comment #25 from Tomás Cohen Arazi (tcohen) <tomascohen@gmail.com> --- Created attachment 199385 --> https://bugs.koha-community.org/bugzilla3/attachment.cgi?id=199385&action=edit Bug 42503: (follow-up) Restore per-column text filters The old table had per-column text filter inputs in the header row. These were lost in the conversion to the API-driven DataTable. Pass add_filters to kohaTable so it auto-generates filter inputs for all searchable columns. Signed-off-by: Tomás Cohen Arazi <tomascohen@theke.io> -- You are receiving this mail because: You are watching all bug changes.
https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=42503 --- Comment #26 from Tomás Cohen Arazi (tcohen) <tomascohen@gmail.com> --- (In reply to Pedro Amorim (ammopt) from comment #17)
1) There is an extra closing bracket in view_holdsqueue.tt preventing the table from rendering at all, had to make the following to test further:
Solved!
2) HidePatronName sys pref support is gone. Test before and after applying patches, with HidePatronName enabled and disabled. Notice that patron name is displayed in accordance to HidePatronName before the patches, but always shows after the patches, completely ignoring the sys pref.
Solved! (with some TODO with much broader scope)
3) Before, one of the following labels would show on the barcode column: - Only item: <barcode> - <barcode> or any item from item group - <barcode> or any available
But now, the item group case (2nd) is gone entirely.
Thanks for patching the helper script! It become evident. Solved by adding an embed and doing the same checks it did before
4) The old table had per-column text filter inputs in the header row — those are gone, replaced by sidebar-only filtering. Loss of functionality. Not major but worth flagging.
Done!
5) encodeURIComponent on the mailto href will encode @ to %40, producing broken mailto links. Hover over any email address on the patron column. Notice the produced mailto link is e.g. 'patron1%40example.com'.
Done! -- You are receiving this mail because: You are watching all bug changes.
https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=42503 --- Comment #27 from Alex Carver [Acerock7] <alex@rcls.org> --- Hi Tomás. It looks like this latest version doesn't allow sorting on the Collection, Shelving Location, or Item Type columns. I think the previous version did. Also tested the interaction with the HidePatronName syspref with a new non-superlibrarian account. The update works and shows the cardnumber only in the patron column. -- You are receiving this mail because: You are watching all bug changes.
https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=42503 Andrew Fuerste-Henry <andrew@bywatersolutions.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|Needs Signoff |Failed QA --- Comment #28 from Andrew Fuerste-Henry <andrew@bywatersolutions.com> --- (In reply to Alex Carver [Acerock7] from comment #27)
Hi Tomás. It looks like this latest version doesn't allow sorting on the Collection, Shelving Location, or Item Type columns. I think the previous version did.
I can confirm current main allows sorting by these columns but the patches here do not. -- You are receiving this mail because: You are watching all bug changes.
https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=42503 Tomás Cohen Arazi (tcohen) <tomascohen@gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|Failed QA |Needs Signoff -- You are receiving this mail because: You are watching all bug changes.
https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=42503 Tomás Cohen Arazi (tcohen) <tomascohen@gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Attachment #199347|0 |1 is obsolete| | Attachment #199348|0 |1 is obsolete| | Attachment #199349|0 |1 is obsolete| | Attachment #199350|0 |1 is obsolete| | Attachment #199351|0 |1 is obsolete| | Attachment #199385|0 |1 is obsolete| | -- You are receiving this mail because: You are watching all bug changes.
https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=42503 --- Comment #29 from Tomás Cohen Arazi (tcohen) <tomascohen@gmail.com> --- Created attachment 200380 --> https://bugs.koha-community.org/bugzilla3/attachment.cgi?id=200380&action=edit Bug 42503: Sample holds queue population script Usage: $ ktd --shell k$ cd /kohadevbox/koha && perl t/lib/sample_holds_queue.pl Assisted-by: Sonnet 4.6 (Anthropic) -- You are receiving this mail because: You are watching all bug changes.
https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=42503 --- Comment #30 from Tomás Cohen Arazi (tcohen) <tomascohen@gmail.com> --- Created attachment 200381 --> https://bugs.koha-community.org/bugzilla3/attachment.cgi?id=200381&action=edit Bug 42503: Add item groups to population script Patch from commit df6ada2 -- You are receiving this mail because: You are watching all bug changes.
https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=42503 --- Comment #31 from Tomás Cohen Arazi (tcohen) <tomascohen@gmail.com> --- Created attachment 200382 --> https://bugs.koha-community.org/bugzilla3/attachment.cgi?id=200382&action=edit Bug 42503: Add materialized description columns to tmp_holdsqueue Add itype_description, ccode_description, and location_description columns to the tmp_holdsqueue table. These store the human-readable descriptions at queue-build time, enabling server-side sorting by description rather than code. -- You are receiving this mail because: You are watching all bug changes.
https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=42503 --- Comment #32 from Tomás Cohen Arazi (tcohen) <tomascohen@gmail.com> --- Created attachment 200383 --> https://bugs.koha-community.org/bugzilla3/attachment.cgi?id=200383&action=edit Bug 42503: Populate materialized descriptions during queue build The tmp_holdsqueue table already materializes patron (surname, firstname, phone, cardnumber) and biblio (title) fields to avoid joins at read time. This extends the pattern to item type, collection code, and shelving location descriptions. C4::HoldsQueue::AddToHoldsQueue now resolves and stores: - itype_description: from effective item type (Koha::ItemType->description) - ccode_description: from authorised values (CCODE category) - location_description: from authorised values (LOC category) This enables server-side sorting by human-readable descriptions rather than internal codes. Test plan: $ ktd --shell k$ prove t/db_dependent/HoldsQueue/materialized_descriptions.t => SUCCESS: All tests pass -- You are receiving this mail because: You are watching all bug changes.
https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=42503 --- Comment #33 from Tomás Cohen Arazi (tcohen) <tomascohen@gmail.com> --- Created attachment 200384 --> https://bugs.koha-community.org/bugzilla3/attachment.cgi?id=200384&action=edit Bug 42503: Add holds queue REST API endpoint Adds GET /api/v1/holds/queue backed by Koha::Hold::HoldsQueueItems (the tmp_holdsqueue table populated by the holds queue cron job). Changes: - Koha/REST/V1/Holds/Queue.pm: controller with list method - Koha/Hold/HoldsQueueItem.pm: Koha::Object class with relationship accessors (patron, biblio, item), strings_map, and to_api_mapping - Koha/Hold/HoldsQueueItems.pm: Koha::Objects class with api_query_fixer for biblioitem field resolution - Koha/Schema/Result/TmpHoldsqueue.pm: adds 'patron' relationship alias so patron.* fields are embeddable and sortable - api/v1/swagger/paths/holds_queue.yaml: path spec - api/v1/swagger/definitions/holds_queue_item.yaml: definition Supports filtering by holding_library_id, pickup_library_id, biblio_id, item_id, patron_id, item_level. Embeds: +strings, biblio, item, item+strings, patron, patron+strings, patron.notice_email_address. Sorting on embedded fields (patron.surname, patron.category_id, biblio.publisher) works correctly. Respects HidePatronName system preference (superlibrarians exempt). Test plan: 1. Apply all patches for this bug 2. Run: $ ktd --shell k$ yarn build ; koha-plack --restart kohadev k$ prove t/db_dependent/api/v1/holds_queue.t => SUCCESS: Tests pass! 3. Populate the holds queue: k$ perl misc/cronjobs/holds/build_holdsqueue.pl 4. Verify the endpoint: GET /api/v1/holds/queue x-koha-embed: biblio,item+strings,patron+strings => SUCCESS: Returns holds queue items with embedded data 5. Sign off :-D Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io> -- You are receiving this mail because: You are watching all bug changes.
https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=42503 --- Comment #34 from Tomás Cohen Arazi (tcohen) <tomascohen@gmail.com> --- Created attachment 200385 --> https://bugs.koha-community.org/bugzilla3/attachment.cgi?id=200385&action=edit Bug 42503: Convert holds queue page to API-driven The holds queue page (circ/view_holdsqueue.pl) loaded all queue items at once server-side via GetHoldsQueueItems(), which is slow for large systems. This patch converts it to use the new /api/v1/holds/queue endpoint with DataTables for paginated, server-side rendering. Changes: - circ/view_holdsqueue.pl: stripped to auth + template params only. Data loading removed entirely. - view_holdsqueue.tt: replaced server-rendered FOREACH loop with a kohaTable instance calling /api/v1/holds/queue with dynamic filters via additional_filters (ILL table pattern). The sidebar form redraws the table without page reload on subsequent filter changes. - Embeds used: biblio, item+strings, patron, patron.notice_email_address - Removed publication details column (available via biblio embed if needed in the future) and patron category column (simplification, can be re-added as patron+strings embed) Test plan: 1. Apply patches (including the [DO NOT PUSH] sample data commit) 2. Populate the holds queue: $ ktd --shell k$ cd /kohadevbox/koha && perl t/lib/sample_holds_queue.pl => SUCCESS: 40 items populated 3. Navigate to Circulation > Holds queue 4. Submit the filter form (select a library or leave as All) => SUCCESS: Table loads data via API with pagination 5. Verify columns: title, author, current library, home library, collection, location, item type, call number, copy number, enumeration, barcode, patron (name+phone+email), send to, date, notes 6. Change library filter in sidebar, click Submit => SUCCESS: Table redraws without page reload 7. Click Clear button => SUCCESS: All filters reset, full results shown 8. Verify sorting works on columns 9. Sign off :-D Assisted-by: Sonnet 4.6 (Anthropic) -- You are receiving this mail because: You are watching all bug changes.
https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=42503 --- Comment #35 from Tomás Cohen Arazi (tcohen) <tomascohen@gmail.com> --- Created attachment 200386 --> https://bugs.koha-community.org/bugzilla3/attachment.cgi?id=200386&action=edit Bug 42503: (follow-up) Rename view_holdsqueue to holds_queue Renames circ/view_holdsqueue.{pl,tt} to circ/holds_queue.{pl,tt} for consistency with other circ pages. Updates all references: circulation-home, Koha::Manual, columns_settings.yml, and the template's internal links. Includes a DB migration to rename saved column preferences from view_holdsqueue to holds_queue. -- You are receiving this mail because: You are watching all bug changes.
https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=42503 Tomás Cohen Arazi (tcohen) <tomascohen@gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Attachment #200386|0 |1 is obsolete| | -- You are receiving this mail because: You are watching all bug changes.
https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=42503 --- Comment #36 from Tomás Cohen Arazi (tcohen) <tomascohen@gmail.com> --- Created attachment 200387 --> https://bugs.koha-community.org/bugzilla3/attachment.cgi?id=200387&action=edit Bug 42503: (follow-up) Rename view_holdsqueue to holds_queue Renames circ/view_holdsqueue.{pl,tt} to circ/holds_queue.{pl,tt} for consistency with other circ pages. Updates all references: circulation-home, Koha::Manual, columns_settings.yml, and the template's internal links. Includes a DB migration to rename saved column preferences from view_holdsqueue to holds_queue. -- You are receiving this mail because: You are watching all bug changes.
https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=42503 Tomás Cohen Arazi (tcohen) <tomascohen@gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Blocks| |42842 David Nind <david@davidnind.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|Needs Signoff |Signed Off Referenced Bugs: https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=42842 [Bug 42842] Remove materialized patron data from tmp_holdsqueue -- You are receiving this mail because: You are watching all bug changes.
https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=42503 David Nind <david@davidnind.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Attachment #200380|0 |1 is obsolete| | Attachment #200381|0 |1 is obsolete| | Attachment #200382|0 |1 is obsolete| | Attachment #200383|0 |1 is obsolete| | Attachment #200384|0 |1 is obsolete| | Attachment #200385|0 |1 is obsolete| | Attachment #200387|0 |1 is obsolete| | -- You are receiving this mail because: You are watching all bug changes.
https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=42503 --- Comment #37 from David Nind <david@davidnind.com> --- Created attachment 200439 --> https://bugs.koha-community.org/bugzilla3/attachment.cgi?id=200439&action=edit Bug 42503: Sample holds queue population script Usage: $ ktd --shell k$ cd /kohadevbox/koha && perl t/lib/sample_holds_queue.pl Assisted-by: Sonnet 4.6 (Anthropic) Signed-off-by: David Nind <david@davidnind.com> -- You are receiving this mail because: You are watching all bug changes.
https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=42503 --- Comment #38 from David Nind <david@davidnind.com> --- Created attachment 200440 --> https://bugs.koha-community.org/bugzilla3/attachment.cgi?id=200440&action=edit Bug 42503: Add item groups to population script Signed-off-by: David Nind <david@davidnind.com> -- You are receiving this mail because: You are watching all bug changes.
https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=42503 --- Comment #39 from David Nind <david@davidnind.com> --- Created attachment 200441 --> https://bugs.koha-community.org/bugzilla3/attachment.cgi?id=200441&action=edit Bug 42503: Add materialized description columns to tmp_holdsqueue Add itype_description, ccode_description, and location_description columns to the tmp_holdsqueue table. These store the human-readable descriptions at queue-build time, enabling server-side sorting by description rather than code. Signed-off-by: David Nind <david@davidnind.com> -- You are receiving this mail because: You are watching all bug changes.
https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=42503 --- Comment #40 from David Nind <david@davidnind.com> --- Created attachment 200442 --> https://bugs.koha-community.org/bugzilla3/attachment.cgi?id=200442&action=edit Bug 42503: Populate materialized descriptions during queue build The tmp_holdsqueue table already materializes patron (surname, firstname, phone, cardnumber) and biblio (title) fields to avoid joins at read time. This extends the pattern to item type, collection code, and shelving location descriptions. C4::HoldsQueue::AddToHoldsQueue now resolves and stores: - itype_description: from effective item type (Koha::ItemType->description) - ccode_description: from authorised values (CCODE category) - location_description: from authorised values (LOC category) This enables server-side sorting by human-readable descriptions rather than internal codes. Test plan: $ ktd --shell k$ prove t/db_dependent/HoldsQueue/materialized_descriptions.t => SUCCESS: All tests pass Signed-off-by: David Nind <david@davidnind.com> -- You are receiving this mail because: You are watching all bug changes.
https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=42503 --- Comment #41 from David Nind <david@davidnind.com> --- Created attachment 200443 --> https://bugs.koha-community.org/bugzilla3/attachment.cgi?id=200443&action=edit Bug 42503: Add holds queue REST API endpoint Adds GET /api/v1/holds/queue backed by Koha::Hold::HoldsQueueItems (the tmp_holdsqueue table populated by the holds queue cron job). Changes: - Koha/REST/V1/Holds/Queue.pm: controller with list method - Koha/Hold/HoldsQueueItem.pm: Koha::Object class with relationship accessors (patron, biblio, item), strings_map, and to_api_mapping - Koha/Hold/HoldsQueueItems.pm: Koha::Objects class with api_query_fixer for biblioitem field resolution - Koha/Schema/Result/TmpHoldsqueue.pm: adds 'patron' relationship alias so patron.* fields are embeddable and sortable - api/v1/swagger/paths/holds_queue.yaml: path spec - api/v1/swagger/definitions/holds_queue_item.yaml: definition Supports filtering by holding_library_id, pickup_library_id, biblio_id, item_id, patron_id, item_level. Embeds: +strings, biblio, item, item+strings, patron, patron+strings, patron.notice_email_address. Sorting on embedded fields (patron.surname, patron.category_id, biblio.publisher) works correctly. Respects HidePatronName system preference (superlibrarians exempt). Test plan: 1. Apply all patches for this bug 2. Run: $ ktd --shell k$ yarn build ; koha-plack --restart kohadev k$ prove t/db_dependent/api/v1/holds_queue.t => SUCCESS: Tests pass! 3. Populate the holds queue: k$ perl misc/cronjobs/holds/build_holdsqueue.pl 4. Verify the endpoint: GET /api/v1/holds/queue x-koha-embed: biblio,item+strings,patron+strings => SUCCESS: Returns holds queue items with embedded data 5. Sign off :-D Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io> Signed-off-by: David Nind <david@davidnind.com> -- You are receiving this mail because: You are watching all bug changes.
https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=42503 --- Comment #42 from David Nind <david@davidnind.com> --- Created attachment 200444 --> https://bugs.koha-community.org/bugzilla3/attachment.cgi?id=200444&action=edit Bug 42503: Convert holds queue page to API-driven The holds queue page (circ/view_holdsqueue.pl) loaded all queue items at once server-side via GetHoldsQueueItems(), which is slow for large systems. This patch converts it to use the new /api/v1/holds/queue endpoint with DataTables for paginated, server-side rendering. Changes: - circ/view_holdsqueue.pl: stripped to auth + template params only. Data loading removed entirely. - view_holdsqueue.tt: replaced server-rendered FOREACH loop with a kohaTable instance calling /api/v1/holds/queue with dynamic filters via additional_filters (ILL table pattern). The sidebar form redraws the table without page reload on subsequent filter changes. - Embeds used: biblio, item+strings, patron, patron.notice_email_address - Removed publication details column (available via biblio embed if needed in the future) and patron category column (simplification, can be re-added as patron+strings embed) Test plan: 1. Apply patches (including the [DO NOT PUSH] sample data commit) 2. Populate the holds queue: $ ktd --shell k$ cd /kohadevbox/koha && perl t/lib/sample_holds_queue.pl => SUCCESS: 40 items populated 3. Navigate to Circulation > Holds queue 4. Submit the filter form (select a library or leave as All) => SUCCESS: Table loads data via API with pagination 5. Verify columns: title, author, current library, home library, collection, location, item type, call number, copy number, enumeration, barcode, patron (name+phone+email), send to, date, notes 6. Change library filter in sidebar, click Submit => SUCCESS: Table redraws without page reload 7. Click Clear button => SUCCESS: All filters reset, full results shown 8. Verify sorting works on columns 9. Sign off :-D Assisted-by: Sonnet 4.6 (Anthropic) Signed-off-by: David Nind <david@davidnind.com> -- You are receiving this mail because: You are watching all bug changes.
https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=42503 --- Comment #43 from David Nind <david@davidnind.com> --- Created attachment 200445 --> https://bugs.koha-community.org/bugzilla3/attachment.cgi?id=200445&action=edit Bug 42503: (follow-up) Rename view_holdsqueue to holds_queue Renames circ/view_holdsqueue.{pl,tt} to circ/holds_queue.{pl,tt} for consistency with other circ pages. Updates all references: circulation-home, Koha::Manual, columns_settings.yml, and the template's internal links. Includes a DB migration to rename saved column preferences from view_holdsqueue to holds_queue. Signed-off-by: David Nind <david@davidnind.com> -- You are receiving this mail because: You are watching all bug changes.
https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=42503 David Nind <david@davidnind.com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |david@davidnind.com --- Comment #44 from David Nind <david@davidnind.com> --- Testing notes (using KTD): 1. Apply all the patches 2. Update the database: updatedatabase 3. Rebuild everything: yarn build 4. Restart everything: restart_all 5. Run tests - should pass: prove t/db_dependent/HoldsQueue/materialized_descriptions.t prove t/db_dependent/api/v1/holds_queue.t 6. Populate the holds queue: cd /kohadevbox/koha && perl t/lib/sample_holds_queue.pl 7. Build the holds queue (correct command - add missing underscore): perl misc/cronjobs/holds/build_holds_queue.pl 8. Columns in the holds queue: - Current library and Home library are hidden by default (need to toggle using columns) - Other columns shown are: . Publication details . Patron category 9. Sorting: Patron category - can't filter by patron category codes, for example, PT (shown in table as `Patron (PT)`) 10. API endpoint tested using Bruno: - GET 127.0.0.1:8081/api/v1/holds/queue - Headers: . Name: x-koha-embed . Value: biblio,item+strings,patron+strings -- You are receiving this mail because: You are watching all bug changes.
https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=42503 Lucas Gass (lukeg) <lucas@bywatersolutions.com> changed: What |Removed |Added ---------------------------------------------------------------------------- QA Contact|pedro.amorim@openfifth.co.u |lucas@bywatersolutions.com |k | CC| |lucas@bywatersolutions.com -- You are receiving this mail because: You are watching all bug changes.
https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=42503 Lucas Gass (lukeg) <lucas@bywatersolutions.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|Signed Off |Failed QA --- Comment #45 from Lucas Gass (lukeg) <lucas@bywatersolutions.com> --- A couple questions, not necessarily blockers: 1. In CreatePicklistFromItemMap, do we need to fetch the itype_description, ccode_description, and location_description each time through the loop? 2. Should these fallback to code, or undef, in the cases of no description? my $ccode_description = Koha::AuthorisedValues->get_description_by_koha_field( { kohafield => 'items.ccode', authorised_value => $item->ccode } )->{lib}; 3. What is $context in this ... context? sub api_query_fixer { my ( $self, $query, $context, $no_quotes ) = @_; return Koha::Biblios->new->api_query_fixer( $query, 'biblio', $no_quotes ); } Blocker: 1. Setting HidePatronName to 'Don't show', the patron name still appears in the holds queue! 2. Schema changes to Result/TmpHoldsqueue.pm should be move to their own patch. -- You are receiving this mail because: You are watching all bug changes.
https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=42503 Tomás Cohen Arazi (tcohen) <tomascohen@gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|Failed QA |Signed Off --- Comment #46 from Tomás Cohen Arazi (tcohen) <tomascohen@gmail.com> --- (In reply to Lucas Gass (lukeg) from comment #45)
A couple questions, not necessarily blockers:
1. In CreatePicklistFromItemMap, do we need to fetch the itype_description, ccode_description, and location_description each time through the loop?
`get_description_by_koha_field` already uses Koha::Cache::Memory::Lite, so repeated calls for the same value are cached. No change needed.
2. Should these fallback to code, or undef, in the cases of no description? my $ccode_description = Koha::AuthorisedValues->get_description_by_koha_field( { kohafield => 'items.ccode', authorised_value => $item->ccode } )->{lib};
It already returns undef when no description found (the hashref is {}, so ->{lib} is undef). That's appropriate - the column is nullable.
3. What is $context in this ... context? sub api_query_fixer { my ( $self, $query, $context, $no_quotes ) = @_; return Koha::Biblios->new->api_query_fixer( $query, 'biblio', $no_quotes ); }
The $context parameter is the nesting prefix that tells the query fixer where to find the fields it needs to rewrite. Example: In /api/v1/acquisitions/orders, biblio is embedded one level deep. When a user sorts by "biblio.isbn", DBIC cannot resolve it directly because isbn lives on the biblioitems table, not biblio. The fixer is called with $context = 'biblio': Input: "biblio.isbn" Output: "biblio.biblioitem.isbn" This lets DBIC resolve the correct join path. If $context were empty (as in /api/v1/biblios), it would match bare field names: Input: "isbn" Output: "biblioitem.isbn" In our holds queue endpoint, biblio is embedded directly on the queue item, so we pass $context = 'biblio' when delegating to Koha::Biblios->api_query_fixer. The outer call from the controller uses $context = '' because the holds queue item itself is at the top level. I will try to document this better.
Blocker:
1. Setting HidePatronName to 'Don't show', the patron name still appears in the holds queue!
Right. I added an exception for superlibrarians, I'll just remove it to preserve behavior for now.
2. Schema changes to Result/TmpHoldsqueue.pm should be move to their own patch.
Oops! Bad commits reorganization! -- You are receiving this mail because: You are watching all bug changes.
https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=42503 Tomás Cohen Arazi (tcohen) <tomascohen@gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Attachment #200439|0 |1 is obsolete| | Attachment #200440|0 |1 is obsolete| | Attachment #200441|0 |1 is obsolete| | Attachment #200442|0 |1 is obsolete| | Attachment #200443|0 |1 is obsolete| | Attachment #200444|0 |1 is obsolete| | Attachment #200445|0 |1 is obsolete| | -- You are receiving this mail because: You are watching all bug changes.
https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=42503 --- Comment #47 from Tomás Cohen Arazi (tcohen) <tomascohen@gmail.com> --- Created attachment 200552 --> https://bugs.koha-community.org/bugzilla3/attachment.cgi?id=200552&action=edit Bug 42503: Sample holds queue population script Usage: $ ktd --shell k$ cd /kohadevbox/koha && perl t/lib/sample_holds_queue.pl Assisted-by: Sonnet 4.6 (Anthropic) Signed-off-by: David Nind <david@davidnind.com> -- You are receiving this mail because: You are watching all bug changes.
https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=42503 --- Comment #48 from Tomás Cohen Arazi (tcohen) <tomascohen@gmail.com> --- Created attachment 200553 --> https://bugs.koha-community.org/bugzilla3/attachment.cgi?id=200553&action=edit Bug 42503: Add item groups to population script Signed-off-by: David Nind <david@davidnind.com> -- You are receiving this mail because: You are watching all bug changes.
https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=42503 --- Comment #49 from Tomás Cohen Arazi (tcohen) <tomascohen@gmail.com> --- Created attachment 200554 --> https://bugs.koha-community.org/bugzilla3/attachment.cgi?id=200554&action=edit Bug 42503: Add materialized description columns to tmp_holdsqueue Add itype_description, ccode_description, and location_description columns to the tmp_holdsqueue table. These store the human-readable descriptions at queue-build time, enabling server-side sorting by description rather than code. Signed-off-by: David Nind <david@davidnind.com> -- You are receiving this mail because: You are watching all bug changes.
https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=42503 --- Comment #50 from Tomás Cohen Arazi (tcohen) <tomascohen@gmail.com> --- Created attachment 200555 --> https://bugs.koha-community.org/bugzilla3/attachment.cgi?id=200555&action=edit Bug 42503: Populate materialized descriptions during queue build The tmp_holdsqueue table already materializes patron (surname, firstname, phone, cardnumber) and biblio (title) fields to avoid joins at read time. This extends the pattern to item type, collection code, and shelving location descriptions. C4::HoldsQueue::AddToHoldsQueue now resolves and stores: - itype_description: from effective item type (Koha::ItemType->description) - ccode_description: from authorised values (CCODE category) - location_description: from authorised values (LOC category) This enables server-side sorting by human-readable descriptions rather than internal codes. Test plan: $ ktd --shell k$ prove t/db_dependent/HoldsQueue/materialized_descriptions.t => SUCCESS: All tests pass Signed-off-by: David Nind <david@davidnind.com> -- You are receiving this mail because: You are watching all bug changes.
https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=42503 --- Comment #51 from Tomás Cohen Arazi (tcohen) <tomascohen@gmail.com> --- Created attachment 200556 --> https://bugs.koha-community.org/bugzilla3/attachment.cgi?id=200556&action=edit Bug 42503: Add holds queue REST API endpoint Adds GET /api/v1/holds/queue backed by Koha::Hold::HoldsQueueItems (the tmp_holdsqueue table populated by the holds queue cron job). Changes: - Koha/REST/V1/Holds/Queue.pm: controller with list method - Koha/Hold/HoldsQueueItem.pm: Koha::Object class with relationship accessors (patron, biblio, item), strings_map, and to_api_mapping - Koha/Hold/HoldsQueueItems.pm: Koha::Objects class with api_query_fixer for biblioitem field resolution - Koha/Schema/Result/TmpHoldsqueue.pm: adds 'patron' relationship alias so patron.* fields are embeddable and sortable - api/v1/swagger/paths/holds_queue.yaml: path spec - api/v1/swagger/definitions/holds_queue_item.yaml: definition Supports filtering by holding_library_id, pickup_library_id, biblio_id, item_id, patron_id, item_level. Embeds: +strings, biblio, item, item+strings, patron, patron+strings, patron.notice_email_address. Sorting on embedded fields (patron.surname, patron.category_id, biblio.publisher) works correctly. Respects HidePatronName system preference. Test plan: 1. Apply all patches for this bug 2. Run: $ ktd --shell k$ yarn build ; koha-plack --restart kohadev k$ prove t/db_dependent/api/v1/holds_queue.t => SUCCESS: Tests pass! 3. Populate the holds queue: k$ perl misc/cronjobs/holds/build_holdsqueue.pl 4. Verify the endpoint: GET /api/v1/holds/queue x-koha-embed: biblio,item+strings,patron+strings => SUCCESS: Returns holds queue items with embedded data 5. Sign off :-D Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io> Signed-off-by: David Nind <david@davidnind.com> -- You are receiving this mail because: You are watching all bug changes.
https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=42503 --- Comment #52 from Tomás Cohen Arazi (tcohen) <tomascohen@gmail.com> --- Created attachment 200557 --> https://bugs.koha-community.org/bugzilla3/attachment.cgi?id=200557&action=edit Bug 42503: Convert holds queue page to API-driven The holds queue page (circ/view_holdsqueue.pl) loaded all queue items at once server-side via GetHoldsQueueItems(), which is slow for large systems. This patch converts it to use the new /api/v1/holds/queue endpoint with DataTables for paginated, server-side rendering. Changes: - circ/view_holdsqueue.pl: stripped to auth + template params only. Data loading removed entirely. - view_holdsqueue.tt: replaced server-rendered FOREACH loop with a kohaTable instance calling /api/v1/holds/queue with dynamic filters via additional_filters (ILL table pattern). The sidebar form redraws the table without page reload on subsequent filter changes. - Embeds used: biblio, item+strings, patron, patron.notice_email_address - Removed publication details column (available via biblio embed if needed in the future) and patron category column (simplification, can be re-added as patron+strings embed) Test plan: 1. Apply patches (including the [DO NOT PUSH] sample data commit) 2. Populate the holds queue: $ ktd --shell k$ cd /kohadevbox/koha && perl t/lib/sample_holds_queue.pl => SUCCESS: 40 items populated 3. Navigate to Circulation > Holds queue 4. Submit the filter form (select a library or leave as All) => SUCCESS: Table loads data via API with pagination 5. Verify columns: title, author, current library, home library, collection, location, item type, call number, copy number, enumeration, barcode, patron (name+phone+email), send to, date, notes 6. Change library filter in sidebar, click Submit => SUCCESS: Table redraws without page reload 7. Click Clear button => SUCCESS: All filters reset, full results shown 8. Verify sorting works on columns 9. Sign off :-D Assisted-by: Sonnet 4.6 (Anthropic) Signed-off-by: David Nind <david@davidnind.com> -- You are receiving this mail because: You are watching all bug changes.
https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=42503 --- Comment #53 from Tomás Cohen Arazi (tcohen) <tomascohen@gmail.com> --- Created attachment 200558 --> https://bugs.koha-community.org/bugzilla3/attachment.cgi?id=200558&action=edit Bug 42503: (follow-up) Rename view_holdsqueue to holds_queue Renames circ/view_holdsqueue.{pl,tt} to circ/holds_queue.{pl,tt} for consistency with other circ pages. Updates all references: circulation-home, Koha::Manual, columns_settings.yml, and the template's internal links. Includes a DB migration to rename saved column preferences from view_holdsqueue to holds_queue. Signed-off-by: David Nind <david@davidnind.com> -- You are receiving this mail because: You are watching all bug changes.
https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=42503 --- Comment #54 from Tomás Cohen Arazi (tcohen) <tomascohen@gmail.com> --- Created attachment 200559 --> https://bugs.koha-community.org/bugzilla3/attachment.cgi?id=200559&action=edit [DO NOT PUSH] Bug 42503: Schema changes for tmp_holdsqueue The Schema changes in this patchset (added in 'Add materialized description columns' commit) will be regenerated by the RM. They are included for testers to be able to run the code. Signed-off-by: David Nind <david@davidnind.com> -- You are receiving this mail because: You are watching all bug changes.
https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=42503 --- Comment #55 from Tomás Cohen Arazi (tcohen) <tomascohen@gmail.com> --- Created attachment 200564 --> https://bugs.koha-community.org/bugzilla3/attachment.cgi?id=200564&action=edit Bug 42503: (follow-up) Remove unnecessary api_query_fixer indirection Call Koha::Biblios->api_query_fixer directly from the controller with the correct context ('biblio'), matching the pattern used in Koha::REST::V1::Acquisitions::Orders. The HoldsQueueItems::api_query_fixer method was a pointless wrapper that ignored its $context parameter and hardcoded 'biblio' internally. -- You are receiving this mail because: You are watching all bug changes.
https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=42503 Andrew Fuerste-Henry <andrew@bywatersolutions.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Blocks| |43017 Referenced Bugs: https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=43017 [Bug 43017] [OMNIBUS] Interface optimization -- You are receiving this mail because: You are watching all bug changes.
https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=42503 Andrew Fuerste-Henry <andrew@bywatersolutions.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Blocks|42643 | Referenced Bugs: https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=42643 [Bug 42643] [OMNIBUS] Assorted performance and stability work -- You are receiving this mail because: You are watching all bug changes.
participants (1)
-
bugzilla-daemon@bugs.koha-community.org