Bug 33408: Fetch sysprefs from svc/config/systempreferences

It will be easier to mock/set them from cypress tests.

Sponsored-by: BULAC - http://www.bulac.fr/
Signed-off-by: Pedro Amorim <pedro.amorim@ptfs-europe.com>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
This commit is contained in:
Jonathan Druart 2023-04-04 15:51:51 +02:00 committed by Tomas Cohen Arazi
parent e102daaf31
commit 9be7dab4a1
Signed by: tomascohen
GPG key ID: 0A272EA1B2F3C15F
3 changed files with 116 additions and 50 deletions

View file

@ -1,5 +1,5 @@
<template>
<div v-if="ERMModule">
<div v-if="initialized">
<div id="sub-header">
<Breadcrumb />
<Help />
@ -140,8 +140,6 @@ export default {
vendorStore,
AVStore,
setError,
erm_providers,
ERMModule,
loading,
loaded,
}
@ -149,62 +147,96 @@ export default {
data() {
return {
component: "agreement",
initialized: false,
ERMModule: null,
erm_providers: [],
}
},
beforeCreate() {
if (!this.ERMModule) {
return this.setError(
this.$__(
'The e-resource management module is disabled, turn on <a href="/cgi-bin/koha/admin/preferences.pl?tab=&op=search&searchfield=ERMModule">ERMModule</a> to use it'
),
false
)
}
this.loading()
const acq_client = APIClient.acquisition
acq_client.vendors.getAll().then(
vendors => {
this.vendorStore.vendors = vendors
this.initialized = true
},
error => {}
)
const fetch_config = () => {
let promises = []
const av_client = APIClient.authorised_values
const authorised_values = {
av_agreement_statuses: "ERM_AGREEMENT_STATUS",
av_agreement_closure_reasons: "ERM_AGREEMENT_CLOSURE_REASON",
av_agreement_renewal_priorities: "ERM_AGREEMENT_RENEWAL_PRIORITY",
av_user_roles: "ERM_USER_ROLES",
av_license_types: "ERM_LICENSE_TYPE",
av_license_statuses: "ERM_LICENSE_STATUS",
av_agreement_license_statuses: "ERM_AGREEMENT_LICENSE_STATUS",
av_agreement_license_location: "ERM_AGREEMENT_LICENSE_LOCATION",
av_package_types: "ERM_PACKAGE_TYPE",
av_package_content_types: "ERM_PACKAGE_CONTENT_TYPE",
av_title_publication_types: "ERM_TITLE_PUBLICATION_TYPE",
const acq_client = APIClient.acquisition
promises.push(
acq_client.vendors.getAll().then(
vendors => {
this.vendorStore.vendors = vendors
},
error => {}
)
)
const av_client = APIClient.authorised_values
const authorised_values = {
av_agreement_statuses: "ERM_AGREEMENT_STATUS",
av_agreement_closure_reasons: "ERM_AGREEMENT_CLOSURE_REASON",
av_agreement_renewal_priorities:
"ERM_AGREEMENT_RENEWAL_PRIORITY",
av_user_roles: "ERM_USER_ROLES",
av_license_types: "ERM_LICENSE_TYPE",
av_license_statuses: "ERM_LICENSE_STATUS",
av_agreement_license_statuses: "ERM_AGREEMENT_LICENSE_STATUS",
av_agreement_license_location: "ERM_AGREEMENT_LICENSE_LOCATION",
av_package_types: "ERM_PACKAGE_TYPE",
av_package_content_types: "ERM_PACKAGE_CONTENT_TYPE",
av_title_publication_types: "ERM_TITLE_PUBLICATION_TYPE",
}
let av_cat_array = Object.keys(authorised_values).map(function (
av_cat
) {
return '"' + authorised_values[av_cat] + '"'
})
promises.push(
av_client.values
.getCategoriesWithValues(av_cat_array)
.then(av_categories => {
Object.entries(authorised_values).forEach(
([av_var, av_cat]) => {
const av_match = av_categories.find(
element => element.category_name == av_cat
)
this.AVStore[av_var] =
av_match.authorised_values
}
)
})
)
promises.push(
sysprefs_client.sysprefs.get("ERMProviders").then(
providers => {
this.erm_providers = providers.value.split(",")
},
error => {}
)
)
return Promise.all(promises)
}
let av_cat_array = Object.keys(authorised_values).map(function (
av_cat
) {
return '"' + authorised_values[av_cat] + '"'
})
av_client.values
.getCategoriesWithValues(av_cat_array)
.then(av_categories => {
Object.entries(authorised_values).forEach(
([av_var, av_cat]) => {
const av_match = av_categories.find(
element => element.category_name == av_cat
)
this.AVStore[av_var] = av_match.authorised_values
}
)
const sysprefs_client = APIClient.sysprefs
sysprefs_client.sysprefs
.get("ERMModule")
.then(value => {
this.ERMModule = value
if (!this.ERMModule) {
this.loaded()
return this.setError(
this.$__(
'The e-resource management module is disabled, turn on <a href="/cgi-bin/koha/admin/preferences.pl?tab=&op=search&searchfield=ERMModule">ERMModule</a> to use it'
),
false
)
}
return fetch_config()
})
.then(() => {
this.loaded()
this.initialized = true
})
.then(() => this.loaded())
},
components: {
Breadcrumb,

View file

@ -9,6 +9,10 @@ export class SysprefAPIClient extends HttpClient {
get sysprefs() {
return {
get: (variable) =>
this.get({
endpoint: `/?pref=${variable}`,
}),
update: (variable, value) =>
this.post({
endpoint: "",

View file

@ -70,6 +70,35 @@ sub set_preference {
C4::Service->return_success( $response );
}
=head2 get_preference
=over 4
=item url path
GET /svc/config/systempreferences/$preference
=item url query
preference=$pref_name
=back
Used to get a single system preference.
=cut
sub get_preference {
my $preference = scalar $query->param('pref');
my $value = C4::Context->preference( $preference );
$response->param( value => $value );
C4::Service->return_success( $response );
}
=head2 set_preferences
=over 4
@ -109,4 +138,5 @@ sub set_preferences {
C4::Service->dispatch(
[ 'POST /([A-Za-z0-9_-]+)', [ 'value' ], \&set_preference ],
[ 'POST /', [], \&set_preferences ],
[ 'GET /', [ 'pref' ], \&get_preference],
);