modoboa 2.6.3__py3-none-any.whl → 2.6.5__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 (295) hide show
  1. modoboa/autoreply/models.py +4 -4
  2. modoboa/calendars/backends/caldav_.py +3 -1
  3. modoboa/core/checks.py +5 -0
  4. modoboa/core/tests/test_checks.py +27 -0
  5. modoboa/frontend_dist/assets/{AccountAliasForm-OvFAP6Ru.js → AccountAliasForm-B-hTKSFr.js} +1 -1
  6. modoboa/frontend_dist/assets/AccountEditView-LkP_qhf_.js +1 -0
  7. modoboa/frontend_dist/assets/AccountLayout-APeC9bsN.js +1 -0
  8. modoboa/frontend_dist/assets/{AccountPasswordSubForm-XZN7PcjO.js → AccountPasswordSubForm-D4vB2yQK.js} +1 -1
  9. modoboa/frontend_dist/assets/AccountView-CloBP1BY.js +1 -0
  10. modoboa/frontend_dist/assets/{AddressBook-xlb9-9-o.js → AddressBook-C03MXg3y.js} +1 -1
  11. modoboa/frontend_dist/assets/{AdminLayout-BQfhhYgv.js → AdminLayout-DFmyKOo6.js} +1 -1
  12. modoboa/frontend_dist/assets/AlarmsView-CFhH0I5d.js +1 -0
  13. modoboa/frontend_dist/assets/AliasEditView-BVjNJekt.js +1 -0
  14. modoboa/frontend_dist/assets/{AliasRecipientForm-_pUaKKG_.js → AliasRecipientForm-CZ_SvjtG.js} +1 -1
  15. modoboa/frontend_dist/assets/{AliasView-Da4mvH53.js → AliasView-DvvI6cV9.js} +1 -1
  16. modoboa/frontend_dist/assets/{AuditTrailView-BfLVvAwj.js → AuditTrailView-Cyq25Jle.js} +1 -1
  17. modoboa/frontend_dist/assets/CalendarView-C_dSXRp9.js +1 -0
  18. modoboa/frontend_dist/assets/{ChoiceField-BpSW5-Ay.js → ChoiceField-BPhUvoyr.js} +1 -1
  19. modoboa/frontend_dist/assets/ComposeEmailForm-D3yUbBJX.css +1 -0
  20. modoboa/frontend_dist/assets/ComposeEmailForm-Ns5SYs4J.js +1 -0
  21. modoboa/frontend_dist/assets/ComposeEmailView-DgUfiWEH.js +1 -0
  22. modoboa/frontend_dist/assets/{ConfirmDialog-BemItW2F.js → ConfirmDialog-BMIg94-U.js} +1 -1
  23. modoboa/frontend_dist/assets/ConnectedLayout-C6HNXWkp.css +1 -0
  24. modoboa/frontend_dist/assets/ConnectedLayout-CSXdVJtV.js +1 -0
  25. modoboa/frontend_dist/assets/{CreationForm-B00QE2E0.js → CreationForm-CaAZYATm.js} +1 -1
  26. modoboa/frontend_dist/assets/{CreationForm-HaiQhqwK.css → CreationForm-NOzzyspA.css} +1 -1
  27. modoboa/frontend_dist/assets/{DashboardView-CZyZayos.js → DashboardView-DErmyUoy.js} +1 -1
  28. modoboa/frontend_dist/assets/DomainAdminList-BO8_4Cwt.js +1 -0
  29. modoboa/frontend_dist/assets/{DomainEditView-CMsF-ytQ.js → DomainEditView-BXylM4aB.js} +1 -1
  30. modoboa/frontend_dist/assets/{DomainTransportForm-BUDOfXiX.js → DomainTransportForm-Ccw5BXyM.js} +1 -1
  31. modoboa/frontend_dist/assets/DomainView-Bd5XQI-1.js +4 -0
  32. modoboa/frontend_dist/assets/DomainsView-CC1EwRId.js +1 -0
  33. modoboa/frontend_dist/assets/{EmailField-BXU27oIO.js → EmailField-BFgga4zp.js} +1 -1
  34. modoboa/frontend_dist/assets/{EmailView-WHGLT3Ne.js → EmailView-DPWTch_6.js} +1 -1
  35. modoboa/frontend_dist/assets/EmptyLayout-DAw7fAab.js +1 -0
  36. modoboa/frontend_dist/assets/FiltersView-Cg9lkLw0.js +1 -0
  37. modoboa/frontend_dist/assets/ForwardEmailView-Dd1sxgaP.js +1 -0
  38. modoboa/frontend_dist/assets/HtmlEditor-DNn3CY-w.js +140 -0
  39. modoboa/frontend_dist/assets/{IdentitiesView-Cl2lbfkM.css → IdentitiesView-C93He_db.css} +1 -1
  40. modoboa/frontend_dist/assets/IdentitiesView-CiHIQ9Qt.js +1 -0
  41. modoboa/frontend_dist/assets/{InformationView-DF80M5Z2.js → InformationView-Cc0aBA5j.js} +1 -1
  42. modoboa/frontend_dist/assets/{LoadingData-Dcu-PCpp.js → LoadingData-CnQ_aVqa.js} +1 -1
  43. modoboa/frontend_dist/assets/{LoginCallbackView-D4hN9u_5.js → LoginCallbackView-Nh_gmh8e.js} +1 -1
  44. modoboa/frontend_dist/assets/{LoginView-1M33LHpJ.js → LoginView-BtC9BHuJ.js} +1 -1
  45. modoboa/frontend_dist/assets/MailboxView-DIVABvk5.css +1 -0
  46. modoboa/frontend_dist/assets/MailboxView-DplC0IXR.js +5 -0
  47. modoboa/frontend_dist/assets/{MenuItems-CpOwNJeC.js → MenuItems-efx2rqwT.js} +1 -1
  48. modoboa/frontend_dist/assets/{MessageView-DODItZwB.js → MessageView-C1Goz-hY.js} +1 -1
  49. modoboa/frontend_dist/assets/{MessagesView-CCYdnuSv.js → MessagesView-CesYYZ9f.js} +1 -1
  50. modoboa/frontend_dist/assets/MigrationsView-DSBk8T0y.js +1 -0
  51. modoboa/frontend_dist/assets/{ParametersForm-CWxNQ8rG.js → ParametersForm-BegEnkQM.js} +1 -1
  52. modoboa/frontend_dist/assets/ParametersView-B8W_PAiz.js +1 -0
  53. modoboa/frontend_dist/assets/ParametersView-Dsx2M_g9.js +1 -0
  54. modoboa/frontend_dist/assets/ProviderEditView-PEAr7MA1.js +1 -0
  55. modoboa/frontend_dist/assets/ProviderGeneralForm-BAELnXh6.js +1 -0
  56. modoboa/frontend_dist/assets/ProvidersView-CHvQf3Vv.js +1 -0
  57. modoboa/frontend_dist/assets/QuarantineLayout-BWEaBK48.js +1 -0
  58. modoboa/frontend_dist/assets/{QuarantineView-CZewBT4b.js → QuarantineView-BzjeDhTm.js} +1 -1
  59. modoboa/frontend_dist/assets/ReplyEmailView-CwQ9jsce.js +1 -0
  60. modoboa/frontend_dist/assets/{ResourcesForm-CD3wObzE.js → ResourcesForm-noC3AXd9.js} +1 -1
  61. modoboa/frontend_dist/assets/SelfServiceLayout-DQgRMu0L.js +1 -0
  62. modoboa/frontend_dist/assets/{SettingsView-DIvKGRBY.css → SettingsView-DJTdIeRK.css} +1 -1
  63. modoboa/frontend_dist/assets/SettingsView-Dgwpfd8O.js +6 -0
  64. modoboa/frontend_dist/assets/{StatisticsView-BxSjiD65.js → StatisticsView-BZkVSh5o.js} +1 -1
  65. modoboa/frontend_dist/assets/TimeSerieChart-BXJwhTMO.js +1 -0
  66. modoboa/frontend_dist/assets/TimeSerieChart-C3XHmlRd.css +1 -0
  67. modoboa/frontend_dist/assets/UserLayout-CWK9ICfE.js +1 -0
  68. modoboa/frontend_dist/assets/{VAlert-iGJ3gOzk.css → VAlert-Bkuw9MFB.css} +1 -1
  69. modoboa/frontend_dist/assets/VAlert-Buv8Z5G4.js +1 -0
  70. modoboa/frontend_dist/assets/VApp-C9NK-Gu6.css +1 -0
  71. modoboa/frontend_dist/assets/VApp-CiIBWB_Q.js +1 -0
  72. modoboa/frontend_dist/assets/VAutocomplete-DcNqTIie.js +1 -0
  73. modoboa/frontend_dist/assets/VAutocomplete-hzGuLlUI.css +1 -0
  74. modoboa/frontend_dist/assets/VAvatar-BPhnln71.css +1 -0
  75. modoboa/frontend_dist/assets/VAvatar-BsHplcRP.js +1 -0
  76. modoboa/frontend_dist/assets/{VBadge-BQrRJ9S0.css → VBadge-Bqx6XeRo.css} +1 -1
  77. modoboa/frontend_dist/assets/VBadge-CavP_E2g.js +1 -0
  78. modoboa/frontend_dist/assets/{VCard-BNvk7mV7.css → VCard-BdSLQNRY.css} +1 -1
  79. modoboa/frontend_dist/assets/VCard-D7AwBs4w.js +1 -0
  80. modoboa/frontend_dist/assets/VCheckbox-CKW9lz5i.js +1 -0
  81. modoboa/frontend_dist/assets/{VCheckboxBtn-p4bo2BTE.js → VCheckboxBtn-B5evxN9K.js} +1 -1
  82. modoboa/frontend_dist/assets/VColorPicker-B_lVDaYR.css +1 -0
  83. modoboa/frontend_dist/assets/VColorPicker-Bsrz8yif.js +1 -0
  84. modoboa/frontend_dist/assets/{VContainer-CmyIOuWp.js → VContainer-DY9021j4.js} +1 -1
  85. modoboa/frontend_dist/assets/VDataTable-CLcLRj9B.css +1 -0
  86. modoboa/frontend_dist/assets/VDataTable-ocZo8ju0.js +1 -0
  87. modoboa/frontend_dist/assets/VDataTableServer-CJfpYXQW.js +1 -0
  88. modoboa/frontend_dist/assets/VDataTableVirtual-Cr8yw49k.js +1 -0
  89. modoboa/frontend_dist/assets/VDialog-CUMh3paI.js +1 -0
  90. modoboa/frontend_dist/assets/{VExpansionPanels-CBqUBAh-.js → VExpansionPanels-CkwHiKsA.js} +1 -1
  91. modoboa/frontend_dist/assets/VExpansionPanels-Dyw0hWW-.css +1 -0
  92. modoboa/frontend_dist/assets/VFileInput-D5qlksIG.js +1 -0
  93. modoboa/frontend_dist/assets/{VFileInput-VtUg4zpy.css → VFileInput-Dwzvf-gD.css} +1 -1
  94. modoboa/frontend_dist/assets/{VForm-CxFPdkZa.js → VForm-ClJU5x_v.js} +1 -1
  95. modoboa/frontend_dist/assets/VGrid-GYROgRMo.css +1 -0
  96. modoboa/frontend_dist/assets/VInput-DhzSMFXh.js +1 -0
  97. modoboa/frontend_dist/assets/VMenu-B53a3gm6.js +1 -0
  98. modoboa/frontend_dist/assets/VMenu-BEipA1lw.css +1 -0
  99. modoboa/frontend_dist/assets/VPicker-B928ZVJQ.js +1 -0
  100. modoboa/frontend_dist/assets/VPicker-ClSXs6kv.css +1 -0
  101. modoboa/frontend_dist/assets/VProgressCircular-C6u34DRJ.css +1 -0
  102. modoboa/frontend_dist/assets/VProgressCircular-viI3jDXe.js +1 -0
  103. modoboa/frontend_dist/assets/VRadioGroup-C0bqFrYg.js +1 -0
  104. modoboa/frontend_dist/assets/{VRow-CVWfiMs5.js → VRow-DyK_Mj7R.js} +1 -1
  105. modoboa/frontend_dist/assets/VSelect-DQzySRN1.css +1 -0
  106. modoboa/frontend_dist/assets/VSelect-y0E5_vPn.js +1 -0
  107. modoboa/frontend_dist/assets/VSelectionControl-Dkms9_P5.js +1 -0
  108. modoboa/frontend_dist/assets/VSheet-DQkh_hsX.js +1 -0
  109. modoboa/frontend_dist/assets/VSpacer-CBqB9uSt.js +1 -0
  110. modoboa/frontend_dist/assets/{VSwitch-Mm7Rd7At.css → VSwitch-C6REVr_Y.css} +1 -1
  111. modoboa/frontend_dist/assets/VSwitch-D4xdR9jz.js +1 -0
  112. modoboa/frontend_dist/assets/VTable-BsI6FsWH.css +1 -0
  113. modoboa/frontend_dist/assets/VTable-D8ZwwC_B.js +1 -0
  114. modoboa/frontend_dist/assets/VTabs-D2c0KeF2.js +1 -0
  115. modoboa/frontend_dist/assets/VTabs-NzpINroH.css +1 -0
  116. modoboa/frontend_dist/assets/VTextField-Cow3HZvI.css +1 -0
  117. modoboa/frontend_dist/assets/VTextField-DvvH1ciR.js +1 -0
  118. modoboa/frontend_dist/assets/VTextarea-DHtXtzqP.js +1 -0
  119. modoboa/frontend_dist/assets/VTextarea-DyGjqrlm.css +1 -0
  120. modoboa/frontend_dist/assets/VToolbar-CB2GrZpA.css +1 -0
  121. modoboa/frontend_dist/assets/VToolbar-pvLQtmbU.js +1 -0
  122. modoboa/frontend_dist/assets/VWindowItem-DErNPSH8.js +1 -0
  123. modoboa/frontend_dist/assets/VWindowItem-DqNaT6b1.css +1 -0
  124. modoboa/frontend_dist/assets/WebmailLayout-BzW0LWYp.css +1 -0
  125. modoboa/frontend_dist/assets/WebmailLayout-D7J-QJ-0.js +1 -0
  126. modoboa/frontend_dist/assets/{accounts-CaYgxMST.js → accounts-BZBqbAmd.js} +1 -1
  127. modoboa/frontend_dist/assets/{admin-BZpOSErf.js → admin-uCrKjpln.js} +1 -1
  128. modoboa/frontend_dist/assets/{aliases-CbIEbmJ9.js → aliases-CFwFkX45.js} +1 -1
  129. modoboa/frontend_dist/assets/{amavis-BUExu2Ci.js → amavis-B4ScfQsG.js} +1 -1
  130. modoboa/frontend_dist/assets/{amavis-DrKC7POz.js → amavis-DCy0U0TD.js} +1 -1
  131. modoboa/frontend_dist/assets/{contacts-BszP28I9.js → contacts-DKmh2q-4.js} +1 -1
  132. modoboa/frontend_dist/assets/{domains-DGdr9Equ.js → domains-CDE4_LDF.js} +1 -1
  133. modoboa/frontend_dist/assets/domains.store-a9Y5UlDV.js +1 -0
  134. modoboa/frontend_dist/assets/filter-BVvMTmPG.js +1 -0
  135. modoboa/frontend_dist/assets/{global.store-xmZ6sXxZ.js → global.store-Bha4Z76j.js} +1 -1
  136. modoboa/frontend_dist/assets/{importExport-DMPLMrzl.js → importExport-EgijWlC1.js} +1 -1
  137. modoboa/frontend_dist/assets/{index-B1bJH8Ti.css → index-B9q1vO3K.css} +1 -1
  138. modoboa/frontend_dist/assets/index-BjibLozh.js +995 -0
  139. modoboa/frontend_dist/assets/index-Dwg6jPTX.js +1 -0
  140. modoboa/frontend_dist/assets/{language.store-DuvIgs5v.js → language.store-DGuI8jG0.js} +1 -1
  141. modoboa/frontend_dist/assets/languages-Cge6pECg.js +1 -0
  142. modoboa/frontend_dist/assets/layout-5PvsmkGR.js +1 -0
  143. modoboa/frontend_dist/assets/{layout.store-oWyirLgk.js → layout.store-DJVcXtxk.js} +1 -1
  144. modoboa/frontend_dist/assets/{logos-DYp82smF.js → logos-CMmd0hOG.js} +1 -1
  145. modoboa/frontend_dist/assets/{logs-B8GaGVAK.js → logs-D2GOydPZ.js} +1 -1
  146. modoboa/frontend_dist/assets/{parameters-CxHnQU2I.js → parameters-DJdlq9sh.js} +1 -1
  147. modoboa/frontend_dist/assets/{parameters.store-VA_AUeEJ.js → parameters.store-DH3pPlaT.js} +1 -1
  148. modoboa/frontend_dist/assets/{permissions-TImOfY3I.js → permissions-CgFJFhCp.js} +1 -1
  149. modoboa/frontend_dist/assets/{ssrBoot-B5vxBC28.js → ssrBoot-ChTB-PYP.js} +1 -1
  150. modoboa/frontend_dist/assets/{tag-D-paBiFC.js → tag-CvrHE14f.js} +1 -1
  151. modoboa/frontend_dist/assets/{theme-Tvpj701M.js → theme-DFzlhSh5.js} +1 -1
  152. modoboa/frontend_dist/assets/transports-BUSYxSF4.js +1 -0
  153. modoboa/frontend_dist/assets/webmail-HVg3ZHC0.js +1 -0
  154. modoboa/frontend_dist/assets/webmail.store-D-d88s4w.js +1 -0
  155. modoboa/frontend_dist/index.html +2 -2
  156. modoboa/imap_migration/api/v2/serializers.py +13 -0
  157. modoboa/imap_migration/tests.py +7 -0
  158. modoboa/locale/br/LC_MESSAGES/django.po +487 -79
  159. modoboa/locale/cs/LC_MESSAGES/django.po +420 -75
  160. modoboa/locale/cs_CZ/LC_MESSAGES/django.po +534 -139
  161. modoboa/locale/de/LC_MESSAGES/django.mo +0 -0
  162. modoboa/locale/de/LC_MESSAGES/django.po +853 -220
  163. modoboa/locale/de_DE/LC_MESSAGES/django.po +476 -77
  164. modoboa/locale/el_GR/LC_MESSAGES/django.po +558 -154
  165. modoboa/locale/en/LC_MESSAGES/django.po +418 -75
  166. modoboa/locale/es/LC_MESSAGES/django.po +543 -151
  167. modoboa/locale/es_MX/LC_MESSAGES/django.po +418 -75
  168. modoboa/locale/fi/LC_MESSAGES/django.po +491 -79
  169. modoboa/locale/fr/LC_MESSAGES/django.mo +0 -0
  170. modoboa/locale/fr/LC_MESSAGES/django.po +420 -76
  171. modoboa/locale/hu/LC_MESSAGES/django.po +418 -75
  172. modoboa/locale/it/LC_MESSAGES/django.po +540 -141
  173. modoboa/locale/ja_JP/LC_MESSAGES/django.mo +0 -0
  174. modoboa/locale/ja_JP/LC_MESSAGES/django.po +735 -180
  175. modoboa/locale/ka/LC_MESSAGES/django.po +418 -75
  176. modoboa/locale/nl_NL/LC_MESSAGES/django.po +544 -152
  177. modoboa/locale/no/LC_MESSAGES/django.po +418 -75
  178. modoboa/locale/pl_PL/LC_MESSAGES/django.po +564 -162
  179. modoboa/locale/pt_BR/LC_MESSAGES/django.po +567 -157
  180. modoboa/locale/pt_PT/LC_MESSAGES/django.po +521 -132
  181. modoboa/locale/ro_RO/LC_MESSAGES/django.po +498 -79
  182. modoboa/locale/ru/LC_MESSAGES/django.po +530 -137
  183. modoboa/locale/si/LC_MESSAGES/django.po +418 -75
  184. modoboa/locale/sk/LC_MESSAGES/django.po +420 -75
  185. modoboa/locale/sk_SK/LC_MESSAGES/django.po +420 -75
  186. modoboa/locale/sl_SI/LC_MESSAGES/django.po +441 -80
  187. modoboa/locale/sv/LC_MESSAGES/django.po +556 -152
  188. modoboa/locale/tr/LC_MESSAGES/django.po +470 -77
  189. modoboa/locale/tr_TR/LC_MESSAGES/django.po +454 -75
  190. modoboa/locale/uk/LC_MESSAGES/django.po +420 -75
  191. modoboa/locale/zh/LC_MESSAGES/django.po +417 -75
  192. modoboa/locale/zh_CN/LC_MESSAGES/django.po +417 -75
  193. modoboa/locale/zh_TW/LC_MESSAGES/django.po +486 -77
  194. modoboa/sievefilters/api/v2/tests.py +6 -0
  195. modoboa/sievefilters/api/v2/viewsets.py +10 -0
  196. modoboa/webmail/serializers.py +2 -1
  197. modoboa/webmail/tests/test_viewsets.py +16 -4
  198. modoboa/webmail/viewsets.py +17 -3
  199. {modoboa-2.6.3.dist-info → modoboa-2.6.5.dist-info}/METADATA +2 -2
  200. {modoboa-2.6.3.dist-info → modoboa-2.6.5.dist-info}/RECORD +205 -204
  201. modoboa/frontend_dist/assets/AccountEditView-N9Rsx1Lu.js +0 -1
  202. modoboa/frontend_dist/assets/AccountLayout-y-oYLez4.js +0 -1
  203. modoboa/frontend_dist/assets/AccountView-CGjtYjdN.js +0 -1
  204. modoboa/frontend_dist/assets/AlarmsView-CWISEf0x.js +0 -1
  205. modoboa/frontend_dist/assets/AliasEditView-BojxR0y0.js +0 -1
  206. modoboa/frontend_dist/assets/CalendarView-BiD8oiJQ.js +0 -1
  207. modoboa/frontend_dist/assets/ComposeEmailForm-DHFthaP6.css +0 -1
  208. modoboa/frontend_dist/assets/ComposeEmailForm-THBK5DPz.js +0 -1
  209. modoboa/frontend_dist/assets/ComposeEmailView-Byb6o1lF.js +0 -1
  210. modoboa/frontend_dist/assets/ConnectedLayout-Bxh21hcH.css +0 -1
  211. modoboa/frontend_dist/assets/ConnectedLayout-CuyGO8mE.js +0 -1
  212. modoboa/frontend_dist/assets/DomainAdminList-BW50F_7s.js +0 -1
  213. modoboa/frontend_dist/assets/DomainView-HFg7eBrA.js +0 -5
  214. modoboa/frontend_dist/assets/DomainsView-DSIdADod.js +0 -1
  215. modoboa/frontend_dist/assets/EmptyLayout-9_hUsyI4.js +0 -1
  216. modoboa/frontend_dist/assets/FiltersView-DxwCWP6V.js +0 -1
  217. modoboa/frontend_dist/assets/ForwardEmailView-R2VNw89Y.js +0 -1
  218. modoboa/frontend_dist/assets/HtmlEditor-9PKspQnj.js +0 -93
  219. modoboa/frontend_dist/assets/IdentitiesView-BiBhYfLG.js +0 -1
  220. modoboa/frontend_dist/assets/MailboxView-7GDx4hP8.js +0 -1
  221. modoboa/frontend_dist/assets/MailboxView-CfStlWhk.css +0 -1
  222. modoboa/frontend_dist/assets/MigrationsView-D8zvt5Gg.js +0 -1
  223. modoboa/frontend_dist/assets/ParametersView-B4LtgRrm.js +0 -1
  224. modoboa/frontend_dist/assets/ParametersView-BEM87Op8.js +0 -1
  225. modoboa/frontend_dist/assets/ProviderEditView-DxGMMxi1.js +0 -1
  226. modoboa/frontend_dist/assets/ProviderGeneralForm-DqVUshAw.js +0 -1
  227. modoboa/frontend_dist/assets/ProvidersView-YAYrezMm.js +0 -1
  228. modoboa/frontend_dist/assets/QuarantineLayout-Bj2STsUo.js +0 -1
  229. modoboa/frontend_dist/assets/ReplyEmailView-C-L78-Uh.js +0 -1
  230. modoboa/frontend_dist/assets/SelfServiceLayout-CFzaGLsg.js +0 -1
  231. modoboa/frontend_dist/assets/SettingsView-C7_cp9nZ.js +0 -6
  232. modoboa/frontend_dist/assets/TimeSerieChart-BY4l0TOt.js +0 -1
  233. modoboa/frontend_dist/assets/TimeSerieChart-Dn6Wznn8.css +0 -1
  234. modoboa/frontend_dist/assets/UserLayout-ByBCLOr-.js +0 -1
  235. modoboa/frontend_dist/assets/VAlert-Ck0PurTo.js +0 -1
  236. modoboa/frontend_dist/assets/VApp-CSICh40V.js +0 -1
  237. modoboa/frontend_dist/assets/VApp-DwhR0sAF.css +0 -1
  238. modoboa/frontend_dist/assets/VAutocomplete-BdsSHywe.js +0 -1
  239. modoboa/frontend_dist/assets/VAutocomplete-CPd3yAvV.css +0 -1
  240. modoboa/frontend_dist/assets/VAvatar-BKSHKr1K.js +0 -1
  241. modoboa/frontend_dist/assets/VAvatar-DXG1YGB5.css +0 -1
  242. modoboa/frontend_dist/assets/VBadge-DvuthTvS.js +0 -1
  243. modoboa/frontend_dist/assets/VCard-B7MvPr5E.js +0 -1
  244. modoboa/frontend_dist/assets/VCheckbox-er0bxYP_.js +0 -1
  245. modoboa/frontend_dist/assets/VColorPicker-C5_3l312.css +0 -1
  246. modoboa/frontend_dist/assets/VColorPicker-Dnoyj5rl.js +0 -1
  247. modoboa/frontend_dist/assets/VDataTable-CJyX7uj5.css +0 -1
  248. modoboa/frontend_dist/assets/VDataTable-uO4iY3PI.js +0 -1
  249. modoboa/frontend_dist/assets/VDataTableServer-LfLFgxCE.js +0 -1
  250. modoboa/frontend_dist/assets/VDataTableVirtual-C_aJRTho.js +0 -1
  251. modoboa/frontend_dist/assets/VDialog-ByBq-y2_.js +0 -1
  252. modoboa/frontend_dist/assets/VExpansionPanels-RsCANmDP.css +0 -1
  253. modoboa/frontend_dist/assets/VFileInput-CYUvB_Lr.js +0 -1
  254. modoboa/frontend_dist/assets/VGrid-Cb7FdSrp.css +0 -1
  255. modoboa/frontend_dist/assets/VInput-quQSdtEy.js +0 -1
  256. modoboa/frontend_dist/assets/VMenu--sryJ9Uc.js +0 -1
  257. modoboa/frontend_dist/assets/VMenu-5VuRw-HA.css +0 -1
  258. modoboa/frontend_dist/assets/VPicker-C6hgT7tI.js +0 -1
  259. modoboa/frontend_dist/assets/VPicker-CfsXFhHv.css +0 -1
  260. modoboa/frontend_dist/assets/VProgressCircular-BPJdTVu4.css +0 -1
  261. modoboa/frontend_dist/assets/VProgressCircular-DN4UW8ON.js +0 -1
  262. modoboa/frontend_dist/assets/VRadioGroup-G5s53Jnf.js +0 -1
  263. modoboa/frontend_dist/assets/VSelect-Dvkl50dw.css +0 -1
  264. modoboa/frontend_dist/assets/VSelect-Okzuwz-S.js +0 -1
  265. modoboa/frontend_dist/assets/VSelectionControl-DMlq6-TE.js +0 -1
  266. modoboa/frontend_dist/assets/VSheet-iS_sxEl7.js +0 -1
  267. modoboa/frontend_dist/assets/VSpacer-yH183XvN.js +0 -1
  268. modoboa/frontend_dist/assets/VSwitch-BYsITk7O.js +0 -1
  269. modoboa/frontend_dist/assets/VTable-C1FqhNBY.js +0 -1
  270. modoboa/frontend_dist/assets/VTable-CHRVGI94.css +0 -1
  271. modoboa/frontend_dist/assets/VTabs-Bv8FUb0o.css +0 -1
  272. modoboa/frontend_dist/assets/VTabs-DMJmfYTo.js +0 -1
  273. modoboa/frontend_dist/assets/VTextField-BzBVKKob.css +0 -1
  274. modoboa/frontend_dist/assets/VTextField-fWt9fUJr.js +0 -1
  275. modoboa/frontend_dist/assets/VTextarea-BTR7f0gW.css +0 -1
  276. modoboa/frontend_dist/assets/VTextarea-CVJNAf81.js +0 -1
  277. modoboa/frontend_dist/assets/VToolbar-BxjAEfSk.css +0 -1
  278. modoboa/frontend_dist/assets/VToolbar-DYf0Nubr.js +0 -1
  279. modoboa/frontend_dist/assets/VWindowItem-CWBhiE_Y.css +0 -1
  280. modoboa/frontend_dist/assets/VWindowItem-mmufRveK.js +0 -1
  281. modoboa/frontend_dist/assets/WebmailLayout-BmMZ58iv.js +0 -1
  282. modoboa/frontend_dist/assets/WebmailLayout-UlftFiiT.css +0 -1
  283. modoboa/frontend_dist/assets/domains.store-W5AiCN3q.js +0 -1
  284. modoboa/frontend_dist/assets/filter-BH0Tmqu3.js +0 -1
  285. modoboa/frontend_dist/assets/index-DuzUMVLM.js +0 -1
  286. modoboa/frontend_dist/assets/index-WQ41F5VK.js +0 -982
  287. modoboa/frontend_dist/assets/languages-CE73-P-v.js +0 -1
  288. modoboa/frontend_dist/assets/layout-eXe9ZQ1u.js +0 -1
  289. modoboa/frontend_dist/assets/transports-DmREsCgU.js +0 -1
  290. modoboa/frontend_dist/assets/webmail-BsviLQXI.js +0 -1
  291. {modoboa-2.6.3.data → modoboa-2.6.5.data}/scripts/modoboa-admin.py +0 -0
  292. {modoboa-2.6.3.dist-info → modoboa-2.6.5.dist-info}/WHEEL +0 -0
  293. {modoboa-2.6.3.dist-info → modoboa-2.6.5.dist-info}/entry_points.txt +0 -0
  294. {modoboa-2.6.3.dist-info → modoboa-2.6.5.dist-info}/licenses/LICENSE +0 -0
  295. {modoboa-2.6.3.dist-info → modoboa-2.6.5.dist-info}/top_level.txt +0 -0
@@ -96,6 +96,12 @@ class FilterSetViewSetTestCase(PatcherMixin, ModoAPITestCase):
96
96
  resp = self.client.post(url)
97
97
  self.assertEqual(resp.status_code, 200)
98
98
 
99
+ def test_deactivate_active(self):
100
+ self.authenticate()
101
+ url = reverse("v2:filterset-deactivate-active")
102
+ resp = self.client.post(url)
103
+ self.assertEqual(resp.status_code, 200)
104
+
99
105
  def test_download(self):
100
106
  self.authenticate()
101
107
  url = reverse("v2:filterset-download", args=["unknown"])
@@ -99,6 +99,16 @@ class FilterSetViewSet(viewsets.ViewSet):
99
99
  return response.Response({"error": str(err)}, status=400)
100
100
  return response.Response()
101
101
 
102
+ @action(methods=["post"], detail=False)
103
+ def deactivate_active(self, request):
104
+ """Deactivate the current active filterset."""
105
+ sclient = self.get_sieve_client(request)
106
+ try:
107
+ sclient.activatescript("")
108
+ except SieveClientError as err:
109
+ return response.Response({"error": str(err)}, status=400)
110
+ return response.Response()
111
+
102
112
  @action(methods=["get"], detail=True)
103
113
  def download(self, request, pk):
104
114
  """Download the content of an existing filter set."""
@@ -173,7 +173,8 @@ class EmailSerializer(serializers.Serializer):
173
173
 
174
174
  class MoveSelectionSerializer(serializers.Serializer):
175
175
 
176
- mailbox = serializers.CharField()
176
+ source = serializers.CharField()
177
+ destination = serializers.CharField(required=False)
177
178
  selection = serializers.ListField(child=serializers.CharField())
178
179
 
179
180
  def validate_selection(self, value):
@@ -173,15 +173,27 @@ class UserEmailViewSetTestCase(WebmailTestCase):
173
173
  self.assertEqual(response.status_code, 200)
174
174
  self.assertIn("Message-ID", response.json()["source"])
175
175
 
176
+ def test_move(self):
177
+ self.authenticate()
178
+ url = reverse("v2:webmail-email-move")
179
+ body = {"source": "INBOX", "destination": "Junk", "selection": [1]}
180
+ response = self.client.post(url, body, format="json")
181
+ self.assertEqual(response.status_code, 200)
182
+ self.assertEqual(response.json()["count"], 1)
183
+
184
+ body = {"source": "INBOX", "selection": [1]}
185
+ response = self.client.post(url, body, format="json")
186
+ self.assertEqual(response.status_code, 400)
187
+
176
188
  def test_delete(self):
177
189
  self.authenticate()
178
190
  url = reverse("v2:webmail-email-delete")
179
- body = {"mailbox": "INBOX", "selection": [1]}
191
+ body = {"source": "INBOX", "selection": [1]}
180
192
  response = self.client.post(url, body, format="json")
181
193
  self.assertEqual(response.status_code, 200)
182
194
  self.assertEqual(response.json()["count"], 1)
183
195
 
184
- body = {"mailbox": "INBOX", "selection": ["truc"]}
196
+ body = {"source": "INBOX", "selection": ["truc"]}
185
197
  response = self.client.post(url, body, format="json")
186
198
  self.assertEqual(response.status_code, 200)
187
199
  self.assertEqual(response.json()["count"], 0)
@@ -189,7 +201,7 @@ class UserEmailViewSetTestCase(WebmailTestCase):
189
201
  def test_mark_as_junk(self):
190
202
  self.authenticate()
191
203
  url = reverse("v2:webmail-email-mark-as-junk")
192
- body = {"mailbox": "INBOX", "selection": [1]}
204
+ body = {"source": "INBOX", "selection": [1]}
193
205
  response = self.client.post(url, body, format="json")
194
206
  self.assertEqual(response.status_code, 200)
195
207
  self.assertEqual(response.json()["count"], 1)
@@ -197,7 +209,7 @@ class UserEmailViewSetTestCase(WebmailTestCase):
197
209
  def test_mark_as_not_junk(self):
198
210
  self.authenticate()
199
211
  url = reverse("v2:webmail-email-mark-as-not-junk")
200
- body = {"mailbox": "INBOX", "selection": [1]}
212
+ body = {"source": "INBOX", "selection": [1]}
201
213
  response = self.client.post(url, body, format="json")
202
214
  self.assertEqual(response.status_code, 200)
203
215
  self.assertEqual(response.json()["count"], 1)
@@ -9,6 +9,7 @@ from rest_framework import parsers, response, viewsets
9
9
  from rest_framework.decorators import action
10
10
  from rest_framework.permissions import IsAuthenticated
11
11
 
12
+ from modoboa.lib import exceptions
12
13
  from modoboa.lib.paginator import Paginator
13
14
  from modoboa.lib.viewsets import HasMailbox
14
15
  from modoboa.webmail import lib, serializers
@@ -123,7 +124,7 @@ class UserEmailViewSet(viewsets.GenericViewSet):
123
124
  def get_serializer_class(self):
124
125
  if self.action == "list":
125
126
  return serializers.PaginatedEmailListSerializer
126
- if self.action in ["delete", "mark_as_junk", "mark_as_not_junk"]:
127
+ if self.action in ["move", "delete", "mark_as_junk", "mark_as_not_junk"]:
127
128
  return serializers.MoveSelectionSerializer
128
129
  if self.action == "flag":
129
130
  return serializers.FlagSelectionSerializer
@@ -167,18 +168,31 @@ class UserEmailViewSet(viewsets.GenericViewSet):
167
168
  )
168
169
  return response.Response(serializer.data)
169
170
 
170
- def move_selection(self, request, destination: str) -> int:
171
+ def move_selection(self, request, destination: str | None = None) -> int:
171
172
  """Move selected messages to the given mailbox."""
172
173
  serializer = self.get_serializer(data=request.data)
173
174
  serializer.is_valid(raise_exception=True)
175
+ if destination is None:
176
+ if "destination" not in serializer.validated_data:
177
+ raise exceptions.BadRequest("No destination provided")
178
+ destination = serializer.validated_data["destination"]
174
179
  with lib.get_imapconnector(request) as mbc:
175
180
  mbc.move(
176
181
  ",".join(serializer.validated_data["selection"]),
177
- serializer.validated_data["mailbox"],
182
+ serializer.validated_data["source"],
178
183
  destination,
179
184
  )
180
185
  return len(serializer.validated_data["selection"])
181
186
 
187
+ @action(
188
+ methods=["post"],
189
+ detail=False,
190
+ serializer_class=serializers.MoveSelectionSerializer,
191
+ )
192
+ def move(self, request):
193
+ count = self.move_selection(request)
194
+ return response.Response({"count": count})
195
+
182
196
  @action(
183
197
  methods=["post"],
184
198
  detail=False,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: modoboa
3
- Version: 2.6.3
3
+ Version: 2.6.5
4
4
  Summary: Mail hosting made simple
5
5
  Author-email: Antoine Nguyen <tonio@ngyn.org>
6
6
  License: ISC License
@@ -41,7 +41,7 @@ Requires-Python: >=3.10
41
41
  Description-Content-Type: text/x-rst
42
42
  License-File: LICENSE
43
43
  Requires-Dist: django==5.2.8
44
- Requires-Dist: django-phonenumber-field[phonenumbers]==8.3.0
44
+ Requires-Dist: django-phonenumber-field[phonenumbers]==8.4.0
45
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.3