modoboa 2.4.9__py3-none-any.whl → 2.4.11__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- modoboa/admin/api/v1/serializers.py +8 -1
- modoboa/admin/api/v2/serializers.py +5 -3
- modoboa/admin/api/v2/tests.py +11 -1
- modoboa/admin/lib.py +1 -1
- modoboa/admin/models/mailbox.py +15 -13
- modoboa/admin/models/mxrecord.py +4 -0
- modoboa/admin/tests/test_import_.py +11 -11
- modoboa/core/api/v2/serializers.py +43 -15
- modoboa/core/api/v2/tests.py +18 -0
- modoboa/core/api/v2/urls.py +5 -0
- modoboa/core/api/v2/views.py +20 -1
- modoboa/core/app_settings.py +12 -1
- modoboa/core/fido2_auth.py +1 -2
- modoboa/core/management/commands/cleanlogs.py +9 -0
- modoboa/core/management/commands/load_initial_data.py +7 -15
- modoboa/core/migrations/0025_rename_user_email_is_active_core_user_email_c0c03f_idx.py +5 -5
- modoboa/core/tests/test_core.py +5 -0
- modoboa/core/utils.py +3 -0
- modoboa/dnstools/api/v2/serializers.py +9 -11
- modoboa/frontend_dist/assets/{AccountAliasForm-DO4IpT1M.js → AccountAliasForm-BV6KvTu6.js} +1 -1
- modoboa/frontend_dist/assets/{AccountEditView-BLA0CnKd.js → AccountEditView-DDOFyfBD.js} +1 -1
- modoboa/frontend_dist/assets/AccountLayout-rX51xgxT.js +1 -0
- modoboa/frontend_dist/assets/{AccountPasswordSubForm-D9xU4Or7.js → AccountPasswordSubForm-D9S6LaeH.js} +1 -1
- modoboa/frontend_dist/assets/AccountView-cmvaZNq3.js +1 -0
- modoboa/frontend_dist/assets/{AddressBook-CJM-ajGg.js → AddressBook-DCJxL8SU.js} +1 -1
- modoboa/frontend_dist/assets/AdminLayout-r0wfG2lO.js +1 -0
- modoboa/frontend_dist/assets/{AlarmsView-CpIExehE.js → AlarmsView-C0bqC4PA.js} +1 -1
- modoboa/frontend_dist/assets/{AliasEditView-Bu0rnLCQ.js → AliasEditView-DVoWoCGY.js} +1 -1
- modoboa/frontend_dist/assets/{AliasRecipientForm-CGuaOz6K.js → AliasRecipientForm-IOae6sjF.js} +1 -1
- modoboa/frontend_dist/assets/{AliasView-Cdwd7AvE.js → AliasView-DrONZXOh.js} +1 -1
- modoboa/frontend_dist/assets/{AuditTrailView-Dn1B2S23.js → AuditTrailView-OTkoZaMU.js} +1 -1
- modoboa/frontend_dist/assets/{CalendarView-CV-DAWtd.js → CalendarView-CqF4_Ui9.js} +1 -1
- modoboa/frontend_dist/assets/{ChoiceField-BS45Bjds.js → ChoiceField-DJ_c78Cm.js} +1 -1
- modoboa/frontend_dist/assets/{ComposeEmailForm-22JKKl9M.js → ComposeEmailForm-DO5_GB3e.js} +1 -1
- modoboa/frontend_dist/assets/ComposeEmailView-A91HCBsN.js +1 -0
- modoboa/frontend_dist/assets/{ConfirmDialog-BLu1kBWp.js → ConfirmDialog-BBcgdAnO.js} +1 -1
- modoboa/frontend_dist/assets/ConnectedLayout-1oRW-Rql.js +1 -0
- modoboa/frontend_dist/assets/{ConnectedLayout-AhwwAZvE.css → ConnectedLayout-Dvwmicnc.css} +1 -1
- modoboa/frontend_dist/assets/CreationForm-71YJbjsA.js +1 -0
- modoboa/frontend_dist/assets/CreationForm-HaiQhqwK.css +1 -0
- modoboa/frontend_dist/assets/DashboardView-CdLpSfUl.js +1 -0
- modoboa/frontend_dist/assets/{DashboardView-BLlMi6Qb.css → DashboardView-gwwVAPvt.css} +1 -1
- modoboa/frontend_dist/assets/DomainAdminList-BjC4KsqI.js +1 -0
- modoboa/frontend_dist/assets/DomainEditView-CQjKwYxl.js +1 -0
- modoboa/frontend_dist/assets/DomainTransportForm-C2xo0Yd7.js +1 -0
- modoboa/frontend_dist/assets/{DomainView-DCfSLvj-.css → DomainView-BDKoBFYr.css} +1 -1
- modoboa/frontend_dist/assets/DomainView-BhhuZI_N.js +5 -0
- modoboa/frontend_dist/assets/DomainsView-Cft4BP8Z.js +1 -0
- modoboa/frontend_dist/assets/{DomainsView-BUgJLN9o.css → DomainsView-DasJ0NdZ.css} +1 -1
- modoboa/frontend_dist/assets/{EmailField-phdi2rhQ.js → EmailField-C8umy0EU.js} +1 -1
- modoboa/frontend_dist/assets/{EmailView-B8eqs4jh.js → EmailView-ki7uEQPD.js} +1 -1
- modoboa/frontend_dist/assets/EmptyLayout-DaA1XH9n.js +1 -0
- modoboa/frontend_dist/assets/{FiltersView-Dq_lXOZQ.js → FiltersView-FYFZxG4B.js} +1 -1
- modoboa/frontend_dist/assets/ForwardEmailView-cUbnSYCF.js +1 -0
- modoboa/frontend_dist/assets/{HtmlEditor-KH0pmxrK.js → HtmlEditor-CJ9umKeO.js} +1 -1
- modoboa/frontend_dist/assets/IdentitiesView-0ziuQ5s-.css +1 -0
- modoboa/frontend_dist/assets/IdentitiesView-njNo8N5n.js +1 -0
- modoboa/frontend_dist/assets/{InformationView-DlwtlpvG.js → InformationView-D1h38POt.js} +1 -1
- modoboa/frontend_dist/assets/{LoadingData-BYDZn1pb.js → LoadingData-CYwX3Jpn.js} +1 -1
- modoboa/frontend_dist/assets/{LoginCallbackView-xSv3LV4_.js → LoginCallbackView-E01qkKn0.js} +1 -1
- modoboa/frontend_dist/assets/{LoginView-R5FtOIzW.js → LoginView-Cy4uFV9h.js} +1 -1
- modoboa/frontend_dist/assets/{MailboxView-esEw0ueS.js → MailboxView-IlrLWm_H.js} +1 -1
- modoboa/frontend_dist/assets/{MenuItems-Bck8ixGf.js → MenuItems-BAtHWzAE.js} +1 -1
- modoboa/frontend_dist/assets/MessagesView-OSpjixFq.js +1 -0
- modoboa/frontend_dist/assets/{MigrationsView-BHTt1qeH.js → MigrationsView-DKNOsVzF.js} +1 -1
- modoboa/frontend_dist/assets/Modoboa_RVB-BLEU-SANS-pKrnjsR_.png +0 -0
- modoboa/frontend_dist/assets/{ParametersForm-Bx5J7UU0.js → ParametersForm-BZM0QSvg.js} +1 -1
- modoboa/frontend_dist/assets/ParametersView-C4bXASiq.js +1 -0
- modoboa/frontend_dist/assets/ParametersView-CYXgNmc1.js +1 -0
- modoboa/frontend_dist/assets/{ProviderEditView-d2fBym_r.js → ProviderEditView-CyxCWTST.js} +1 -1
- modoboa/frontend_dist/assets/{ProviderGeneralForm-C9jkYxB7.js → ProviderGeneralForm-BYPjNHqB.js} +1 -1
- modoboa/frontend_dist/assets/ProvidersView-CxrMkRyk.js +1 -0
- modoboa/frontend_dist/assets/ReplyEmailView-Dkw9-N26.js +1 -0
- modoboa/frontend_dist/assets/{ResourcesForm-RZNnt_x1.js → ResourcesForm-CuUvrOdY.js} +1 -1
- modoboa/frontend_dist/assets/SettingsView-BxLJBFY0.js +6 -0
- modoboa/frontend_dist/assets/{StatisticsView-CABa0tgU.js → StatisticsView-BN7QsZMT.js} +1 -1
- modoboa/frontend_dist/assets/{TimeSerieChart-BjM9PGIT.js → TimeSerieChart-BMN8BeFZ.js} +1 -1
- modoboa/frontend_dist/assets/UserLayout-B6-JQg4F.js +1 -0
- modoboa/frontend_dist/assets/{VAlert-DSMD0lqo.js → VAlert-DIQTrRif.js} +1 -1
- modoboa/frontend_dist/assets/{VApp-D2FuKvLN.js → VApp-CpkYA7js.js} +1 -1
- modoboa/frontend_dist/assets/{VAutocomplete-CQ5LL_Nk.js → VAutocomplete-C4IpXyl8.js} +1 -1
- modoboa/frontend_dist/assets/{VAvatar-DbAmPjyA.js → VAvatar-Lpb-Dion.js} +1 -1
- modoboa/frontend_dist/assets/{VCard-BGXTuaE-.js → VCard-er_isjE_.js} +1 -1
- modoboa/frontend_dist/assets/{VCheckbox-BM1QzY5m.js → VCheckbox-D-u8JXP1.js} +1 -1
- modoboa/frontend_dist/assets/{VCheckboxBtn-DdHQE-gt.js → VCheckboxBtn-Dt810gWf.js} +1 -1
- modoboa/frontend_dist/assets/{VChip-Bm7znPZ6.js → VChip-B4iSpj8_.js} +1 -1
- modoboa/frontend_dist/assets/{VColorPicker-CYCnVu_Z.js → VColorPicker-BAjGDsXv.js} +1 -1
- modoboa/frontend_dist/assets/VContainer-DvTbsotR.js +1 -0
- modoboa/frontend_dist/assets/{VDataTable-Etpc99CI.js → VDataTable-4JRjbtgF.js} +1 -1
- modoboa/frontend_dist/assets/{VDataTableServer-BNNG6dBx.js → VDataTableServer-tIDT1m3-.js} +1 -1
- modoboa/frontend_dist/assets/{VDataTableVirtual-D9Km3t6e.js → VDataTableVirtual-BlnO18u_.js} +1 -1
- modoboa/frontend_dist/assets/{VDialog-0NvxFg1X.js → VDialog-Bk6EWNhz.js} +1 -1
- modoboa/frontend_dist/assets/{VExpansionPanels-eED_hKBs.js → VExpansionPanels-CwGtXDhr.js} +1 -1
- modoboa/frontend_dist/assets/{VFileInput-COIdDRxq.js → VFileInput-D1_7ZkO_.js} +1 -1
- modoboa/frontend_dist/assets/{VForm-DwwrfSN8.js → VForm-DAkW4nfy.js} +1 -1
- modoboa/frontend_dist/assets/{VMenu-CTyyRlRb.js → VMenu-BPFJwj2f.js} +1 -1
- modoboa/frontend_dist/assets/{VPicker-3NOHH3h1.js → VPicker-CfT82M8N.js} +1 -1
- modoboa/frontend_dist/assets/{VProgressCircular-1VQzh5PK.js → VProgressCircular-w75-3ogi.js} +1 -1
- modoboa/frontend_dist/assets/{VRadioGroup-CnRLqIcd.js → VRadioGroup-0j6DNC_k.js} +1 -1
- modoboa/frontend_dist/assets/{VRow-DgX40uiD.js → VRow-BF35mT1S.js} +1 -1
- modoboa/frontend_dist/assets/{VSelect-CeY-emKK.js → VSelect-Cs4ARbAS.js} +1 -1
- modoboa/frontend_dist/assets/{VSelectionControl-BYdVI5Q9.js → VSelectionControl-Dg-XyRRS.js} +1 -1
- modoboa/frontend_dist/assets/VSheet-Btq_Mu4s.js +1 -0
- modoboa/frontend_dist/assets/VSpacer-C7xukQmu.js +1 -0
- modoboa/frontend_dist/assets/{VSwitch-BSifpScd.js → VSwitch-Cs1NQrmk.js} +1 -1
- modoboa/frontend_dist/assets/{VTable-BeyU0Uhj.js → VTable-CNz2SGk4.js} +1 -1
- modoboa/frontend_dist/assets/{VTabs-Dzq8prKm.js → VTabs-B1fyVn4M.js} +1 -1
- modoboa/frontend_dist/assets/{VTextField-FBM5XwC5.js → VTextField-BdyvgvkG.js} +1 -1
- modoboa/frontend_dist/assets/{VTextarea-BwkVlXPS.js → VTextarea-DnOMpe0Q.js} +1 -1
- modoboa/frontend_dist/assets/{VToolbar-AQXTYlxS.js → VToolbar-BiCiBxBJ.js} +1 -1
- modoboa/frontend_dist/assets/{VWindowItem-p9SJ1V9Y.js → VWindowItem-ChWm_kz3.js} +1 -1
- modoboa/frontend_dist/assets/WebmailLayout-o4uEkp9e.js +1 -0
- modoboa/frontend_dist/assets/admin-o-HRGnmT.js +1 -0
- modoboa/frontend_dist/assets/{aliases-C-hC9If-.js → aliases-DDVeehyg.js} +1 -1
- modoboa/frontend_dist/assets/{contacts-DZDbAN4o.js → contacts-C84DY-Q1.js} +1 -1
- modoboa/frontend_dist/assets/{domains-CWdc-ODs.js → domains-Bgn4ixHL.js} +1 -1
- modoboa/frontend_dist/assets/{domains.store-B6sc48r9.js → domains.store-DTE-V7Y1.js} +1 -1
- modoboa/frontend_dist/assets/{filter-BSw3r225.js → filter-CnffiQAW.js} +1 -1
- modoboa/frontend_dist/assets/{forwardRefs-Cn7kyt_f.js → forwardRefs-Dvjn_Xq4.js} +1 -1
- modoboa/frontend_dist/assets/{global.store-IwCGIFoO.js → global.store-BaiD63EN.js} +1 -1
- modoboa/frontend_dist/assets/importExport-BlQYb0NO.js +1 -0
- modoboa/frontend_dist/assets/index-DuzUMVLM.js +1 -0
- modoboa/frontend_dist/assets/index-I1VDlN4g.js +984 -0
- modoboa/frontend_dist/assets/layout-D8ZJPiJ_.js +1 -0
- modoboa/frontend_dist/assets/{layout.store-CSmWF8Cf.js → layout.store-DkjrAoXt.js} +1 -1
- modoboa/frontend_dist/assets/logos-q8SEyAa4.js +1 -0
- modoboa/frontend_dist/assets/{logs-DIXCC1C0.js → logs-B7IJ7LBa.js} +1 -1
- modoboa/frontend_dist/assets/{parameters-u6VE5cq8.js → parameters-A6iBEYQq.js} +1 -1
- modoboa/frontend_dist/assets/{parameters.store-D4x8W7LS.js → parameters.store-BiXS4_6w.js} +1 -1
- modoboa/frontend_dist/assets/{permissions-C7XVO62l.js → permissions-CITHLHVg.js} +1 -1
- modoboa/frontend_dist/assets/{ssrBoot-B-x5LB2_.js → ssrBoot-AzTdjPjk.js} +1 -1
- modoboa/frontend_dist/assets/{tag-DCSJ2lri.js → tag-BnSYRTcD.js} +1 -1
- modoboa/frontend_dist/assets/transports-Dz7c6kIy.js +1 -0
- modoboa/frontend_dist/assets/{webmail-D2rioayn.js → webmail-CSH_3l6R.js} +1 -1
- modoboa/frontend_dist/config.json +1 -3
- modoboa/frontend_dist/index.html +1 -1
- modoboa/lib/redis.py +1 -5
- modoboa/locale/ja_JP/LC_MESSAGES/django.mo +0 -0
- modoboa/locale/ja_JP/LC_MESSAGES/django.po +122 -263
- modoboa/maillog/management/commands/logparser.py +1 -0
- modoboa/pdfcredentials/api/v2/serializers.py +17 -5
- modoboa/pdfcredentials/api/v2/tests.py +28 -0
- modoboa/pdfcredentials/app_settings.py +1 -1
- {modoboa-2.4.9.dist-info → modoboa-2.4.11.dist-info}/METADATA +2 -2
- {modoboa-2.4.9.dist-info → modoboa-2.4.11.dist-info}/RECORD +150 -147
- modoboa/frontend_dist/assets/AccountLayout-DMwguvdC.js +0 -1
- modoboa/frontend_dist/assets/AccountView-DegeD2uG.js +0 -1
- modoboa/frontend_dist/assets/AdminLayout-CTbzqJSq.js +0 -1
- modoboa/frontend_dist/assets/ComposeEmailView-B6Tbw3MS.js +0 -1
- modoboa/frontend_dist/assets/ConnectedLayout-CNzvhsb9.js +0 -1
- modoboa/frontend_dist/assets/CreationForm-ChgnxngD.js +0 -1
- modoboa/frontend_dist/assets/CreationForm-DLumMdUy.css +0 -1
- modoboa/frontend_dist/assets/DashboardView-CubvMqxt.js +0 -1
- modoboa/frontend_dist/assets/DomainAdminList-B0z8fRmf.js +0 -1
- modoboa/frontend_dist/assets/DomainEditView-DrZ9__pt.js +0 -1
- modoboa/frontend_dist/assets/DomainTransportForm-DEsm5zOa.js +0 -1
- modoboa/frontend_dist/assets/DomainView-RmJalGk7.js +0 -5
- modoboa/frontend_dist/assets/DomainsView-DzL9wtff.js +0 -1
- modoboa/frontend_dist/assets/EmptyLayout-FS-cJHKI.js +0 -1
- modoboa/frontend_dist/assets/ForwardEmailView-Lpw9sqB4.js +0 -1
- modoboa/frontend_dist/assets/IdentitiesView-7nHABB9n.js +0 -1
- modoboa/frontend_dist/assets/IdentitiesView-cvIq8q24.css +0 -1
- modoboa/frontend_dist/assets/MessagesView-Dyg8Y4bi.js +0 -1
- modoboa/frontend_dist/assets/ParametersView-Bkw5_CyJ.js +0 -1
- modoboa/frontend_dist/assets/ParametersView-CyAAGtfU.js +0 -1
- modoboa/frontend_dist/assets/ProvidersView-CjKsqSYV.js +0 -1
- modoboa/frontend_dist/assets/ReplyEmailView-DcUkD2HR.js +0 -1
- modoboa/frontend_dist/assets/SettingsView-TStQqZWd.js +0 -6
- modoboa/frontend_dist/assets/UserLayout-C6_Zjp6P.js +0 -1
- modoboa/frontend_dist/assets/VContainer-B8HjqhNU.js +0 -1
- modoboa/frontend_dist/assets/VSheet-C8P69LA8.js +0 -1
- modoboa/frontend_dist/assets/VSpacer-pLqQLLwB.js +0 -1
- modoboa/frontend_dist/assets/WebmailLayout-E3DJFEW2.js +0 -1
- modoboa/frontend_dist/assets/admin-B0fFM9gW.js +0 -1
- modoboa/frontend_dist/assets/importExport-B7mBfHxZ.js +0 -1
- modoboa/frontend_dist/assets/index-BCUdq-Zu.js +0 -852
- modoboa/frontend_dist/assets/index-CJ87ZZG1.js +0 -1
- modoboa/frontend_dist/assets/layout-CLqGxWz4.js +0 -1
- {modoboa-2.4.9.data → modoboa-2.4.11.data}/scripts/modoboa-admin.py +0 -0
- {modoboa-2.4.9.dist-info → modoboa-2.4.11.dist-info}/WHEEL +0 -0
- {modoboa-2.4.9.dist-info → modoboa-2.4.11.dist-info}/entry_points.txt +0 -0
- {modoboa-2.4.9.dist-info → modoboa-2.4.11.dist-info}/licenses/LICENSE +0 -0
- {modoboa-2.4.9.dist-info → modoboa-2.4.11.dist-info}/top_level.txt +0 -0
|
@@ -78,6 +78,7 @@ class LogParser:
|
|
|
78
78
|
# set up regular expression
|
|
79
79
|
self._date_expressions = [
|
|
80
80
|
r"(?P<month>\w+)\s+(?P<day>\d+)\s+(?P<hour>\d+):(?P<min>\d+):(?P<sec>\d+)(?P<eol>.*)", # noqa
|
|
81
|
+
r"(?P<year>\d+)-(?P<month>\d+)-(?P<day>\d+)T(?P<hour>\d+):(?P<min>\d+):(?P<sec>\d+)[\+\-]\d+:\d+(?P<eol>.*)", # noqa
|
|
81
82
|
r"(?P<year>\d+)-(?P<month>\d+)-(?P<day>\d+)T(?P<hour>\d+):(?P<min>\d+):(?P<sec>\d+)\.\d+[\+\-]\d+:\d+(?P<eol>.*)", # noqa
|
|
82
83
|
]
|
|
83
84
|
self._date_expressions = [re.compile(v) for v in self._date_expressions]
|
|
@@ -38,12 +38,16 @@ class PDFCredentialsSettingsSerializer(serializers.Serializer):
|
|
|
38
38
|
required=False, allow_blank=True, allow_null=True
|
|
39
39
|
)
|
|
40
40
|
include_connection_settings = serializers.BooleanField(default=False)
|
|
41
|
-
smtp_server_address = serializers.CharField(
|
|
41
|
+
smtp_server_address = serializers.CharField(
|
|
42
|
+
required=False, allow_blank=True, allow_null=True
|
|
43
|
+
)
|
|
42
44
|
smtp_server_port = serializers.IntegerField(default=587)
|
|
43
45
|
smtp_connection_security = serializers.ChoiceField(
|
|
44
46
|
choices=CONNECTION_SECURITY_MODES, default="starttls"
|
|
45
47
|
)
|
|
46
|
-
imap_server_address = serializers.CharField(
|
|
48
|
+
imap_server_address = serializers.CharField(
|
|
49
|
+
required=False, allow_blank=True, allow_null=True
|
|
50
|
+
)
|
|
47
51
|
imap_server_port = serializers.IntegerField(default=143)
|
|
48
52
|
imap_connection_security = serializers.ChoiceField(
|
|
49
53
|
choices=CONNECTION_SECURITY_MODES, default="starttls"
|
|
@@ -72,13 +76,21 @@ class PDFCredentialsSettingsSerializer(serializers.Serializer):
|
|
|
72
76
|
enabled_pdfcredentials is None
|
|
73
77
|
and param_tools.get_global_parameter("enabled_pdfcredentials")
|
|
74
78
|
)
|
|
79
|
+
errors = {}
|
|
75
80
|
if condition:
|
|
76
81
|
storage_dir = data.get("storage_dir", None)
|
|
77
82
|
if storage_dir is not None:
|
|
78
83
|
if not os.path.isdir(storage_dir):
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
84
|
+
errors["storage_dir"] = _("Directory not found.")
|
|
85
|
+
elif not os.access(storage_dir, os.W_OK):
|
|
86
|
+
errors["storage_dir"] = _("Directory is not writable")
|
|
87
|
+
include_connection_settings = data.get("include_connection_settings")
|
|
88
|
+
if include_connection_settings:
|
|
89
|
+
for field in ["smtp_server_address", "imap_server_address"]:
|
|
90
|
+
if not data.get(field):
|
|
91
|
+
errors[field] = _("This field is required.")
|
|
92
|
+
if errors:
|
|
93
|
+
raise serializers.ValidationError(errors)
|
|
82
94
|
return data
|
|
83
95
|
|
|
84
96
|
|
|
@@ -190,3 +190,31 @@ class PDFCredentialViewTestCase(ModoAPITestCase):
|
|
|
190
190
|
data["enabled_pdfcredentials"] = False
|
|
191
191
|
resp = self.client.put(url, data, format="json")
|
|
192
192
|
self.assertEqual(resp.status_code, 200)
|
|
193
|
+
|
|
194
|
+
def test_optional_settings(self):
|
|
195
|
+
url = reverse("v2:parameter-global-detail", args=["pdfcredentials"])
|
|
196
|
+
path = f"{self.workdir}/credentials"
|
|
197
|
+
os.makedirs(path)
|
|
198
|
+
data = {
|
|
199
|
+
"enabled_pdfcredentials": True,
|
|
200
|
+
"storage_dir": path,
|
|
201
|
+
"webpanel_url": "http://localhost",
|
|
202
|
+
}
|
|
203
|
+
resp = self.client.put(url, data, format="json")
|
|
204
|
+
self.assertEqual(resp.status_code, 200)
|
|
205
|
+
|
|
206
|
+
data["include_connection_settings"] = True
|
|
207
|
+
resp = self.client.put(url, data, format="json")
|
|
208
|
+
self.assertEqual(resp.status_code, 400)
|
|
209
|
+
errors = resp.json()
|
|
210
|
+
self.assertEqual(errors["smtp_server_address"][0], "This field is required.")
|
|
211
|
+
self.assertEqual(errors["imap_server_address"][0], "This field is required.")
|
|
212
|
+
|
|
213
|
+
data.update(
|
|
214
|
+
{
|
|
215
|
+
"smtp_server_address": "mail.localhost",
|
|
216
|
+
"imap_server_address": "mail.localhost",
|
|
217
|
+
}
|
|
218
|
+
)
|
|
219
|
+
resp = self.client.put(url, data, format="json")
|
|
220
|
+
self.assertEqual(resp.status_code, 200)
|
|
@@ -121,7 +121,7 @@ PDF_CREDENTIALS_PARAMETERS_STRUCT = collections.OrderedDict(
|
|
|
121
121
|
"smtp_server_address",
|
|
122
122
|
{
|
|
123
123
|
"label": _("SMTP server address"),
|
|
124
|
-
"display": "include_connection_settings=
|
|
124
|
+
"display": "include_connection_settings=true",
|
|
125
125
|
"help_text": _(
|
|
126
126
|
"Address of the SMTP server (hostname or IP)"
|
|
127
127
|
),
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: modoboa
|
|
3
|
-
Version: 2.4.
|
|
3
|
+
Version: 2.4.11
|
|
4
4
|
Summary: Mail hosting made simple
|
|
5
5
|
Author-email: Antoine Nguyen <tonio@ngyn.org>
|
|
6
6
|
License: ISC License
|
|
@@ -40,7 +40,7 @@ Classifier: Topic :: Internet :: WWW/HTTP
|
|
|
40
40
|
Requires-Python: >=3.10
|
|
41
41
|
Description-Content-Type: text/x-rst
|
|
42
42
|
License-File: LICENSE
|
|
43
|
-
Requires-Dist: django==5.2.
|
|
43
|
+
Requires-Dist: django==5.2.5
|
|
44
44
|
Requires-Dist: django-phonenumber-field[phonenumbers]==8.1.0
|
|
45
45
|
Requires-Dist: django-reversion==5.1.0
|
|
46
46
|
Requires-Dist: django-xforwardedfor-middleware==2.0
|