From: Bill Erickson Date: Wed, 25 Nov 2020 16:57:03 +0000 (-0800) Subject: LP1901930 SIP mediator continued X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=e3b14f1373758b5a38bb1f2d72e20d96b2bc1f91;p=working%2FEvergreen.git LP1901930 SIP mediator continued Signed-off-by: Bill Erickson --- diff --git a/Open-ILS/examples/opensrf_core.xml.example b/Open-ILS/examples/opensrf_core.xml.example index db89f5602a..8bd4d520eb 100644 --- a/Open-ILS/examples/opensrf_core.xml.example +++ b/Open-ILS/examples/opensrf_core.xml.example @@ -40,6 +40,7 @@ Example OpenSRF bootstrap configuration file for Evergreen open-ils.vandelay open-ils.serial open-ils.ebook_api + open-ils.sip2 diff --git a/Open-ILS/src/eg2/src/app/share/fm-editor/fm-editor.component.ts b/Open-ILS/src/eg2/src/app/share/fm-editor/fm-editor.component.ts index 4b6ee5ef4e..54553a4e4a 100644 --- a/Open-ILS/src/eg2/src/app/share/fm-editor/fm-editor.component.ts +++ b/Open-ILS/src/eg2/src/app/share/fm-editor/fm-editor.component.ts @@ -184,7 +184,7 @@ export class FmRecordEditorComponent // custom function for munging the record before it gets saved; // will get passed mode and the record itself - @Input() preSave: Function; + @Input() preSave: (mode: string, recToSave: IdlObject) => void; // recordId and record getters and setters. // Note that setting the this.recordId to NULL does not clear the diff --git a/Open-ILS/src/eg2/src/app/staff/admin/server/sip/account.component.html b/Open-ILS/src/eg2/src/app/staff/admin/server/sip/account.component.html index 7fcfcc9b51..ba6b1418f5 100644 --- a/Open-ILS/src/eg2/src/app/staff/admin/server/sip/account.component.html +++ b/Open-ILS/src/eg2/src/app/staff/admin/server/sip/account.component.html @@ -3,7 +3,7 @@ @@ -52,16 +52,17 @@ fieldOrder="sip_username,setting_group,usr,workstation,transient,activity_who,enabled" [fieldOptions]="{ setting_group:{customTemplate:{template:grpTemplate}}, - usr:{customTemplate:{template:usrTemplate}} - }" + usr:{customTemplate:{template:usrTemplate}}}" + [preSave]="accountPreSave" (recordSaved)="accountSaved()" [recordId]="accountId">
    -
  • Save account changes before modifying settings.
  • +
  • Save account changes before modifying individual settings.
  • Setting values must be entered as valid JSON.
  • -
  • The "Default Settings" settings group cannot be modified
  • +
  • The "Default Settings" group cannot be modified.
  • +
  • The same "SIP Institution" value may be used for multiple groups.
diff --git a/Open-ILS/src/eg2/src/app/staff/admin/server/sip/account.component.ts b/Open-ILS/src/eg2/src/app/staff/admin/server/sip/account.component.ts index b37e38ae5d..856ed568b4 100644 --- a/Open-ILS/src/eg2/src/app/staff/admin/server/sip/account.component.ts +++ b/Open-ILS/src/eg2/src/app/staff/admin/server/sip/account.component.ts @@ -29,6 +29,7 @@ export class SipAccountComponent implements OnInit { usrId: number; settingsSource: GridDataSource = new GridDataSource(); deleteGroupAccounts: IdlObject[] = []; + accountPreSave: (mode: string, account: IdlObject) => void; @ViewChild('cloneDialog') cloneDialog: FmRecordEditorComponent; @ViewChild('settingDialog') settingDialog: FmRecordEditorComponent; @@ -80,7 +81,15 @@ export class SipAccountComponent implements OnInit { {setting_group: this.account.setting_group().id()}, {order_by: orderBy}, ); - } + }; + + this.accountPreSave = (mode: string, account: IdlObject) => { + if (mode === 'update') { + // Migrate the setting group selected in our local group + // combobox to the object to be saved. + account.setting_group(this.account.setting_group().id()); + } + }; } @@ -149,7 +158,7 @@ export class SipAccountComponent implements OnInit { modified.ischanged(true); this.pcrud.autoApply(settings.concat(modified)).toPromise() - .then(_ => this.loadAccount()); + .then(_ => this.refreshAccount()); }); } @@ -157,48 +166,15 @@ export class SipAccountComponent implements OnInit { this.deleteGroupDialog.open().subscribe( ok => { - console.log('group deleted'); + if (ok) { + this.refreshAccount(); + } } ); - - - /* - const grp = this.account.setting_group(); - - // Find accounts that use this group - this.pcrud.search('sipacc', {setting_group: grp.id()}, {atomic: true}) - - // Confirm deletion - .pipe(switchMap(accounts => { - this.deleteGroupAccounts = accounts; - return this.confirmDelete.open(); - }) - - // Modify accounts that use this group so the delete can continue - .pipe(switchMap(approved => { - if (!approved) { return of(); } - - // Clone the accounts so we can avoid modifying the currently - // edited account, which can lead to fleshing-related JS errors - const clones = accounts.map(acc => { - const one = this.idl.clone(acc); - one.setting_group(1); // defaults - return one; - }); - - return this.pcrud.update(clones); - }) - .pipe(switchMap(result => { - if (!result) { return of(); } - return this.pcrud.remove(grp); - }) - .pipe(tap(result => { - if (result) - */ } accountSaved() { - this.loadAccount(); + this.refreshAccount(); } editFirstSetting(rows: any) { @@ -207,23 +183,23 @@ export class SipAccountComponent implements OnInit { } } + refreshAccount() { + this.loadAccount().subscribe(_ => { + setTimeout(() => { + if (this.settingGrid) { + this.settingGrid.reload(); + } + }); + }); + } + editSetting(row: any) { // Default Settings group is read-only if (row.setting_group() === 1) { return; } this.settingDialog.record = this.idl.clone(row); this.settingDialog.open().subscribe( - ok => { - // Easier to simply refresh the whole account. - // After refresh, force a grid reload. - this.loadAccount().subscribe(ok2 => { - setTimeout(() => { - if (this.settingGrid) { - this.settingGrid.reload(); - } - }); - }); - }, + ok => this.refreshAccount(), err => {} // todo toast ); } diff --git a/Open-ILS/src/eg2/src/app/staff/admin/server/sip/delete-group-dialog.component.html b/Open-ILS/src/eg2/src/app/staff/admin/server/sip/delete-group-dialog.component.html index d1eb51bc5d..b8ae758be4 100644 --- a/Open-ILS/src/eg2/src/app/staff/admin/server/sip/delete-group-dialog.component.html +++ b/Open-ILS/src/eg2/src/app/staff/admin/server/sip/delete-group-dialog.component.html @@ -30,7 +30,7 @@ diff --git a/Open-ILS/src/eg2/src/app/staff/admin/server/sip/delete-group-dialog.component.ts b/Open-ILS/src/eg2/src/app/staff/admin/server/sip/delete-group-dialog.component.ts index 1912a99584..1c43fabd46 100644 --- a/Open-ILS/src/eg2/src/app/staff/admin/server/sip/delete-group-dialog.component.ts +++ b/Open-ILS/src/eg2/src/app/staff/admin/server/sip/delete-group-dialog.component.ts @@ -30,7 +30,7 @@ export class DeleteGroupDialogComponent extends DialogComponent implements OnIni constructor( private modal: NgbModal, - private idl: IdlService, + private auth: AuthService, private net: NetService ) { super(modal); @@ -38,7 +38,6 @@ export class DeleteGroupDialogComponent extends DialogComponent implements OnIni ngOnInit() { this.onOpen$.subscribe(_ => { - console.log('my group', this.group); this.trimmedSettingGroups = this.settingGroups.filter( entry => entry.id !== this.group.id()); }); @@ -49,5 +48,12 @@ export class DeleteGroupDialogComponent extends DialogComponent implements OnIni this.targetGroup = entry.id; } } + + doDelete() { + this.net.request('open-ils.sip2', + 'open-ils.sip2.setting_group.delete', + this.auth.token(), this.group.id(), this.targetGroup + ).subscribe(ok => this.close((Number(ok) === 1))); + } } diff --git a/Open-ILS/src/perlmods/lib/OpenILS/Application/SIP2/Admin.pm b/Open-ILS/src/perlmods/lib/OpenILS/Application/SIP2/Admin.pm index fc51337c9b..e1f201f83d 100644 --- a/Open-ILS/src/perlmods/lib/OpenILS/Application/SIP2/Admin.pm +++ b/Open-ILS/src/perlmods/lib/OpenILS/Application/SIP2/Admin.pm @@ -40,11 +40,12 @@ __PACKAGE__->register_method( } ); -sub dispatch_sip2_request { +sub delete_setting_group { my ($self, $client, $auth, $del_grp_id, $xfer_grp_id) = @_; $xfer_grp_id ||= 1; # Defaults Group my $e = new_editor(authtoken => $auth, xact => 1); + return $e->die_event unless $e->checkauth; return $e->die_event unless $e->allowed('SIP_ADMIN'); return $e->die_event unless @@ -58,7 +59,8 @@ sub dispatch_sip2_request { } # note: sip.setting objects are deleted via cascade - return $e->die_event unless $e->delete_sip_setting_group($grp); + return $e->die_event + unless $e->delete_sip_setting_group($grp) && $e->commit; return 1; } diff --git a/Open-ILS/src/sql/Pg/upgrade/XXXX.schema.sip-config.sql b/Open-ILS/src/sql/Pg/upgrade/XXXX.schema.sip-config.sql index 3835e8f527..16e08cfb9f 100644 --- a/Open-ILS/src/sql/Pg/upgrade/XXXX.schema.sip-config.sql +++ b/Open-ILS/src/sql/Pg/upgrade/XXXX.schema.sip-config.sql @@ -123,6 +123,12 @@ VALUES ( 'Checkout override copy alert message', 'sipset', 'description') ), ( + 1, 'checkout.override.COPY_NOT_AVAILABLE', 'true', + oils_i18n_gettext( + (SELECT id FROM sip.setting WHERE name = 'checkout.override.COPY_NOT_AVAILABLE'), + 'Checkout override copy not available message', + 'sipset', 'description') +), ( 1, 'checkin.override.COPY_ALERT_MESSAGE', 'true', oils_i18n_gettext( (SELECT id FROM sip.setting WHERE name = 'checkin.override.COPY_ALERT_MESSAGE'),