modoboa 2.5.1__py3-none-any.whl → 2.6.1__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.
Files changed (202) hide show
  1. modoboa/admin/api/v2/serializers.py +6 -1
  2. modoboa/admin/api/v2/tests.py +16 -0
  3. modoboa/admin/api/v2/viewsets.py +11 -1
  4. modoboa/admin/app_settings.py +39 -0
  5. modoboa/admin/lib.py +8 -3
  6. modoboa/admin/models/alias.py +22 -0
  7. modoboa/admin/models/domain.py +1 -1
  8. modoboa/admin/models/mixins.py +3 -1
  9. modoboa/admin/tests/test_alias_targets.py +68 -0
  10. modoboa/admin/tests/test_mx.py +12 -12
  11. modoboa/autoconfig/__init__.py +0 -0
  12. modoboa/autoconfig/apps.py +6 -0
  13. modoboa/autoconfig/templates/autoconfig/autoconfig.xml +24 -0
  14. modoboa/autoconfig/templates/autoconfig/autodiscover.xml +27 -0
  15. modoboa/autoconfig/tests.py +38 -0
  16. modoboa/autoconfig/urls.py +21 -0
  17. modoboa/autoconfig/views.py +109 -0
  18. modoboa/autoreply/api/v2/tests.py +4 -4
  19. modoboa/autoreply/models.py +2 -2
  20. modoboa/calendars/tests.py +8 -8
  21. modoboa/contacts/tests.py +5 -7
  22. modoboa/core/commands/templates/settings.py.tpl +25 -2
  23. modoboa/core/models.py +1 -1
  24. modoboa/core/tests/test_ldap.py +2 -0
  25. modoboa/core/views/auth.py +27 -8
  26. modoboa/frontend_dist/assets/{AccountAliasForm-C0oHHyZL.js → AccountAliasForm-CqtTlaTr.js} +1 -1
  27. modoboa/frontend_dist/assets/{AccountEditView-lgSJ2Se8.js → AccountEditView-vbG3aNZy.js} +1 -1
  28. modoboa/frontend_dist/assets/AccountLayout-Dr0kIVYn.js +1 -0
  29. modoboa/frontend_dist/assets/{AccountPasswordSubForm-YsaE_cDx.js → AccountPasswordSubForm-KRg2Sc3j.js} +1 -1
  30. modoboa/frontend_dist/assets/{AccountView-1jfKFDwb.js → AccountView-ojD2hYFN.js} +1 -1
  31. modoboa/frontend_dist/assets/{AddressBook-CwN64Zls.js → AddressBook-UKBKm1mQ.js} +1 -1
  32. modoboa/frontend_dist/assets/AdminLayout-Dj4_-niL.js +1 -0
  33. modoboa/frontend_dist/assets/AlarmsView-CdHVE0Hh.js +1 -0
  34. modoboa/frontend_dist/assets/AlarmsView-Dal0VD8U.css +1 -0
  35. modoboa/frontend_dist/assets/AliasEditView-CYDSiX8l.css +1 -0
  36. modoboa/frontend_dist/assets/AliasEditView-DmAxOjKB.js +1 -0
  37. modoboa/frontend_dist/assets/AliasRecipientForm-BrTdirrM.js +1 -0
  38. modoboa/frontend_dist/assets/{AliasView-DMzA10eD.js → AliasView-Sr8AZcUK.js} +1 -1
  39. modoboa/frontend_dist/assets/{AuditTrailView-5dnGX5El.js → AuditTrailView-B0U4QZw5.js} +1 -1
  40. modoboa/frontend_dist/assets/{CalendarView-DZONeDA9.js → CalendarView-5ZhvN1XU.js} +1 -1
  41. modoboa/frontend_dist/assets/{ChoiceField-DnwXRkht.js → ChoiceField-APLYjZCH.js} +1 -1
  42. modoboa/frontend_dist/assets/{ComposeEmailForm-kghmfNuE.js → ComposeEmailForm-DkLwcddN.js} +1 -1
  43. modoboa/frontend_dist/assets/ComposeEmailView-Du9di9mX.js +1 -0
  44. modoboa/frontend_dist/assets/ConfirmDialog-CnWM982L.js +1 -0
  45. modoboa/frontend_dist/assets/ConnectedLayout-CiKHST8t.js +1 -0
  46. modoboa/frontend_dist/assets/{CreationForm-CW4lxnPg.js → CreationForm-BDQpHM1l.js} +1 -1
  47. modoboa/frontend_dist/assets/DashboardView-nIp1bBh1.js +1 -0
  48. modoboa/frontend_dist/assets/{DomainAdminList-C3jcDDc3.js → DomainAdminList-CzY3elnc.js} +1 -1
  49. modoboa/frontend_dist/assets/{DomainEditView-ph8AaElX.js → DomainEditView-B_vQgqL-.js} +1 -1
  50. modoboa/frontend_dist/assets/{DomainTransportForm-NCz6Bl-h.js → DomainTransportForm-HOsP56gy.js} +1 -1
  51. modoboa/frontend_dist/assets/{DomainView-BgMSSuU-.js → DomainView-CPDvROg8.js} +3 -3
  52. modoboa/frontend_dist/assets/DomainsView-WlF6IHNs.css +1 -0
  53. modoboa/frontend_dist/assets/DomainsView-haCsU12U.js +1 -0
  54. modoboa/frontend_dist/assets/{EmailField-DeqDPm5j.js → EmailField-Cjy8TitF.js} +1 -1
  55. modoboa/frontend_dist/assets/{EmailView-DczVhVO0.js → EmailView-dnVoHho7.js} +1 -1
  56. modoboa/frontend_dist/assets/EmptyLayout-Deh2_dQt.js +1 -0
  57. modoboa/frontend_dist/assets/{FiltersView-nJj_gSCx.js → FiltersView-Csn8N70V.js} +1 -1
  58. modoboa/frontend_dist/assets/ForwardEmailView-CUBLqaN5.js +1 -0
  59. modoboa/frontend_dist/assets/{HtmlEditor-BWRdelVw.js → HtmlEditor-CXZVsQx7.js} +1 -1
  60. modoboa/frontend_dist/assets/IdentitiesView-Cl2lbfkM.css +1 -0
  61. modoboa/frontend_dist/assets/IdentitiesView-lIu0dkk7.js +1 -0
  62. modoboa/frontend_dist/assets/{InformationView-BBWKSX8D.js → InformationView-DQqhhU9V.js} +1 -1
  63. modoboa/frontend_dist/assets/{LoadingData-G57nJ_JV.js → LoadingData-fbGWs7ji.js} +1 -1
  64. modoboa/frontend_dist/assets/LoginCallbackView-3Hv94z-r.js +1 -0
  65. modoboa/frontend_dist/assets/{LoginView-CqCCXYLo.js → LoginView-BUbinhV5.js} +1 -1
  66. modoboa/frontend_dist/assets/MailboxView-CYPFkxfT.js +1 -0
  67. modoboa/frontend_dist/assets/{MenuItems-BqIZW5av.js → MenuItems-Dg2GGDq6.js} +1 -1
  68. modoboa/frontend_dist/assets/{MessageView-D_6tx_gd.js → MessageView-Dz7CnObf.js} +1 -1
  69. modoboa/frontend_dist/assets/{MessagesView-BH7JIR03.js → MessagesView-BJAKsy9_.js} +1 -1
  70. modoboa/frontend_dist/assets/{MigrationsView-Cv_So9T-.js → MigrationsView-6k4E9C53.js} +1 -1
  71. modoboa/frontend_dist/assets/ParametersForm-Bfv6vx6R.js +1 -0
  72. modoboa/frontend_dist/assets/ParametersForm-t6-3GMDS.css +1 -0
  73. modoboa/frontend_dist/assets/ParametersView-BOIkKJtp.js +1 -0
  74. modoboa/frontend_dist/assets/ParametersView-BcyDgfqX.css +1 -0
  75. modoboa/frontend_dist/assets/ParametersView-BnQQOUOX.js +1 -0
  76. modoboa/frontend_dist/assets/{ProviderEditView-zh7CY832.js → ProviderEditView-DIc_KMp4.js} +1 -1
  77. modoboa/frontend_dist/assets/{ProviderGeneralForm-BQU7t3ma.js → ProviderGeneralForm-VpYAY2D4.js} +1 -1
  78. modoboa/frontend_dist/assets/{ProvidersView-CoF_ZkZA.js → ProvidersView-CgNIFDfD.js} +1 -1
  79. modoboa/frontend_dist/assets/QuarantineLayout-aTeFWNaK.js +1 -0
  80. modoboa/frontend_dist/assets/{QuarantineView-DNvpoycb.js → QuarantineView-n30IFBjf.js} +1 -1
  81. modoboa/frontend_dist/assets/ReplyEmailView-To3fx256.js +1 -0
  82. modoboa/frontend_dist/assets/ResourcesForm-Dy_SbQPT.js +1 -0
  83. modoboa/frontend_dist/assets/SelfServiceLayout-CsOvD1_L.js +1 -0
  84. modoboa/frontend_dist/assets/{SettingsView-gQiJ2NVb.js → SettingsView-oiWlLNP2.js} +2 -2
  85. modoboa/frontend_dist/assets/{StatisticsView-DYalet_q.js → StatisticsView-CTON4fgZ.js} +1 -1
  86. modoboa/frontend_dist/assets/{TimeSerieChart-BZ2htbFk.js → TimeSerieChart-DR0-ujj7.js} +1 -1
  87. modoboa/frontend_dist/assets/{TimeSerieChart-CxiwMzE8.css → TimeSerieChart-Dn6Wznn8.css} +1 -1
  88. modoboa/frontend_dist/assets/UserLayout-BBz6nSHf.js +1 -0
  89. modoboa/frontend_dist/assets/{VAlert-4r6LxKtg.js → VAlert-BWUQvs3i.js} +1 -1
  90. modoboa/frontend_dist/assets/{VApp-CX_C7AUN.js → VApp-1CFpPM0s.js} +1 -1
  91. modoboa/frontend_dist/assets/{VAutocomplete-DNKmBvyZ.js → VAutocomplete-vTx-9foZ.js} +1 -1
  92. modoboa/frontend_dist/assets/{VAvatar-DbuoZWmf.js → VAvatar-Wz1UmZ2b.js} +1 -1
  93. modoboa/frontend_dist/assets/{VBadge-Bv2nvUmC.js → VBadge-C08Ii4Nb.js} +1 -1
  94. modoboa/frontend_dist/assets/{VCard-DzjUT5OP.js → VCard-BrQzTMsm.js} +1 -1
  95. modoboa/frontend_dist/assets/{VCheckbox-dr7UFjl4.js → VCheckbox-IdHLHDAe.js} +1 -1
  96. modoboa/frontend_dist/assets/{VCheckboxBtn-CpFdBnTv.js → VCheckboxBtn-BMf4a9DP.js} +1 -1
  97. modoboa/frontend_dist/assets/{VChip-CaQvfmkw.js → VChip-B1E7xQW1.js} +1 -1
  98. modoboa/frontend_dist/assets/VColorPicker-CuNM9hII.js +1 -0
  99. modoboa/frontend_dist/assets/{VContainer-74Dnn8Ux.js → VContainer-f9kXL-37.js} +1 -1
  100. modoboa/frontend_dist/assets/{VDataTable-CL7yHvG7.js → VDataTable-CVJjOdhF.js} +1 -1
  101. modoboa/frontend_dist/assets/{VDataTableServer-BqvNcIdw.js → VDataTableServer-BSZUbic1.js} +1 -1
  102. modoboa/frontend_dist/assets/{VDataTableVirtual--KsOP8i6.js → VDataTableVirtual-Ceu9uaGm.js} +1 -1
  103. modoboa/frontend_dist/assets/{VDialog-DmTGCGR0.js → VDialog-BF9xR7BQ.js} +1 -1
  104. modoboa/frontend_dist/assets/{VExpansionPanels-B7sSTCwd.js → VExpansionPanels-Rq8tzNGV.js} +1 -1
  105. modoboa/frontend_dist/assets/{VFileInput-SULIc6F3.js → VFileInput-CXyx9q4a.js} +1 -1
  106. modoboa/frontend_dist/assets/{VForm-DsRLc-sa.js → VForm-RVvaatfV.js} +1 -1
  107. modoboa/frontend_dist/assets/{VInput-DVKUObZe.js → VInput-ssnfbpwr.js} +1 -1
  108. modoboa/frontend_dist/assets/{VMenu-nv0XOgg0.js → VMenu-BPG7b7dT.js} +1 -1
  109. modoboa/frontend_dist/assets/{VPicker-DnDSWJHJ.js → VPicker-Cv_7ON7Q.js} +1 -1
  110. modoboa/frontend_dist/assets/{VProgressCircular-qK6p5X_Y.js → VProgressCircular-Bdwj7JuI.js} +1 -1
  111. modoboa/frontend_dist/assets/{VRadioGroup-CbiPLy0t.js → VRadioGroup-BdEZyWNi.js} +1 -1
  112. modoboa/frontend_dist/assets/{VRow-DJ0NB63-.js → VRow-DGPh2Qmm.js} +1 -1
  113. modoboa/frontend_dist/assets/{VSelect-CxCFMHyF.js → VSelect-CzmrBwOO.js} +1 -1
  114. modoboa/frontend_dist/assets/{VSelectionControl-C-6A4us5.js → VSelectionControl-BIXXUgD4.js} +1 -1
  115. modoboa/frontend_dist/assets/{VSheet-DI6SxLnG.js → VSheet-C07oo1bg.js} +1 -1
  116. modoboa/frontend_dist/assets/VSpacer-Pa16wvUF.js +1 -0
  117. modoboa/frontend_dist/assets/{VSwitch-DPnjPQuU.js → VSwitch-C8Eq78Y3.js} +1 -1
  118. modoboa/frontend_dist/assets/{VTable-ldTxgQPW.js → VTable-C08Q6ok2.js} +1 -1
  119. modoboa/frontend_dist/assets/{VTabs-aS8WSL9I.js → VTabs-CaqxP8RF.js} +1 -1
  120. modoboa/frontend_dist/assets/{VTextField-DKbr4H5w.js → VTextField-BBIziqiv.js} +1 -1
  121. modoboa/frontend_dist/assets/{VTextarea-BttkFsM4.js → VTextarea-PURjBZRs.js} +1 -1
  122. modoboa/frontend_dist/assets/{VToolbar-BxX3W2kR.js → VToolbar-CILwTR5O.js} +1 -1
  123. modoboa/frontend_dist/assets/VWindowItem-l3wU5Kto.js +1 -0
  124. modoboa/frontend_dist/assets/WebmailLayout-uF8MMy0l.js +1 -0
  125. modoboa/frontend_dist/assets/{accounts-CC2F0a0c.js → accounts-DkNidbb0.js} +1 -1
  126. modoboa/frontend_dist/assets/{admin-CHCHFGI6.js → admin-C5XWZaxP.js} +1 -1
  127. modoboa/frontend_dist/assets/{aliases-C9bUD4Ws.js → aliases-eOyMwyZV.js} +1 -1
  128. modoboa/frontend_dist/assets/{amavis-DCVJxuui.js → amavis-BOgLfXLH.js} +1 -1
  129. modoboa/frontend_dist/assets/{amavis-BhzV4rgf.js → amavis-w7390k8i.js} +1 -1
  130. modoboa/frontend_dist/assets/{contacts-Dxz6eWpf.js → contacts-Ch-bKxJM.js} +1 -1
  131. modoboa/frontend_dist/assets/domains-DEEhRTFJ.js +1 -0
  132. modoboa/frontend_dist/assets/{domains.store-BLKRipG8.js → domains.store-BhRRATEd.js} +1 -1
  133. modoboa/frontend_dist/assets/{filter-rmxrcjKk.js → filter-CfvL3jIf.js} +1 -1
  134. modoboa/frontend_dist/assets/{forwardRefs-CpzzjgpX.js → forwardRefs-GE5Osi9V.js} +1 -1
  135. modoboa/frontend_dist/assets/{global.store-DndbMXYb.js → global.store-CxPrtY0_.js} +1 -1
  136. modoboa/frontend_dist/assets/importExport-C1_milrO.js +1 -0
  137. modoboa/frontend_dist/assets/index-D9OmnhdE.js +982 -0
  138. modoboa/frontend_dist/assets/{layout-DbjDe3Wl.js → layout-CuwY6Rle.js} +1 -1
  139. modoboa/frontend_dist/assets/{layout.store-Vq5mvIp7.js → layout.store-uEYOXtgD.js} +1 -1
  140. modoboa/frontend_dist/assets/{logos-Bvcy0usu.js → logos-BOVDV-my.js} +1 -1
  141. modoboa/frontend_dist/assets/{logs-BuItINky.js → logs-DT7l7Npx.js} +1 -1
  142. modoboa/frontend_dist/assets/{parameters-C8IYEP7q.js → parameters-DlTg3gyZ.js} +1 -1
  143. modoboa/frontend_dist/assets/{parameters.store-1cwSP2JP.js → parameters.store-eTs-B-pe.js} +1 -1
  144. modoboa/frontend_dist/assets/{permissions-DQjAcO9S.js → permissions-B-P8ks2E.js} +1 -1
  145. modoboa/frontend_dist/assets/{ssrBoot-BxIQ9ccA.js → ssrBoot-DaeAGyhc.js} +1 -1
  146. modoboa/frontend_dist/assets/{tag-3cfI1_f7.js → tag-jImTUiWx.js} +1 -1
  147. modoboa/frontend_dist/assets/theme-tqh89n3L.js +1 -0
  148. modoboa/frontend_dist/assets/transports-BnIcB3M9.js +1 -0
  149. modoboa/frontend_dist/assets/{webmail-B2IUjaxM.js → webmail-Dqo8FjAw.js} +1 -1
  150. modoboa/frontend_dist/index.html +1 -1
  151. modoboa/locale/ja_JP/LC_MESSAGES/django.mo +0 -0
  152. modoboa/locale/ja_JP/LC_MESSAGES/django.po +1 -1
  153. modoboa/relaydomains/tests.py +1 -1
  154. modoboa/static/css/offline.css +7 -20
  155. modoboa/templates/registration/base.html +18 -0
  156. modoboa/templates/registration/login.html +1 -1
  157. modoboa/urls.py +1 -5
  158. {modoboa-2.5.1.dist-info → modoboa-2.6.1.dist-info}/METADATA +9 -9
  159. {modoboa-2.5.1.dist-info → modoboa-2.6.1.dist-info}/RECORD +164 -156
  160. {modoboa-2.5.1.dist-info → modoboa-2.6.1.dist-info}/licenses/LICENSE +1 -1
  161. modoboa/core/api/v1/tests.py +0 -26
  162. modoboa/frontend_dist/assets/AccountLayout-U386K8zy.js +0 -1
  163. modoboa/frontend_dist/assets/AdminLayout-Cxm1lggg.js +0 -1
  164. modoboa/frontend_dist/assets/AlarmsView-9yKGbmkC.css +0 -1
  165. modoboa/frontend_dist/assets/AlarmsView-Bcjsicac.js +0 -1
  166. modoboa/frontend_dist/assets/AliasEditView-Cx9410JP.css +0 -1
  167. modoboa/frontend_dist/assets/AliasEditView-k3rVt1tG.js +0 -1
  168. modoboa/frontend_dist/assets/AliasRecipientForm-IehUzKok.js +0 -1
  169. modoboa/frontend_dist/assets/ComposeEmailView-DLv3wk1k.js +0 -1
  170. modoboa/frontend_dist/assets/ConfirmDialog-CcPrCKuI.js +0 -1
  171. modoboa/frontend_dist/assets/ConnectedLayout-CWlBK7Hf.js +0 -1
  172. modoboa/frontend_dist/assets/DashboardView-DXVZMbMo.js +0 -1
  173. modoboa/frontend_dist/assets/DomainsView-CEEU9btK.js +0 -1
  174. modoboa/frontend_dist/assets/DomainsView-DZ-ss9bI.css +0 -1
  175. modoboa/frontend_dist/assets/EmptyLayout-BXgcfMLH.js +0 -1
  176. modoboa/frontend_dist/assets/ForwardEmailView-Bgv3JQb6.js +0 -1
  177. modoboa/frontend_dist/assets/IdentitiesView-DPrrRMS5.css +0 -1
  178. modoboa/frontend_dist/assets/IdentitiesView-Dld9IloZ.js +0 -1
  179. modoboa/frontend_dist/assets/LoginCallbackView-DjyE2SG_.js +0 -1
  180. modoboa/frontend_dist/assets/MailboxView-DRrs9eLO.js +0 -1
  181. modoboa/frontend_dist/assets/ParametersForm-3qXttTuQ.js +0 -1
  182. modoboa/frontend_dist/assets/ParametersForm-Dk-qwlRm.css +0 -1
  183. modoboa/frontend_dist/assets/ParametersView-3Ns04cpQ.js +0 -1
  184. modoboa/frontend_dist/assets/ParametersView-B5B5Dt6K.js +0 -1
  185. modoboa/frontend_dist/assets/ParametersView-DaKFNERg.css +0 -1
  186. modoboa/frontend_dist/assets/QuarantineLayout-CYBsrbJM.js +0 -1
  187. modoboa/frontend_dist/assets/ReplyEmailView-D1XTcglu.js +0 -1
  188. modoboa/frontend_dist/assets/ResourcesForm-BW8rUGgZ.js +0 -1
  189. modoboa/frontend_dist/assets/SelfServiceLayout-DfDHiYeX.js +0 -1
  190. modoboa/frontend_dist/assets/UserLayout-zUtHi-z-.js +0 -1
  191. modoboa/frontend_dist/assets/VColorPicker-ByGpCW5O.js +0 -1
  192. modoboa/frontend_dist/assets/VSpacer-CoJVmx8k.js +0 -1
  193. modoboa/frontend_dist/assets/VWindowItem-Cvqvdegd.js +0 -1
  194. modoboa/frontend_dist/assets/WebmailLayout-BT2k6U7q.js +0 -1
  195. modoboa/frontend_dist/assets/domains-C2cornvL.js +0 -1
  196. modoboa/frontend_dist/assets/importExport-C3uqrcok.js +0 -1
  197. modoboa/frontend_dist/assets/index-LhNzkzAh.js +0 -984
  198. modoboa/frontend_dist/assets/transports-D4Jk4-AP.js +0 -1
  199. {modoboa-2.5.1.data → modoboa-2.6.1.data}/scripts/modoboa-admin.py +0 -0
  200. {modoboa-2.5.1.dist-info → modoboa-2.6.1.dist-info}/WHEEL +0 -0
  201. {modoboa-2.5.1.dist-info → modoboa-2.6.1.dist-info}/entry_points.txt +0 -0
  202. {modoboa-2.5.1.dist-info → modoboa-2.6.1.dist-info}/top_level.txt +0 -0
@@ -1 +1 @@
1
- import{d as ne}from"./tag-3cfI1_f7.js";import{J as Z,N as T,h as v,g as ae,aT as $,a7 as E,a2 as R,aR as D,a6 as W,d as se,av as ue,aU as le,aV as ie,aw as re,ak as X,aW as ce}from"./index-LhNzkzAh.js";const M=Symbol.for("vuetify:layout"),q=Symbol.for("vuetify:layout-item"),U=1e3,pe=Z({overlaps:{type:Array,default:()=>[]},fullHeight:Boolean},"layout"),me=Z({name:{type:String},order:{type:[Number,String],default:0},absolute:Boolean},"layout-item");function ge(){const s=T(M);if(!s)throw new Error("[Vuetify] Could not find injected layout");return{getLayoutItem:s.getLayoutItem,mainRect:s.mainRect,mainStyles:s.mainStyles}}function he(s){const u=T(M);if(!u)throw new Error("[Vuetify] Could not find injected layout");const d=s.id??`layout-item-${ue()}`,i=D("useLayoutItem");X(q,{id:d});const n=W(!1);le(()=>n.value=!0),ie(()=>n.value=!1);const{layoutItemStyles:r,layoutItemScrimStyles:c}=u.register(i,{...s,active:v(()=>n.value?!1:s.active.value),id:d});return re(()=>u.unregister(d)),{layoutItemStyles:r,layoutRect:u.layoutRect,layoutItemScrimStyles:c}}const ve=(s,u,d,i)=>{let n={top:0,left:0,right:0,bottom:0};const r=[{id:"",layer:{...n}}];for(const c of s){const m=u.get(c),g=d.get(c),z=i.get(c);if(!m||!g||!z)continue;const h={...n,[m.value]:parseInt(n[m.value],10)+(z.value?parseInt(g.value,10):0)};r.push({id:c,layer:h}),n=h}return r};function Ie(s){const u=T(M,null),d=v(()=>u?u.rootZIndex.value-100:U),i=ae([]),n=$(new Map),r=$(new Map),c=$(new Map),m=$(new Map),g=$(new Map),{resizeRef:z,contentRect:h}=ne(),F=v(()=>{const t=new Map,l=s.overlaps??[];for(const e of l.filter(a=>a.includes(":"))){const[a,o]=e.split(":");if(!i.value.includes(a)||!i.value.includes(o))continue;const f=n.get(a),p=n.get(o),S=r.get(a),w=r.get(o);!f||!p||!S||!w||(t.set(o,{position:f.value,amount:parseInt(S.value,10)}),t.set(a,{position:p.value,amount:-parseInt(w.value,10)}))}return t}),I=v(()=>{const t=[...new Set([...c.values()].map(e=>e.value))].sort((e,a)=>e-a),l=[];for(const e of t){const a=i.value.filter(o=>{var f;return((f=c.get(o))==null?void 0:f.value)===e});l.push(...a)}return ve(l,n,r,m)}),H=v(()=>!Array.from(g.values()).some(t=>t.value)),b=v(()=>I.value[I.value.length-1].layer),J=E(()=>({"--v-layout-left":R(b.value.left),"--v-layout-right":R(b.value.right),"--v-layout-top":R(b.value.top),"--v-layout-bottom":R(b.value.bottom),...H.value?void 0:{transition:"none"}})),x=v(()=>I.value.slice(1).map((t,l)=>{let{id:e}=t;const{layer:a}=I.value[l],o=r.get(e),f=n.get(e);return{id:e,...a,size:Number(o.value),position:f.value}})),N=t=>x.value.find(l=>l.id===t),O=D("createLayout"),j=W(!1);se(()=>{j.value=!0}),X(M,{register:(t,l)=>{let{id:e,order:a,position:o,layoutSize:f,elementSize:p,active:S,disableTransitions:w,absolute:G}=l;c.set(e,a),n.set(e,o),r.set(e,f),m.set(e,S),w&&g.set(e,w);const k=ce(q,O==null?void 0:O.vnode).indexOf(t);k>-1?i.value.splice(k,0,e):i.value.push(e);const B=v(()=>x.value.findIndex(L=>L.id===e)),V=v(()=>d.value+I.value.length*2-B.value*2),Q=v(()=>{const L=o.value==="left"||o.value==="right",A=o.value==="right",te=o.value==="bottom",C=p.value??f.value,oe=C===0?"%":"px",K={[o.value]:0,zIndex:V.value,transform:`translate${L?"X":"Y"}(${(S.value?0:-(C===0?100:C))*(A||te?-1:1)}${oe})`,position:G.value||d.value!==U?"absolute":"fixed",...H.value?void 0:{transition:"none"}};if(!j.value)return K;const y=x.value[B.value];if(!y)throw new Error(`[Vuetify] Could not find layout item "${e}"`);const P=F.value.get(e);return P&&(y[P.position]+=P.amount),{...K,height:L?`calc(100% - ${y.top}px - ${y.bottom}px)`:p.value?`${p.value}px`:void 0,left:A?void 0:`${y.left}px`,right:A?`${y.right}px`:void 0,top:o.value!=="bottom"?`${y.top}px`:void 0,bottom:o.value!=="top"?`${y.bottom}px`:void 0,width:L?p.value?`${p.value}px`:void 0:`calc(100% - ${y.left}px - ${y.right}px)`}}),ee=v(()=>({zIndex:V.value-1}));return{layoutItemStyles:Q,layoutItemScrimStyles:ee,zIndex:V}},unregister:t=>{c.delete(t),n.delete(t),r.delete(t),m.delete(t),g.delete(t),i.value=i.value.filter(l=>l!==t)},mainRect:b,mainStyles:J,getLayoutItem:N,items:x,layoutRect:h,rootZIndex:d});const Y=E(()=>["v-layout",{"v-layout--full-height":s.fullHeight}]),_=E(()=>({zIndex:u?d.value:void 0,position:u?"relative":void 0,overflow:u?"hidden":void 0}));return{layoutClasses:Y,layoutStyles:_,getLayoutItem:N,items:x,layoutRect:h,layoutRef:z}}export{M as V,he as a,me as b,Ie as c,pe as m,ge as u};
1
+ import{d as ne}from"./tag-jImTUiWx.js";import{J as Z,N as T,i as v,h as ae,aT as $,a7 as E,a2 as R,aR as D,a6 as W,d as se,av as ue,aU as le,aV as ie,aw as re,ak as X,aW as ce}from"./index-D9OmnhdE.js";const M=Symbol.for("vuetify:layout"),q=Symbol.for("vuetify:layout-item"),U=1e3,pe=Z({overlaps:{type:Array,default:()=>[]},fullHeight:Boolean},"layout"),me=Z({name:{type:String},order:{type:[Number,String],default:0},absolute:Boolean},"layout-item");function ge(){const s=T(M);if(!s)throw new Error("[Vuetify] Could not find injected layout");return{getLayoutItem:s.getLayoutItem,mainRect:s.mainRect,mainStyles:s.mainStyles}}function he(s){const u=T(M);if(!u)throw new Error("[Vuetify] Could not find injected layout");const d=s.id??`layout-item-${ue()}`,i=D("useLayoutItem");X(q,{id:d});const n=W(!1);le(()=>n.value=!0),ie(()=>n.value=!1);const{layoutItemStyles:r,layoutItemScrimStyles:c}=u.register(i,{...s,active:v(()=>n.value?!1:s.active.value),id:d});return re(()=>u.unregister(d)),{layoutItemStyles:r,layoutRect:u.layoutRect,layoutItemScrimStyles:c}}const ve=(s,u,d,i)=>{let n={top:0,left:0,right:0,bottom:0};const r=[{id:"",layer:{...n}}];for(const c of s){const m=u.get(c),g=d.get(c),z=i.get(c);if(!m||!g||!z)continue;const h={...n,[m.value]:parseInt(n[m.value],10)+(z.value?parseInt(g.value,10):0)};r.push({id:c,layer:h}),n=h}return r};function Ie(s){const u=T(M,null),d=v(()=>u?u.rootZIndex.value-100:U),i=ae([]),n=$(new Map),r=$(new Map),c=$(new Map),m=$(new Map),g=$(new Map),{resizeRef:z,contentRect:h}=ne(),F=v(()=>{const t=new Map,l=s.overlaps??[];for(const e of l.filter(a=>a.includes(":"))){const[a,o]=e.split(":");if(!i.value.includes(a)||!i.value.includes(o))continue;const f=n.get(a),p=n.get(o),S=r.get(a),w=r.get(o);!f||!p||!S||!w||(t.set(o,{position:f.value,amount:parseInt(S.value,10)}),t.set(a,{position:p.value,amount:-parseInt(w.value,10)}))}return t}),I=v(()=>{const t=[...new Set([...c.values()].map(e=>e.value))].sort((e,a)=>e-a),l=[];for(const e of t){const a=i.value.filter(o=>{var f;return((f=c.get(o))==null?void 0:f.value)===e});l.push(...a)}return ve(l,n,r,m)}),H=v(()=>!Array.from(g.values()).some(t=>t.value)),b=v(()=>I.value[I.value.length-1].layer),J=E(()=>({"--v-layout-left":R(b.value.left),"--v-layout-right":R(b.value.right),"--v-layout-top":R(b.value.top),"--v-layout-bottom":R(b.value.bottom),...H.value?void 0:{transition:"none"}})),x=v(()=>I.value.slice(1).map((t,l)=>{let{id:e}=t;const{layer:a}=I.value[l],o=r.get(e),f=n.get(e);return{id:e,...a,size:Number(o.value),position:f.value}})),N=t=>x.value.find(l=>l.id===t),O=D("createLayout"),j=W(!1);se(()=>{j.value=!0}),X(M,{register:(t,l)=>{let{id:e,order:a,position:o,layoutSize:f,elementSize:p,active:S,disableTransitions:w,absolute:G}=l;c.set(e,a),n.set(e,o),r.set(e,f),m.set(e,S),w&&g.set(e,w);const k=ce(q,O==null?void 0:O.vnode).indexOf(t);k>-1?i.value.splice(k,0,e):i.value.push(e);const B=v(()=>x.value.findIndex(L=>L.id===e)),V=v(()=>d.value+I.value.length*2-B.value*2),Q=v(()=>{const L=o.value==="left"||o.value==="right",A=o.value==="right",te=o.value==="bottom",C=p.value??f.value,oe=C===0?"%":"px",K={[o.value]:0,zIndex:V.value,transform:`translate${L?"X":"Y"}(${(S.value?0:-(C===0?100:C))*(A||te?-1:1)}${oe})`,position:G.value||d.value!==U?"absolute":"fixed",...H.value?void 0:{transition:"none"}};if(!j.value)return K;const y=x.value[B.value];if(!y)throw new Error(`[Vuetify] Could not find layout item "${e}"`);const P=F.value.get(e);return P&&(y[P.position]+=P.amount),{...K,height:L?`calc(100% - ${y.top}px - ${y.bottom}px)`:p.value?`${p.value}px`:void 0,left:A?void 0:`${y.left}px`,right:A?`${y.right}px`:void 0,top:o.value!=="bottom"?`${y.top}px`:void 0,bottom:o.value!=="top"?`${y.bottom}px`:void 0,width:L?p.value?`${p.value}px`:void 0:`calc(100% - ${y.left}px - ${y.right}px)`}}),ee=v(()=>({zIndex:V.value-1}));return{layoutItemStyles:Q,layoutItemScrimStyles:ee,zIndex:V}},unregister:t=>{c.delete(t),n.delete(t),r.delete(t),m.delete(t),g.delete(t),i.value=i.value.filter(l=>l!==t)},mainRect:b,mainStyles:J,getLayoutItem:N,items:x,layoutRect:h,rootZIndex:d});const Y=E(()=>["v-layout",{"v-layout--full-height":s.fullHeight}]),_=E(()=>({zIndex:u?d.value:void 0,position:u?"relative":void 0,overflow:u?"hidden":void 0}));return{layoutClasses:Y,layoutStyles:_,getLayoutItem:N,items:x,layoutRect:h,layoutRef:z}}export{M as V,he as a,me as b,Ie as c,pe as m,ge as u};
@@ -1 +1 @@
1
- import{E as a,g as s}from"./index-LhNzkzAh.js";const r=a("layout",()=>{const e=s([]),t=s(!1);function n(u){e.value=u}async function o(){e.value=[],t.value=!1}return{leftMenuItems:e,compactLeftMenu:t,setLeftMenuItems:n,$reset:o}});export{r as u};
1
+ import{E as a,h as s}from"./index-D9OmnhdE.js";const r=a("layout",()=>{const e=s([]),t=s(!1);function n(u){e.value=u}async function o(){e.value=[],t.value=!1}return{leftMenuItems:e,compactLeftMenu:t,setLeftMenuItems:n,$reset:o}});export{r as u};
@@ -1 +1 @@
1
- import{h as r,bl as s}from"./index-LhNzkzAh.js";function i(){const o=s(),t=r(()=>o.MENU_LOGO_PATH?o.MENU_LOGO_PATH:new URL("/assets/Modoboa_RVB-BLANC-SANS-BBGoASES.png",import.meta.url).href),n=r(()=>o.CREATION_FORM_LOGO_PATH?o.CREATION_FORM_LOGO_PATH:new URL("/assets/Modoboa_RVB-BLEU-SANS-pKrnjsR_.png",import.meta.url).href);return{menuLogoPath:t,creationFormLogoPath:n}}export{i as u};
1
+ import{i as r,bl as s}from"./index-D9OmnhdE.js";function i(){const o=s(),t=r(()=>o.MENU_LOGO_PATH?o.MENU_LOGO_PATH:new URL("/assets/Modoboa_RVB-BLANC-SANS-BBGoASES.png",import.meta.url).href),n=r(()=>o.CREATION_FORM_LOGO_PATH?o.CREATION_FORM_LOGO_PATH:new URL("/assets/Modoboa_RVB-BLEU-SANS-pKrnjsR_.png",import.meta.url).href);return{menuLogoPath:t,creationFormLogoPath:n}}export{i as u};
@@ -1 +1 @@
1
- import{C as e}from"./index-LhNzkzAh.js";const t="logs",o={getAuditTrail(s){return e.get(`/${t}/audit-trail/`,{params:s})},getMessages(s){return e.get(`/${t}/messages/`,{params:s})}};export{o as l};
1
+ import{C as e}from"./index-D9OmnhdE.js";const t="logs",o={getAuditTrail(s){return e.get(`/${t}/audit-trail/`,{params:s})},getMessages(s){return e.get(`/${t}/messages/`,{params:s})}};export{o as l};
@@ -1 +1 @@
1
- import{C as e}from"./index-LhNzkzAh.js";const r="parameters",l={getGlobalApplications(){return e.get(`/${r}/global/applications/`)},getGlobalApplication(t){return e.get(`/${r}/global/${t}/`)},getGlobalApplicationStructure(t){return e.get(`/${r}/global/structure/?app=${t}`)},saveGlobalApplication(t,p){return e.put(`/${r}/global/${t}/`,p)},getUserApplications(){return e.get(`/${r}/user/applications/`)},getUserApplication(t){return e.get(`/${r}/user/${t}/`)},getUserApplicationStructure(t){return e.get(`/${r}/user/structure/?app=${t}`)},saveUserApplication(t,p){return e.put(`/${r}/user/${t}/`,p)}};export{l as p};
1
+ import{C as e}from"./index-D9OmnhdE.js";const r="parameters",l={getGlobalApplications(){return e.get(`/${r}/global/applications/`)},getGlobalApplication(t){return e.get(`/${r}/global/${t}/`)},getGlobalApplicationStructure(t){return e.get(`/${r}/global/structure/?app=${t}`)},saveGlobalApplication(t,p){return e.put(`/${r}/global/${t}/`,p)},getUserApplications(){return e.get(`/${r}/user/applications/`)},getUserApplication(t){return e.get(`/${r}/user/${t}/`)},getUserApplicationStructure(t){return e.get(`/${r}/user/structure/?app=${t}`)},saveUserApplication(t,p){return e.put(`/${r}/user/${t}/`,p)}};export{l as p};
@@ -1 +1 @@
1
- import{E as a,g as t}from"./index-LhNzkzAh.js";const s=a("parameters",()=>{const e=t(null);async function r(){e.value=null}return{imapMigrationEnabled:e,$reset:r}});export{s as u};
1
+ import{E as a,h as t}from"./index-D9OmnhdE.js";const s=a("parameters",()=>{const e=t(null);async function r(){e.value=null}return{imapMigrationEnabled:e,$reset:r}});export{s as u};
@@ -1 +1 @@
1
- import{u,h as n,i as e}from"./index-LhNzkzAh.js";function c(){const t=u(),s=n(()=>[e.RESELLER,e.SUPER_ADMIN].includes(t.authUser.role)),r=n(()=>[e.RESELLER,e.SUPER_ADMIN].includes(t.authUser.role)),o=n(()=>[e.DOMAIN_ADMIN,e.RESELLER,e.SUPER_ADMIN].includes(t.authUser.role));return{canSetRole:s,canAddDomain:r,canViewDomain:o}}export{c as u};
1
+ import{u,i as n,j as e}from"./index-D9OmnhdE.js";function c(){const t=u(),s=n(()=>[e.RESELLER,e.SUPER_ADMIN].includes(t.authUser.role)),r=n(()=>[e.RESELLER,e.SUPER_ADMIN].includes(t.authUser.role)),o=n(()=>[e.DOMAIN_ADMIN,e.RESELLER,e.SUPER_ADMIN].includes(t.authUser.role));return{canSetRole:s,canAddDomain:r,canViewDomain:o}}export{c as u};
@@ -1 +1 @@
1
- import{a6 as t,d as e,a7 as s,aS as n}from"./index-LhNzkzAh.js";function i(){const o=t(!1);return e(()=>{window.requestAnimationFrame(()=>{o.value=!0})}),{ssrBootStyles:s(()=>o.value?void 0:{transition:"none !important"}),isBooted:n(o)}}export{i as u};
1
+ import{a6 as t,d as e,a7 as s,aS as n}from"./index-D9OmnhdE.js";function i(){const o=t(!1);return e(()=>{window.requestAnimationFrame(()=>{o.value=!0})}),{ssrBootStyles:s(()=>o.value?void 0:{transition:"none !important"}),isBooted:n(o)}}export{i as u};
@@ -1 +1 @@
1
- import{J as m,aR as c,ab as h,g as d,an as f,aw as l,z as b,aS as R,h as S,a2 as r}from"./index-LhNzkzAh.js";const x=m({class:[String,Array,Object],style:{type:[String,Array,Object],default:null}},"component");function y(t){const a=c("useRender");a.render=t}function W(t){let a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"content";const e=h(),i=d();if(f){const s=new ResizeObserver(n=>{t==null||t(n,s),n.length&&(a==="content"?i.value=n[0].contentRect:i.value=n[0].target.getBoundingClientRect())});l(()=>{s.disconnect()}),b(()=>e.el,(n,o)=>{o&&(s.unobserve(o),i.value=void 0),n&&s.observe(n)},{flush:"post"})}return{resizeRef:e,contentRect:R(i)}}const H=m({height:[Number,String],maxHeight:[Number,String],maxWidth:[Number,String],minHeight:[Number,String],minWidth:[Number,String],width:[Number,String]},"dimension");function N(t){return{dimensionStyles:S(()=>{const e={},i=r(t.height),s=r(t.maxHeight),n=r(t.maxWidth),o=r(t.minHeight),u=r(t.minWidth),g=r(t.width);return i!=null&&(e.height=i),s!=null&&(e.maxHeight=s),n!=null&&(e.maxWidth=n),o!=null&&(e.minHeight=o),u!=null&&(e.minWidth=u),g!=null&&(e.width=g),e})}}const w=m({tag:{type:[String,Object,Function],default:"div"}},"tag");export{N as a,x as b,w as c,W as d,H as m,y as u};
1
+ import{J as m,aR as g,ab as h,h as d,an as f,aw as l,z as b,aS as R,i as S,a2 as r}from"./index-D9OmnhdE.js";const x=m({class:[String,Array,Object],style:{type:[String,Array,Object],default:null}},"component");function y(t){const a=g("useRender");a.render=t}function W(t){let a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"content";const e=h(),i=d();if(f){const s=new ResizeObserver(n=>{t==null||t(n,s),n.length&&(a==="content"?i.value=n[0].contentRect:i.value=n[0].target.getBoundingClientRect())});l(()=>{s.disconnect()}),b(()=>e.el,(n,o)=>{o&&(s.unobserve(o),i.value=void 0),n&&s.observe(n)},{flush:"post"})}return{resizeRef:e,contentRect:R(i)}}const H=m({height:[Number,String],maxHeight:[Number,String],maxWidth:[Number,String],minHeight:[Number,String],minWidth:[Number,String],width:[Number,String]},"dimension");function N(t){return{dimensionStyles:S(()=>{const e={},i=r(t.height),s=r(t.maxHeight),n=r(t.maxWidth),o=r(t.minHeight),u=r(t.minWidth),c=r(t.width);return i!=null&&(e.height=i),s!=null&&(e.maxHeight=s),n!=null&&(e.maxWidth=n),o!=null&&(e.minHeight=o),u!=null&&(e.minWidth=u),c!=null&&(e.width=c),e})}}const w=m({tag:{type:[String,Object,Function],default:"div"}},"tag");export{N as a,x as b,w as c,W as d,H as m,y as u};
@@ -0,0 +1 @@
1
+ import{C as a,b5 as o,h as t}from"./index-D9OmnhdE.js";const h={getTheme(){return a.get("/theme/")}};function i(){const l=o(),e=t(null);return{theme:e,enableTheme:async()=>{const r=await h.getTheme();e.value=r.data,e.value.theme_primary_color!==l.themes.value.light.colors.primary&&(l.themes.value.light.colors.primary=e.value.theme_primary_color),e.value.theme_primary_color_light!==l.themes.value.light.colors["primary-lighten-1"]&&(l.themes.value.light.colors["primary-lighten-1"]=e.value.theme_primary_color_light),e.value.theme_primary_color_dark!==l.themes.value.light.colors["primary-darken-1"]&&(l.themes.value.light.colors["primary-darken-1"]=e.value.theme_primary_color_dark),e.value.theme_secondary_color!==l.themes.value.light.colors.secondary&&(l.themes.value.light.colors.secondary=e.value.theme_secondary_color),e.value.theme_label_color!==l.themes.value.light.colors.label&&(l.themes.value.light.colors.label=e.value.theme_label_color)}}}export{i as u};
@@ -0,0 +1 @@
1
+ import{C as t}from"./index-D9OmnhdE.js";const r="transports",s={getAll(){return t.get(`/${r}/`)}};export{s as t};
@@ -1 +1 @@
1
- import{C as t}from"./index-LhNzkzAh.js";const r={getUserMailboxes(e){const s={};return e&&(s.mailbox=e),t.get("/webmail/mailboxes/",{params:s})},getUserMailboxQuota(e){const s={mailbox:e};return t.get("/webmail/mailboxes/quota/",{params:s})},getUserMailboxUnseen(e){const s={mailbox:e};return t.get("webmail/mailboxes/unseen/",{params:s})},createUserMailbox(e){return t.post("/webmail/mailboxes/",e)},renameUserMailbox(e){return t.post("/webmail/mailboxes/rename/",e)},compressUserMailbox(e){return t.post("/webmail/mailboxes/compress/",e)},deleteUserMailbox(e){return t.post("/webmail/mailboxes/delete/",e)},emptyUserMailbox(e){const s={name:e};return t.post("/webmail/mailboxes/empty/",s)},getMailboxEmails(e,s){const a={mailbox:e,...s};return t.get("/webmail/emails/",{params:a})},getEmailContent(e,s,a){const o={mailbox:e,mailid:s,...a};return t.get("/webmail/emails/content/",{params:o})},getEmailSource(e,s){const a={mailbox:e,mailid:s};return t.get("/webmail/emails/source/",{params:a})},getEmailAttachment(e,s,a){const o={mailbox:e,mailid:s,partnum:a};return t.get("/webmail/emails/attachment/",{params:o,responseType:"blob"})},deleteSelection(e,s){const a={mailbox:e,selection:s};return t.post("/webmail/emails/delete/",a)},markSelectionAsJunk(e,s){const a={mailbox:e,selection:s};return t.post("/webmail/emails/mark_as_junk/",a)},markSelectionAsNotJunk(e,s){const a={mailbox:e,selection:s};return t.post("/webmail/emails/mark_as_not_junk/",a)},flagSelection(e,s,a){const o={mailbox:e,selection:s,status:a};return t.post("/webmail/emails/flag/",o)},sendEmailFromComposeSession(e,s){return t.post(`/webmail/compose-sessions/${e}/send/`,s)},getComposeSession(e){return t.get(`/webmail/compose-sessions/${e}/`)},createComposeSession(){return t.post("/webmail/compose-sessions/")},getAllowedSenders(){return t.get("/webmail/compose-sessions/allowed_senders/")},uploadAttachment(e,s){return t.post(`/webmail/compose-sessions/${e}/attachments/`,s,{headers:{"Content-Type":"multipart/form-data"}})},removeAttachment(e,s){return t.delete(`/webmail/compose-sessions/${e}/attachments/${s}/`)}};export{r as a};
1
+ import{C as t}from"./index-D9OmnhdE.js";const r={getUserMailboxes(e){const s={};return e&&(s.mailbox=e),t.get("/webmail/mailboxes/",{params:s})},getUserMailboxQuota(e){const s={mailbox:e};return t.get("/webmail/mailboxes/quota/",{params:s})},getUserMailboxUnseen(e){const s={mailbox:e};return t.get("webmail/mailboxes/unseen/",{params:s})},createUserMailbox(e){return t.post("/webmail/mailboxes/",e)},renameUserMailbox(e){return t.post("/webmail/mailboxes/rename/",e)},compressUserMailbox(e){return t.post("/webmail/mailboxes/compress/",e)},deleteUserMailbox(e){return t.post("/webmail/mailboxes/delete/",e)},emptyUserMailbox(e){const s={name:e};return t.post("/webmail/mailboxes/empty/",s)},getMailboxEmails(e,s){const a={mailbox:e,...s};return t.get("/webmail/emails/",{params:a})},getEmailContent(e,s,a){const o={mailbox:e,mailid:s,...a};return t.get("/webmail/emails/content/",{params:o})},getEmailSource(e,s){const a={mailbox:e,mailid:s};return t.get("/webmail/emails/source/",{params:a})},getEmailAttachment(e,s,a){const o={mailbox:e,mailid:s,partnum:a};return t.get("/webmail/emails/attachment/",{params:o,responseType:"blob"})},deleteSelection(e,s){const a={mailbox:e,selection:s};return t.post("/webmail/emails/delete/",a)},markSelectionAsJunk(e,s){const a={mailbox:e,selection:s};return t.post("/webmail/emails/mark_as_junk/",a)},markSelectionAsNotJunk(e,s){const a={mailbox:e,selection:s};return t.post("/webmail/emails/mark_as_not_junk/",a)},flagSelection(e,s,a){const o={mailbox:e,selection:s,status:a};return t.post("/webmail/emails/flag/",o)},sendEmailFromComposeSession(e,s){return t.post(`/webmail/compose-sessions/${e}/send/`,s)},getComposeSession(e){return t.get(`/webmail/compose-sessions/${e}/`)},createComposeSession(){return t.post("/webmail/compose-sessions/")},getAllowedSenders(){return t.get("/webmail/compose-sessions/allowed_senders/")},uploadAttachment(e,s){return t.post(`/webmail/compose-sessions/${e}/attachments/`,s,{headers:{"Content-Type":"multipart/form-data"}})},removeAttachment(e,s){return t.delete(`/webmail/compose-sessions/${e}/attachments/${s}/`)}};export{r as a};
@@ -12,7 +12,7 @@
12
12
  <link rel="icon" href="/favicon.ico" />
13
13
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
14
14
  <title>Welcome to Modoboa</title>
15
- <script type="module" crossorigin src="/assets/index-LhNzkzAh.js"></script>
15
+ <script type="module" crossorigin src="/assets/index-D9OmnhdE.js"></script>
16
16
  <link rel="stylesheet" crossorigin href="/assets/index-B1bJH8Ti.css">
17
17
  </head>
18
18
 
Binary file
@@ -1762,7 +1762,7 @@ msgstr "なし"
1762
1762
 
1763
1763
  #: dmarc/models.py:11
1764
1764
  msgid "Quarantine"
1765
- msgstr "検疫"
1765
+ msgstr "隔離"
1766
1766
 
1767
1767
  #: dmarc/models.py:12
1768
1768
  msgid "Reject"
@@ -76,7 +76,7 @@ class RelayDomainsTestCase(ModoAPITestCase, Operations):
76
76
  response = self.client.get(url)
77
77
  self.assertEqual(response.status_code, 200)
78
78
  content = response.json()
79
- self.assertEqual(len(content), 3)
79
+ self.assertEqual(content["count"], 3)
80
80
 
81
81
  def test_create_relaydomain(self):
82
82
  """Test the creation of a relay domain.
@@ -23,11 +23,6 @@ body {
23
23
  padding: 20px;
24
24
  }
25
25
 
26
- .left-column {
27
- background-color: #046bf8;
28
- text-align: center;
29
- }
30
-
31
26
  .right-column {
32
27
  background-color: #ffffff;
33
28
  display: flex;
@@ -115,29 +110,14 @@ h2 {
115
110
  transition: background-color 0.3s;
116
111
  }
117
112
 
118
- .btn-primary {
119
- background-color: #007bff;
120
- color: white;
121
- }
122
-
123
113
  .btn:hover {
124
114
  background-color: #c9c9c9;
125
115
  }
126
116
 
127
- .btn-primary:hover {
128
- background-color: #0056b3;
129
- }
130
-
131
117
  .footer {
132
118
  margin-top: 20px;
133
119
  }
134
120
 
135
- .footer a {
136
- color: #007bff;
137
- text-decoration: none;
138
- font-size: 14px;
139
- }
140
-
141
121
  .footer a:hover {
142
122
  text-decoration: underline;
143
123
  }
@@ -155,6 +135,13 @@ h2 {
155
135
  margin-top: 5px;
156
136
  }
157
137
 
138
+ .annoucement {
139
+ background-color: #e6e6e6;
140
+ padding: 20px;
141
+ border-radius: 5px;
142
+ text-align: left;
143
+ }
144
+
158
145
  @media (max-width: 768px) {
159
146
  .container {
160
147
  flex-direction: column;
@@ -8,6 +8,24 @@
8
8
  <title>{% trans "Welcome to Modoboa" %}</title>
9
9
  <link rel="icon" type="image/x-icon" href="{% static 'css/favicon.ico' %}" />
10
10
  <link rel="stylesheet" type="text/css" href="{% static 'css/offline.css' %}" />
11
+ <style>
12
+ .left-column {
13
+ background-color: {{ theme_primary_color }};
14
+ text-align: center;
15
+ }
16
+ .btn-primary {
17
+ background-color: {{ theme_primary_color }};
18
+ color: white;
19
+ }
20
+ .btn-primary:hover {
21
+ background-color: {{ theme_primary_color_dark }};
22
+ }
23
+ .footer a {
24
+ color: #{{ theme_primary_color }};
25
+ text-decoration: none;
26
+ font-size: 14px;
27
+ }
28
+ </style>
11
29
  {% block extra_css %}{% endblock %}
12
30
  </head>
13
31
  <body>
@@ -38,7 +38,7 @@
38
38
 
39
39
  {% block sub_content %}
40
40
  {% for announcement in announcements %}
41
- <div>{{ announcement|safe }}</div>
41
+ <div class="annoucement">{{ announcement|safe }}</div>
42
42
  {% endfor %}
43
43
  {% endblock %}
44
44
 
modoboa/urls.py CHANGED
@@ -13,6 +13,7 @@ from modoboa.core.extensions import exts_pool
13
13
 
14
14
  urlpatterns = [
15
15
  path("", include("modoboa.core.urls")),
16
+ path("", include("modoboa.autoconfig.urls")),
16
17
  path(
17
18
  "accounts/password_reset/",
18
19
  core_views.PasswordResetView.as_view(),
@@ -51,11 +52,6 @@ urlpatterns += exts_pool.get_urls()
51
52
  # API urls
52
53
  urlpatterns += [
53
54
  # FIXME: legacy, to remove ASAP
54
- path(
55
- "docs/openapi.json",
56
- SpectacularJSONAPIView.as_view(api_version="v1"),
57
- name="schema-v1-legacy",
58
- ),
59
55
  path(
60
56
  "api/schema-v1/",
61
57
  SpectacularJSONAPIView.as_view(api_version="v1"),
@@ -1,11 +1,11 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: modoboa
3
- Version: 2.5.1
3
+ Version: 2.6.1
4
4
  Summary: Mail hosting made simple
5
5
  Author-email: Antoine Nguyen <tonio@ngyn.org>
6
6
  License: ISC License
7
7
 
8
- Copyright (c) 2009-2023, Antoine Nguyen <tonio@ngyn.org>
8
+ Copyright (c) 2009-2025, Antoine Nguyen <tonio@ngyn.org>
9
9
 
10
10
  Permission to use, copy, modify, and/or distribute this software for any
11
11
  purpose with or without fee is hereby granted, provided that the above
@@ -40,9 +40,9 @@ 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.6
44
- Requires-Dist: django-phonenumber-field[phonenumbers]==8.1.0
45
- Requires-Dist: django-reversion==5.1.0
43
+ Requires-Dist: django==5.2.7
44
+ Requires-Dist: django-phonenumber-field[phonenumbers]==8.3.0
45
+ Requires-Dist: django-reversion==6.0.0
46
46
  Requires-Dist: django-xforwardedfor-middleware==2.0
47
47
  Requires-Dist: django-otp==1.6.1
48
48
  Requires-Dist: django-filter
@@ -55,12 +55,12 @@ Requires-Dist: uritemplate
55
55
  Requires-Dist: django-oauth-toolkit
56
56
  Requires-Dist: django-cors-headers
57
57
  Requires-Dist: passlib~=1.7.4
58
- Requires-Dist: bcrypt
58
+ Requires-Dist: bcrypt==4.3.0
59
59
  Requires-Dist: asgiref
60
60
  Requires-Dist: dnspython==2.8.0
61
- Requires-Dist: feedparser==6.0.11
61
+ Requires-Dist: feedparser==6.0.12
62
62
  Requires-Dist: fido2==2.0.0
63
- Requires-Dist: gevent==25.8.2
63
+ Requires-Dist: gevent==25.9.1
64
64
  Requires-Dist: progressbar33==2.4
65
65
  Requires-Dist: python-dateutil
66
66
  Requires-Dist: cryptography
@@ -173,7 +173,7 @@ Getting help
173
173
 
174
174
  Modoboa is a free software and is totally open source BUT you can hire the team if you need professional services. More information here: https://modoboa.org/en/professional-services/.
175
175
 
176
- Contracting a support plan if a good way to ensure your installation stays available and up-to-date and it will help the project to be sustainable :)
176
+ Contracting a support plan is a good way to ensure your installation stays available and up-to-date and it will help the project to be sustainable :)
177
177
 
178
178
  *********
179
179
  Community