diff --git a/frontend/src/components/admin/imap_migration/ProviderCreationForm.vue b/frontend/src/components/admin/imap_migration/ProviderCreationForm.vue index 727f31f4e..ccc81c0ae 100644 --- a/frontend/src/components/admin/imap_migration/ProviderCreationForm.vue +++ b/frontend/src/components/admin/imap_migration/ProviderCreationForm.vue @@ -77,6 +77,7 @@ const provider = ref({ }) // forms ref +const form = ref() const general = ref() const associated = ref() @@ -104,13 +105,12 @@ function getForm(step) { } function getVFormRef(step) { - console.log(provider.value) return formStepsComponents[step.name].value.vFormRef } function validateProvider() {} -function submit() { +async function submit() { const data = { ...provider.value } data.domains = [] for (const domain of provider.value.domains) { @@ -123,10 +123,13 @@ function submit() { data.domains.push(domain) } } - providersStore.createProvider(data).then(() => { + try { + await providersStore.createProvider(data) busStore.displayNotification({ msg: $gettext('Provider created') }) close() - }) + } finally { + form.value.working = false + } } diff --git a/frontend/src/components/admin/imap_migration/ProvidersList.vue b/frontend/src/components/admin/imap_migration/ProvidersList.vue index a31d70616..006d36373 100644 --- a/frontend/src/components/admin/imap_migration/ProvidersList.vue +++ b/frontend/src/components/admin/imap_migration/ProvidersList.vue @@ -10,7 +10,7 @@ item-value="name" single-expand show-select - @click:row="(item, slot) => slot.expand(!slot.isExpanded)" + @click:row="expandRow" > @@ -41,7 +41,7 @@ @@ -53,21 +53,31 @@ - {{ item.domains.length }} associated domain(s) + {{ + $ngettext( + '%{count} associated domain', + '%{count} associated domains', + item.domains.length, + { count: item.domains.length } + ) + }} - No associated domain + {{ $gettext('No associated domain') }} - - - - - {{ domain.name }} --> {{ domain.new_domain.name }} - - - {{ domain.name }} --> {{ domain.name }} - - - + + + + + + {{ domain.name }} --> + {{ domainsStore.getDomainName(domain.new_domain) }} + + + {{ domain.name }} --> {{ domain.name }} + + + + @@ -82,13 +92,14 @@ diff --git a/frontend/src/components/admin/imap_migration/form_steps/ProviderAssociatedForm.vue b/frontend/src/components/admin/imap_migration/form_steps/ProviderAssociatedForm.vue index bef48438b..62a8087c6 100644 --- a/frontend/src/components/admin/imap_migration/form_steps/ProviderAssociatedForm.vue +++ b/frontend/src/components/admin/imap_migration/form_steps/ProviderAssociatedForm.vue @@ -11,7 +11,7 @@ - {{ domain.name }} --> {{ getDomainName(domain.new_domain) }} + {{ domain.name }} --> {{ domainsStore.getDomainName(domain.new_domain) }} {{ domain.name }} @@ -42,13 +42,14 @@ - diff --git a/frontend/src/stores/domains.store.js b/frontend/src/stores/domains.store.js index e5b48caac..37e0bc9d1 100644 --- a/frontend/src/stores/domains.store.js +++ b/frontend/src/stores/domains.store.js @@ -22,9 +22,17 @@ export const useDomainsStore = defineStore('domains', () => { } } + function getDomainName(domainId) { + if (typeof domainId === 'object') { + return domainId.name + } + return domains.value.find((domain) => domain.pk === domainId).name + } + return { domainsLoaded, domains, + getDomainName, getDomains, $reset, } diff --git a/modoboa/imap_migration/api/v2/serializers.py b/modoboa/imap_migration/api/v2/serializers.py index e94f67982..0af2ae3df 100644 --- a/modoboa/imap_migration/api/v2/serializers.py +++ b/modoboa/imap_migration/api/v2/serializers.py @@ -35,7 +35,6 @@ class EmailProviderDomainSerializer(serializers.ModelSerializer): id = serializers.IntegerField(required=False) class Meta: - extra_kwargs = {"name": {"validators": []}} fields = ("id", "name", "new_domain") model = models.EmailProviderDomain