This helpful script could provide better output instead of just exploding. For instance, it could display the valid values for branchcode and categorycode in the event of a broken FK while creating the patron.
Created attachment 163118 [details] [review] Bug 36309: Make create_superlibrarian.pl output more useful In situations in which you are not familiar with all the Koha settings, and table structure, the fact this script just fails telling there's a broken FK is just not practical. We should capture those exceptions and display a useful message instead. This script does that. It adds some validations and some exception handling too. It prints a nice message about the bad value the user passed, and the valid values too! To test: 1. Run this on a fresh KTD: $ ktd --shell k$ perl misc/devel/create_superlibrarian.pl \ --userid tcohen \ --password tomasito \ --cardnumber 123456789 \ --categorycode POT \ --branchcode ATO => FAIL: It explodes with a MySQL exception message! 2. Apply this patch 3. Repeat 1 => SUCCESS: It tells you which value is wrong and what values you can pick to make the command work 4. Pick a valid value, and repeat => SUCCESS: Now the other value is wrong, a nice message is displayed! 5. Fix with a valid value and repeat => SUCCESS: Patron created! 6. Sign off :-D
Comment for QA: I'm not 100% happy with our exception system as there's no consistent way to implement this without several manual checks and disambiguations... and disabling STDERR warns at DBIx::Class level to avoid noise for the end user. That said, it is a discussion to have on another report. And the extra checks inside a transaction I implemented here cause no harm either. I think the benefits are worth the (tiny) extra overhead.
Created attachment 163124 [details] [review] Bug 36309: Make create_superlibrarian.pl output more useful In situations in which you are not familiar with all the Koha settings, and table structure, the fact this script just fails telling there's a broken FK is just not practical. We should capture those exceptions and display a useful message instead. This script does that. It adds some validations and some exception handling too. It prints a nice message about the bad value the user passed, and the valid values too! To test: 1. Run this on a fresh KTD: $ ktd --shell k$ perl misc/devel/create_superlibrarian.pl \ --userid tcohen \ --password tomasito \ --cardnumber 123456789 \ --categorycode POT \ --branchcode ATO => FAIL: It explodes with a MySQL exception message! 2. Apply this patch 3. Repeat 1 => SUCCESS: It tells you which value is wrong and what values you can pick to make the command work 4. Pick a valid value, and repeat => SUCCESS: Now the other value is wrong, a nice message is displayed! 5. Fix with a valid value and repeat => SUCCESS: Patron created! 6. Sign off :-D Signed-off-by: David Nind <david@davidnind.com>
Testing notes (using KTD): 1. Before the patch, the message was: Invalid parameter passed, categorycode=POT does not exist 2. After patch - no changes to parameters: ERROR: 'ATO' is not valid for the 'branchcode' field Possible values are: CPL, FFL, FPL, FRL, IPT, LPL, MPL, PVL, RPL, SPL, TPL, UPL 3. After patch - change branchcode to valid value: ERROR: 'ATO' is not valid for the 'branchcode' field Possible values are: CPL, FFL, FPL, FRL, IPT, LPL, MPL, PVL, RPL, SPL, TPL, UPL 4. After path - change categorycode to valid value: no output, successfully adds user
Created attachment 163363 [details] [review] Bug 36309: Make create_superlibrarian.pl output more useful In situations in which you are not familiar with all the Koha settings, and table structure, the fact this script just fails telling there's a broken FK is just not practical. We should capture those exceptions and display a useful message instead. This script does that. It adds some validations and some exception handling too. It prints a nice message about the bad value the user passed, and the valid values too! To test: 1. Run this on a fresh KTD: $ ktd --shell k$ perl misc/devel/create_superlibrarian.pl \ --userid tcohen \ --password tomasito \ --cardnumber 123456789 \ --categorycode POT \ --branchcode ATO => FAIL: It explodes with a MySQL exception message! 2. Apply this patch 3. Repeat 1 => SUCCESS: It tells you which value is wrong and what values you can pick to make the command work 4. Pick a valid value, and repeat => SUCCESS: Now the other value is wrong, a nice message is displayed! 5. Fix with a valid value and repeat => SUCCESS: Patron created! 6. Sign off :-D Signed-off-by: David Nind <david@davidnind.com> Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Pushed for 24.05! Well done everyone, thank you!
Not backported to 23.11.x