From ec73504fd69762519981547ba9e5b83e72fd21dc Mon Sep 17 00:00:00 2001 From: Spitap Date: Fri, 21 Jul 2023 14:52:01 +0200 Subject: [PATCH] Updated sendonly forms --- .../src/components/identities/AccountCreationForm.vue | 5 +++++ frontend/src/components/identities/AccountForm.vue | 5 +++++ modoboa/admin/api/v1/serializers.py | 2 +- modoboa/admin/forms/account.py | 9 ++++++++- modoboa/admin/models/mailbox.py | 2 ++ modoboa/admin/templates/admin/mailform.html | 1 + 6 files changed, 22 insertions(+), 2 deletions(-) diff --git a/frontend/src/components/identities/AccountCreationForm.vue b/frontend/src/components/identities/AccountCreationForm.vue index dcfcad41a..018ea2788 100644 --- a/frontend/src/components/identities/AccountCreationForm.vue +++ b/frontend/src/components/identities/AccountCreationForm.vue @@ -107,6 +107,11 @@ export default { { key: this.$gettext('Message sending limit'), value: this.account.mailbox.message_limit + }, + { + key: this.$gettext('Send only account'), + value: this.account.mailbox.is_send_only, + type: 'yesno' } ] }, diff --git a/frontend/src/components/identities/AccountForm.vue b/frontend/src/components/identities/AccountForm.vue index 480b5bb72..260064f9c 100644 --- a/frontend/src/components/identities/AccountForm.vue +++ b/frontend/src/components/identities/AccountForm.vue @@ -88,6 +88,11 @@ Quota: {{ account.mailbox.quota }} + + Send only + mdi-check-circle-outline + mdi-close-circle-outline + diff --git a/modoboa/admin/api/v1/serializers.py b/modoboa/admin/api/v1/serializers.py index 545028bdf..c9d2ea9f3 100644 --- a/modoboa/admin/api/v1/serializers.py +++ b/modoboa/admin/api/v1/serializers.py @@ -156,7 +156,7 @@ class MailboxSerializer(serializers.ModelSerializer): model = models.Mailbox fields = ( "pk", "full_address", "use_domain_quota", "quota", "message_limit", - "quota_usage" + "quota_usage", "is_send_only" ) def get_quota_usage(self, mb) -> int: diff --git a/modoboa/admin/forms/account.py b/modoboa/admin/forms/account.py index fac6c1e32..d08d3fff4 100644 --- a/modoboa/admin/forms/account.py +++ b/modoboa/admin/forms/account.py @@ -249,6 +249,11 @@ class AccountFormMail(forms.Form, DynamicForm): help_text=gettext_lazy( "Number of messages this mailbox can send per day") ) + is_send_only = forms.BooleanField( + required=False, + help_text=gettext_lazy( + "Block IMAP connection and incoming mails for this mailbox") + ) aliases = lib_fields.UTF8AndEmptyUserEmailField( label=gettext_lazy("Alias(es)"), required=False, @@ -296,6 +301,7 @@ class AccountFormMail(forms.Form, DynamicForm): self.fields["quota"].initial = self.mb.quota if self.mb.message_limit: self.fields["message_limit"].initial = self.mb.message_limit + self.fields["is_send_only"].initial = self.mb.is_send_only self.fields["create_alias_with_old_address"].initial = ( params["create_alias_on_mbox_rename"] ) @@ -384,7 +390,8 @@ class AccountFormMail(forms.Form, DynamicForm): self.mb = models.Mailbox( address=self.locpart, domain=self.domain, user=account, use_domain_quota=self.cleaned_data["quota_act"], - message_limit=self.cleaned_data.get("message_limit") + message_limit=self.cleaned_data.get("message_limit"), + is_send_only=self.cleaned_data.get("is_send_only", False) ) override_rules = ( user.is_superuser or diff --git a/modoboa/admin/models/mailbox.py b/modoboa/admin/models/mailbox.py index fd8d4bdc9..0cdf01e69 100644 --- a/modoboa/admin/models/mailbox.py +++ b/modoboa/admin/models/mailbox.py @@ -326,6 +326,8 @@ class Mailbox(mixins.MessageLimitMixin, AdminObject): self.set_quota(values["quota"], override_rules) if "message_limit" in values: self.message_limit = values["message_limit"] + if "is_send_only" in values: + self.is_send_only = values["is_send_only"] if newaddress: self.rename(local_part, domain) self.save() diff --git a/modoboa/admin/templates/admin/mailform.html b/modoboa/admin/templates/admin/mailform.html index 253214f7b..6d10646b7 100644 --- a/modoboa/admin/templates/admin/mailform.html +++ b/modoboa/admin/templates/admin/mailform.html @@ -6,5 +6,6 @@ {% endif %} {% include "common/generic_field.html" with field=form.quota help_display_mode="tooltip" label_width="col-sm-4" activator=True activator_value=form.quota_act.value deactivate_if_empty=False activator_label=_("Use domain default value") activator_size="col-sm-5" %} {% render_field form.message_limit %} +{% render_field form.is_send_only %} {% render_fields_group form "aliases" %} {% render_fields_group form "senderaddress" %}