modoboa 2.4.11__py3-none-any.whl → 2.5.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 (318) hide show
  1. modoboa/admin/api/v2/serializers.py +14 -0
  2. modoboa/amavis/__init__.py +3 -0
  3. modoboa/amavis/app_settings.py +276 -0
  4. modoboa/amavis/apps.py +18 -0
  5. modoboa/amavis/checks/__init__.py +2 -0
  6. modoboa/amavis/checks/settings_checks.py +59 -0
  7. modoboa/amavis/dbrouter.py +35 -0
  8. modoboa/amavis/factories.py +164 -0
  9. modoboa/amavis/handlers.py +146 -0
  10. modoboa/amavis/lib.py +381 -0
  11. modoboa/amavis/management/__init__.py +0 -0
  12. modoboa/amavis/management/commands/__init__.py +0 -0
  13. modoboa/amavis/management/commands/amnotify.py +99 -0
  14. modoboa/amavis/management/commands/qcleanup.py +84 -0
  15. modoboa/amavis/migrations/0001_initial.py +340 -0
  16. modoboa/amavis/migrations/__init__.py +0 -0
  17. modoboa/amavis/models.py +226 -0
  18. modoboa/amavis/serializers.py +139 -0
  19. modoboa/amavis/sql_connector.py +240 -0
  20. modoboa/amavis/sql_email.py +66 -0
  21. modoboa/amavis/tasks.py +33 -0
  22. modoboa/amavis/templates/amavis/notifications/pending_requests.html +16 -0
  23. modoboa/amavis/tests/__init__.py +0 -0
  24. modoboa/amavis/tests/sa-learn +3 -0
  25. modoboa/amavis/tests/sample_messages/quarantined-input.txt +80 -0
  26. modoboa/amavis/tests/sample_messages/quarantined-output-plain_nolinks.txt +17 -0
  27. modoboa/amavis/tests/spamc +3 -0
  28. modoboa/amavis/tests/test_checks.py +25 -0
  29. modoboa/amavis/tests/test_handlers.py +214 -0
  30. modoboa/amavis/tests/test_lib.py +90 -0
  31. modoboa/amavis/tests/test_management_commands.py +45 -0
  32. modoboa/amavis/tests/test_sql_email.py +67 -0
  33. modoboa/amavis/tests/test_utils.py +19 -0
  34. modoboa/amavis/tests/test_viewsets.py +319 -0
  35. modoboa/amavis/urls.py +11 -0
  36. modoboa/amavis/utils.py +105 -0
  37. modoboa/amavis/viewsets.py +265 -0
  38. modoboa/core/api/v1/serializers.py +7 -5
  39. modoboa/core/api/v2/serializers.py +4 -2
  40. modoboa/core/api/v2/tests.py +16 -4
  41. modoboa/core/api/v2/urls.py +5 -5
  42. modoboa/core/api/v2/views.py +6 -2
  43. modoboa/core/api/v2/viewsets.py +24 -3
  44. modoboa/core/commands/deploy.py +3 -0
  45. modoboa/core/commands/templates/settings.py.tpl +12 -11
  46. modoboa/core/handlers.py +6 -2
  47. modoboa/core/management/commands/add_allowed_hosts.py +33 -0
  48. modoboa/core/management/commands/load_initial_data.py +10 -0
  49. modoboa/core/migrations/0025_rename_user_email_is_active_core_user_email_c0c03f_idx.py +23 -5
  50. modoboa/core/tests/test_core.py +24 -0
  51. modoboa/core/utils.py +3 -0
  52. modoboa/frontend_dist/assets/AccountAliasForm-C0oHHyZL.js +1 -0
  53. modoboa/frontend_dist/assets/AccountEditView-lgSJ2Se8.js +1 -0
  54. modoboa/frontend_dist/assets/AccountLayout-U386K8zy.js +1 -0
  55. modoboa/frontend_dist/assets/AccountPasswordSubForm-YsaE_cDx.js +1 -0
  56. modoboa/frontend_dist/assets/AccountView-1jfKFDwb.js +1 -0
  57. modoboa/frontend_dist/assets/AddressBook-CwN64Zls.js +1 -0
  58. modoboa/frontend_dist/assets/AdminLayout-Cxm1lggg.js +1 -0
  59. modoboa/frontend_dist/assets/AlarmsView-9yKGbmkC.css +1 -0
  60. modoboa/frontend_dist/assets/AlarmsView-Bcjsicac.js +1 -0
  61. modoboa/frontend_dist/assets/AliasEditView-k3rVt1tG.js +1 -0
  62. modoboa/frontend_dist/assets/{AliasRecipientForm-IOae6sjF.js → AliasRecipientForm-IehUzKok.js} +1 -1
  63. modoboa/frontend_dist/assets/AliasView-DMzA10eD.js +1 -0
  64. modoboa/frontend_dist/assets/AuditTrailView-5dnGX5El.js +1 -0
  65. modoboa/frontend_dist/assets/CalendarView-DZONeDA9.js +1 -0
  66. modoboa/frontend_dist/assets/{ChoiceField-DJ_c78Cm.js → ChoiceField-DnwXRkht.js} +1 -1
  67. modoboa/frontend_dist/assets/ComposeEmailForm-kghmfNuE.js +1 -0
  68. modoboa/frontend_dist/assets/ComposeEmailView-DLv3wk1k.js +1 -0
  69. modoboa/frontend_dist/assets/ConfirmDialog-CcPrCKuI.js +1 -0
  70. modoboa/frontend_dist/assets/{ConnectedLayout-Dvwmicnc.css → ConnectedLayout-Bxh21hcH.css} +1 -1
  71. modoboa/frontend_dist/assets/ConnectedLayout-CWlBK7Hf.js +1 -0
  72. modoboa/frontend_dist/assets/CreationForm-CW4lxnPg.js +1 -0
  73. modoboa/frontend_dist/assets/DashboardView-DXVZMbMo.js +1 -0
  74. modoboa/frontend_dist/assets/DomainAdminList-C3jcDDc3.js +1 -0
  75. modoboa/frontend_dist/assets/DomainEditView-ph8AaElX.js +1 -0
  76. modoboa/frontend_dist/assets/{DomainTransportForm-C2xo0Yd7.js → DomainTransportForm-NCz6Bl-h.js} +1 -1
  77. modoboa/frontend_dist/assets/DomainView-BgMSSuU-.js +5 -0
  78. modoboa/frontend_dist/assets/{DomainView-BDKoBFYr.css → DomainView-CCLYXPHx.css} +1 -1
  79. modoboa/frontend_dist/assets/DomainsView-CEEU9btK.js +1 -0
  80. modoboa/frontend_dist/assets/DomainsView-DZ-ss9bI.css +1 -0
  81. modoboa/frontend_dist/assets/EmailField-DeqDPm5j.js +1 -0
  82. modoboa/frontend_dist/assets/EmailView-DczVhVO0.js +1 -0
  83. modoboa/frontend_dist/assets/EmptyLayout-BXgcfMLH.js +1 -0
  84. modoboa/frontend_dist/assets/FiltersView-nJj_gSCx.js +1 -0
  85. modoboa/frontend_dist/assets/ForwardEmailView-Bgv3JQb6.js +1 -0
  86. modoboa/frontend_dist/assets/{HtmlEditor-CJ9umKeO.js → HtmlEditor-BWRdelVw.js} +1 -1
  87. modoboa/frontend_dist/assets/{IdentitiesView-0ziuQ5s-.css → IdentitiesView-DPrrRMS5.css} +1 -1
  88. modoboa/frontend_dist/assets/IdentitiesView-Dld9IloZ.js +1 -0
  89. modoboa/frontend_dist/assets/InformationView-BBWKSX8D.js +1 -0
  90. modoboa/frontend_dist/assets/InformationView-C9vvvQhJ.css +1 -0
  91. modoboa/frontend_dist/assets/{LoadingData-CYwX3Jpn.js → LoadingData-G57nJ_JV.js} +1 -1
  92. modoboa/frontend_dist/assets/{LoginCallbackView-E01qkKn0.js → LoginCallbackView-DjyE2SG_.js} +1 -1
  93. modoboa/frontend_dist/assets/{LoginView-Cy4uFV9h.js → LoginView-CqCCXYLo.js} +1 -1
  94. modoboa/frontend_dist/assets/{MailboxView-B-aI4XBq.css → MailboxView-CfStlWhk.css} +1 -1
  95. modoboa/frontend_dist/assets/MailboxView-DRrs9eLO.js +1 -0
  96. modoboa/frontend_dist/assets/MenuItems-BqIZW5av.js +1 -0
  97. modoboa/frontend_dist/assets/MessageView-D_6tx_gd.js +1 -0
  98. modoboa/frontend_dist/assets/MessagesView-BH7JIR03.js +1 -0
  99. modoboa/frontend_dist/assets/MigrationsView-Cv_So9T-.js +1 -0
  100. modoboa/frontend_dist/assets/{ParametersForm-BZM0QSvg.js → ParametersForm-3qXttTuQ.js} +1 -1
  101. modoboa/frontend_dist/assets/ParametersView-3Ns04cpQ.js +1 -0
  102. modoboa/frontend_dist/assets/ParametersView-B5B5Dt6K.js +1 -0
  103. modoboa/frontend_dist/assets/ProviderEditView-zh7CY832.js +1 -0
  104. modoboa/frontend_dist/assets/ProviderGeneralForm-BQU7t3ma.js +1 -0
  105. modoboa/frontend_dist/assets/ProvidersView-CoF_ZkZA.js +1 -0
  106. modoboa/frontend_dist/assets/QuarantineLayout-CYBsrbJM.js +1 -0
  107. modoboa/frontend_dist/assets/QuarantineView-D4gOE4EQ.css +1 -0
  108. modoboa/frontend_dist/assets/QuarantineView-DNvpoycb.js +1 -0
  109. modoboa/frontend_dist/assets/ReplyEmailView-D1XTcglu.js +1 -0
  110. modoboa/frontend_dist/assets/ResourcesForm-BW8rUGgZ.js +1 -0
  111. modoboa/frontend_dist/assets/SelfServiceLayout-DfDHiYeX.js +1 -0
  112. modoboa/frontend_dist/assets/{SettingsView-BxLJBFY0.js → SettingsView-gQiJ2NVb.js} +2 -2
  113. modoboa/frontend_dist/assets/StatisticsView-DYalet_q.js +1 -0
  114. modoboa/frontend_dist/assets/TimeSerieChart-BZ2htbFk.js +1 -0
  115. modoboa/frontend_dist/assets/UserLayout-zUtHi-z-.js +1 -0
  116. modoboa/frontend_dist/assets/VAlert-4r6LxKtg.js +1 -0
  117. modoboa/frontend_dist/assets/VApp-CX_C7AUN.js +1 -0
  118. modoboa/frontend_dist/assets/VAutocomplete-DNKmBvyZ.js +1 -0
  119. modoboa/frontend_dist/assets/VAvatar-DbuoZWmf.js +1 -0
  120. modoboa/frontend_dist/assets/VBadge-BQrRJ9S0.css +1 -0
  121. modoboa/frontend_dist/assets/VBadge-Bv2nvUmC.js +1 -0
  122. modoboa/frontend_dist/assets/VCard-DzjUT5OP.js +1 -0
  123. modoboa/frontend_dist/assets/VCheckbox-dr7UFjl4.js +1 -0
  124. modoboa/frontend_dist/assets/{VCheckboxBtn-Dt810gWf.js → VCheckboxBtn-CpFdBnTv.js} +1 -1
  125. modoboa/frontend_dist/assets/VChip-CaQvfmkw.js +1 -0
  126. modoboa/frontend_dist/assets/VColorPicker-ByGpCW5O.js +1 -0
  127. modoboa/frontend_dist/assets/{VContainer-DvTbsotR.js → VContainer-74Dnn8Ux.js} +1 -1
  128. modoboa/frontend_dist/assets/VDataTable-CL7yHvG7.js +1 -0
  129. modoboa/frontend_dist/assets/VDataTableServer-BqvNcIdw.js +1 -0
  130. modoboa/frontend_dist/assets/VDataTableVirtual--KsOP8i6.js +1 -0
  131. modoboa/frontend_dist/assets/{VDialog-Bk6EWNhz.js → VDialog-DmTGCGR0.js} +1 -1
  132. modoboa/frontend_dist/assets/VExpansionPanels-B7sSTCwd.js +1 -0
  133. modoboa/frontend_dist/assets/VFileInput-SULIc6F3.js +1 -0
  134. modoboa/frontend_dist/assets/VForm-DsRLc-sa.js +1 -0
  135. modoboa/frontend_dist/assets/VInput-CcxkaOXT.css +1 -0
  136. modoboa/frontend_dist/assets/VInput-DVKUObZe.js +1 -0
  137. modoboa/frontend_dist/assets/VMenu-nv0XOgg0.js +1 -0
  138. modoboa/frontend_dist/assets/VPicker-DnDSWJHJ.js +1 -0
  139. modoboa/frontend_dist/assets/VProgressCircular-qK6p5X_Y.js +1 -0
  140. modoboa/frontend_dist/assets/VRadioGroup-CbiPLy0t.js +1 -0
  141. modoboa/frontend_dist/assets/{VRow-BF35mT1S.js → VRow-DJ0NB63-.js} +1 -1
  142. modoboa/frontend_dist/assets/VSelect-CxCFMHyF.js +1 -0
  143. modoboa/frontend_dist/assets/VSelectionControl-C-6A4us5.js +1 -0
  144. modoboa/frontend_dist/assets/VSheet-DI6SxLnG.js +1 -0
  145. modoboa/frontend_dist/assets/VSpacer-CoJVmx8k.js +1 -0
  146. modoboa/frontend_dist/assets/VSwitch-DPnjPQuU.js +1 -0
  147. modoboa/frontend_dist/assets/VTable-ldTxgQPW.js +1 -0
  148. modoboa/frontend_dist/assets/VTabs-aS8WSL9I.js +1 -0
  149. modoboa/frontend_dist/assets/VTextField-BzBVKKob.css +1 -0
  150. modoboa/frontend_dist/assets/VTextField-DKbr4H5w.js +1 -0
  151. modoboa/frontend_dist/assets/VTextarea-BttkFsM4.js +1 -0
  152. modoboa/frontend_dist/assets/VToolbar-BxX3W2kR.js +1 -0
  153. modoboa/frontend_dist/assets/VWindowItem-Cvqvdegd.js +1 -0
  154. modoboa/frontend_dist/assets/WebmailLayout-BT2k6U7q.js +1 -0
  155. modoboa/frontend_dist/assets/accounts-CC2F0a0c.js +1 -0
  156. modoboa/frontend_dist/assets/{admin-o-HRGnmT.js → admin-CHCHFGI6.js} +1 -1
  157. modoboa/frontend_dist/assets/{aliases-DDVeehyg.js → aliases-C9bUD4Ws.js} +1 -1
  158. modoboa/frontend_dist/assets/amavis-BhzV4rgf.js +1 -0
  159. modoboa/frontend_dist/assets/amavis-DCVJxuui.js +1 -0
  160. modoboa/frontend_dist/assets/{contacts-C84DY-Q1.js → contacts-Dxz6eWpf.js} +1 -1
  161. modoboa/frontend_dist/assets/{domains-Bgn4ixHL.js → domains-C2cornvL.js} +1 -1
  162. modoboa/frontend_dist/assets/{domains.store-DTE-V7Y1.js → domains.store-BLKRipG8.js} +1 -1
  163. modoboa/frontend_dist/assets/{filter-CnffiQAW.js → filter-rmxrcjKk.js} +1 -1
  164. modoboa/frontend_dist/assets/forwardRefs-CpzzjgpX.js +1 -0
  165. modoboa/frontend_dist/assets/global.store-DndbMXYb.js +1 -0
  166. modoboa/frontend_dist/assets/{importExport-BlQYb0NO.js → importExport-C3uqrcok.js} +1 -1
  167. modoboa/frontend_dist/assets/index-LhNzkzAh.js +984 -0
  168. modoboa/frontend_dist/assets/layout-DbjDe3Wl.js +1 -0
  169. modoboa/frontend_dist/assets/{layout.store-DkjrAoXt.js → layout.store-Vq5mvIp7.js} +1 -1
  170. modoboa/frontend_dist/assets/{logos-q8SEyAa4.js → logos-Bvcy0usu.js} +1 -1
  171. modoboa/frontend_dist/assets/{logs-B7IJ7LBa.js → logs-BuItINky.js} +1 -1
  172. modoboa/frontend_dist/assets/{parameters-A6iBEYQq.js → parameters-C8IYEP7q.js} +1 -1
  173. modoboa/frontend_dist/assets/{parameters.store-BiXS4_6w.js → parameters.store-1cwSP2JP.js} +1 -1
  174. modoboa/frontend_dist/assets/permissions-DQjAcO9S.js +1 -0
  175. modoboa/frontend_dist/assets/{ssrBoot-AzTdjPjk.js → ssrBoot-BxIQ9ccA.js} +1 -1
  176. modoboa/frontend_dist/assets/{tag-BnSYRTcD.js → tag-3cfI1_f7.js} +1 -1
  177. modoboa/frontend_dist/assets/transports-D4Jk4-AP.js +1 -0
  178. modoboa/frontend_dist/assets/{webmail-CSH_3l6R.js → webmail-B2IUjaxM.js} +1 -1
  179. modoboa/frontend_dist/index.html +1 -1
  180. modoboa/lib/email_utils.py +2 -2
  181. modoboa/lib/permissions.py +7 -0
  182. modoboa/lib/test_runners.py +29 -0
  183. modoboa/lib/tests/__init__.py +5 -1
  184. modoboa/locale/br/LC_MESSAGES/django.po +87 -75
  185. modoboa/locale/cs/LC_MESSAGES/django.po +82 -74
  186. modoboa/locale/cs_CZ/LC_MESSAGES/django.po +145 -121
  187. modoboa/locale/de/LC_MESSAGES/django.mo +0 -0
  188. modoboa/locale/de/LC_MESSAGES/django.po +339 -651
  189. modoboa/locale/de_DE/LC_MESSAGES/django.po +87 -75
  190. modoboa/locale/el_GR/LC_MESSAGES/django.po +160 -135
  191. modoboa/locale/en/LC_MESSAGES/django.po +82 -74
  192. modoboa/locale/es/LC_MESSAGES/django.po +158 -131
  193. modoboa/locale/es_MX/LC_MESSAGES/django.po +82 -74
  194. modoboa/locale/fi/LC_MESSAGES/django.po +87 -75
  195. modoboa/locale/fr/LC_MESSAGES/django.mo +0 -0
  196. modoboa/locale/fr/LC_MESSAGES/django.po +469 -201
  197. modoboa/locale/hu/LC_MESSAGES/django.po +82 -74
  198. modoboa/locale/it/LC_MESSAGES/django.mo +0 -0
  199. modoboa/locale/it/LC_MESSAGES/django.po +148 -122
  200. modoboa/locale/ja_JP/LC_MESSAGES/django.mo +0 -0
  201. modoboa/locale/ja_JP/LC_MESSAGES/django.po +80 -72
  202. modoboa/locale/ka/LC_MESSAGES/django.po +82 -74
  203. modoboa/locale/nl_NL/LC_MESSAGES/django.po +160 -132
  204. modoboa/locale/no/LC_MESSAGES/django.po +82 -74
  205. modoboa/locale/pl_PL/LC_MESSAGES/django.mo +0 -0
  206. modoboa/locale/pl_PL/LC_MESSAGES/django.po +172 -149
  207. modoboa/locale/pt_BR/LC_MESSAGES/django.mo +0 -0
  208. modoboa/locale/pt_BR/LC_MESSAGES/django.po +172 -144
  209. modoboa/locale/pt_PT/LC_MESSAGES/django.po +135 -112
  210. modoboa/locale/ro_RO/LC_MESSAGES/django.po +87 -75
  211. modoboa/locale/ru/LC_MESSAGES/django.po +142 -118
  212. modoboa/locale/si/LC_MESSAGES/django.po +82 -74
  213. modoboa/locale/sk/LC_MESSAGES/django.po +82 -74
  214. modoboa/locale/sk_SK/LC_MESSAGES/django.po +84 -76
  215. modoboa/locale/sl_SI/LC_MESSAGES/django.po +90 -76
  216. modoboa/locale/sv/LC_MESSAGES/django.mo +0 -0
  217. modoboa/locale/sv/LC_MESSAGES/django.po +172 -139
  218. modoboa/locale/tr/LC_MESSAGES/django.po +87 -75
  219. modoboa/locale/tr_TR/LC_MESSAGES/django.po +84 -74
  220. modoboa/locale/uk/LC_MESSAGES/django.po +82 -74
  221. modoboa/locale/zh/LC_MESSAGES/django.po +82 -74
  222. modoboa/locale/zh_CN/LC_MESSAGES/django.po +82 -74
  223. modoboa/locale/zh_TW/LC_MESSAGES/django.po +87 -75
  224. modoboa/parameters/api/v2/tests.py +2 -2
  225. modoboa/parameters/api/v2/viewsets.py +2 -0
  226. modoboa/policyd/tests.py +2 -0
  227. modoboa/urls_api_v2.py +6 -0
  228. modoboa/webmail/lib/imaputils.py +2 -2
  229. {modoboa-2.4.11.dist-info → modoboa-2.5.1.dist-info}/METADATA +6 -4
  230. {modoboa-2.4.11.dist-info → modoboa-2.5.1.dist-info}/RECORD +235 -185
  231. modoboa/frontend_dist/assets/AccountAliasForm-BV6KvTu6.js +0 -1
  232. modoboa/frontend_dist/assets/AccountEditView-DDOFyfBD.js +0 -1
  233. modoboa/frontend_dist/assets/AccountLayout-rX51xgxT.js +0 -1
  234. modoboa/frontend_dist/assets/AccountPasswordSubForm-D9S6LaeH.js +0 -1
  235. modoboa/frontend_dist/assets/AccountView-cmvaZNq3.js +0 -1
  236. modoboa/frontend_dist/assets/AddressBook-DCJxL8SU.js +0 -1
  237. modoboa/frontend_dist/assets/AdminLayout-r0wfG2lO.js +0 -1
  238. modoboa/frontend_dist/assets/AlarmsView-Bheey-gp.css +0 -1
  239. modoboa/frontend_dist/assets/AlarmsView-C0bqC4PA.js +0 -1
  240. modoboa/frontend_dist/assets/AliasEditView-DVoWoCGY.js +0 -1
  241. modoboa/frontend_dist/assets/AliasView-DrONZXOh.js +0 -1
  242. modoboa/frontend_dist/assets/AuditTrailView-OTkoZaMU.js +0 -1
  243. modoboa/frontend_dist/assets/CalendarView-CqF4_Ui9.js +0 -1
  244. modoboa/frontend_dist/assets/ComposeEmailForm-DO5_GB3e.js +0 -1
  245. modoboa/frontend_dist/assets/ComposeEmailView-A91HCBsN.js +0 -1
  246. modoboa/frontend_dist/assets/ConfirmDialog-BBcgdAnO.js +0 -1
  247. modoboa/frontend_dist/assets/ConnectedLayout-1oRW-Rql.js +0 -1
  248. modoboa/frontend_dist/assets/CreationForm-71YJbjsA.js +0 -1
  249. modoboa/frontend_dist/assets/DashboardView-CdLpSfUl.js +0 -1
  250. modoboa/frontend_dist/assets/DomainAdminList-BjC4KsqI.js +0 -1
  251. modoboa/frontend_dist/assets/DomainEditView-CQjKwYxl.js +0 -1
  252. modoboa/frontend_dist/assets/DomainView-BhhuZI_N.js +0 -5
  253. modoboa/frontend_dist/assets/DomainsView-Cft4BP8Z.js +0 -1
  254. modoboa/frontend_dist/assets/DomainsView-DasJ0NdZ.css +0 -1
  255. modoboa/frontend_dist/assets/EmailField-C8umy0EU.js +0 -1
  256. modoboa/frontend_dist/assets/EmailView-ki7uEQPD.js +0 -1
  257. modoboa/frontend_dist/assets/EmptyLayout-DaA1XH9n.js +0 -1
  258. modoboa/frontend_dist/assets/FiltersView-FYFZxG4B.js +0 -1
  259. modoboa/frontend_dist/assets/ForwardEmailView-cUbnSYCF.js +0 -1
  260. modoboa/frontend_dist/assets/IdentitiesView-njNo8N5n.js +0 -1
  261. modoboa/frontend_dist/assets/InformationView-D1h38POt.js +0 -1
  262. modoboa/frontend_dist/assets/InformationView-U5Ww-Sx1.css +0 -1
  263. modoboa/frontend_dist/assets/MailboxView-IlrLWm_H.js +0 -1
  264. modoboa/frontend_dist/assets/MenuItems-BAtHWzAE.js +0 -1
  265. modoboa/frontend_dist/assets/MessagesView-OSpjixFq.js +0 -1
  266. modoboa/frontend_dist/assets/MigrationsView-DKNOsVzF.js +0 -1
  267. modoboa/frontend_dist/assets/ParametersView-C4bXASiq.js +0 -1
  268. modoboa/frontend_dist/assets/ParametersView-CYXgNmc1.js +0 -1
  269. modoboa/frontend_dist/assets/ProviderEditView-CyxCWTST.js +0 -1
  270. modoboa/frontend_dist/assets/ProviderGeneralForm-BYPjNHqB.js +0 -1
  271. modoboa/frontend_dist/assets/ProvidersView-CxrMkRyk.js +0 -1
  272. modoboa/frontend_dist/assets/ReplyEmailView-Dkw9-N26.js +0 -1
  273. modoboa/frontend_dist/assets/ResourcesForm-CuUvrOdY.js +0 -1
  274. modoboa/frontend_dist/assets/StatisticsView-BN7QsZMT.js +0 -1
  275. modoboa/frontend_dist/assets/TimeSerieChart-BMN8BeFZ.js +0 -1
  276. modoboa/frontend_dist/assets/UserLayout-B6-JQg4F.js +0 -1
  277. modoboa/frontend_dist/assets/VAlert-DIQTrRif.js +0 -1
  278. modoboa/frontend_dist/assets/VApp-CpkYA7js.js +0 -1
  279. modoboa/frontend_dist/assets/VAutocomplete-C4IpXyl8.js +0 -1
  280. modoboa/frontend_dist/assets/VAvatar-Lpb-Dion.js +0 -1
  281. modoboa/frontend_dist/assets/VCard-er_isjE_.js +0 -1
  282. modoboa/frontend_dist/assets/VCheckbox-D-u8JXP1.js +0 -1
  283. modoboa/frontend_dist/assets/VChip-B4iSpj8_.js +0 -1
  284. modoboa/frontend_dist/assets/VColorPicker-BAjGDsXv.js +0 -1
  285. modoboa/frontend_dist/assets/VDataTable-4JRjbtgF.js +0 -1
  286. modoboa/frontend_dist/assets/VDataTableServer-tIDT1m3-.js +0 -1
  287. modoboa/frontend_dist/assets/VDataTableVirtual-BlnO18u_.js +0 -1
  288. modoboa/frontend_dist/assets/VExpansionPanels-CwGtXDhr.js +0 -1
  289. modoboa/frontend_dist/assets/VFileInput-D1_7ZkO_.js +0 -1
  290. modoboa/frontend_dist/assets/VForm-DAkW4nfy.js +0 -1
  291. modoboa/frontend_dist/assets/VMenu-BPFJwj2f.js +0 -1
  292. modoboa/frontend_dist/assets/VPicker-CfT82M8N.js +0 -1
  293. modoboa/frontend_dist/assets/VProgressCircular-w75-3ogi.js +0 -1
  294. modoboa/frontend_dist/assets/VRadioGroup-0j6DNC_k.js +0 -1
  295. modoboa/frontend_dist/assets/VSelect-Cs4ARbAS.js +0 -1
  296. modoboa/frontend_dist/assets/VSelectionControl-Dg-XyRRS.js +0 -1
  297. modoboa/frontend_dist/assets/VSheet-Btq_Mu4s.js +0 -1
  298. modoboa/frontend_dist/assets/VSpacer-C7xukQmu.js +0 -1
  299. modoboa/frontend_dist/assets/VSwitch-Cs1NQrmk.js +0 -1
  300. modoboa/frontend_dist/assets/VTable-CNz2SGk4.js +0 -1
  301. modoboa/frontend_dist/assets/VTabs-B1fyVn4M.js +0 -1
  302. modoboa/frontend_dist/assets/VTextField-BdyvgvkG.js +0 -1
  303. modoboa/frontend_dist/assets/VTextField-C-J20yj_.css +0 -1
  304. modoboa/frontend_dist/assets/VTextarea-DnOMpe0Q.js +0 -1
  305. modoboa/frontend_dist/assets/VToolbar-BiCiBxBJ.js +0 -1
  306. modoboa/frontend_dist/assets/VWindowItem-ChWm_kz3.js +0 -1
  307. modoboa/frontend_dist/assets/WebmailLayout-o4uEkp9e.js +0 -1
  308. modoboa/frontend_dist/assets/forwardRefs-Dvjn_Xq4.js +0 -1
  309. modoboa/frontend_dist/assets/global.store-BaiD63EN.js +0 -1
  310. modoboa/frontend_dist/assets/index-I1VDlN4g.js +0 -984
  311. modoboa/frontend_dist/assets/layout-D8ZJPiJ_.js +0 -1
  312. modoboa/frontend_dist/assets/permissions-CITHLHVg.js +0 -1
  313. modoboa/frontend_dist/assets/transports-Dz7c6kIy.js +0 -1
  314. {modoboa-2.4.11.data → modoboa-2.5.1.data}/scripts/modoboa-admin.py +0 -0
  315. {modoboa-2.4.11.dist-info → modoboa-2.5.1.dist-info}/WHEEL +0 -0
  316. {modoboa-2.4.11.dist-info → modoboa-2.5.1.dist-info}/entry_points.txt +0 -0
  317. {modoboa-2.4.11.dist-info → modoboa-2.5.1.dist-info}/licenses/LICENSE +0 -0
  318. {modoboa-2.4.11.dist-info → modoboa-2.5.1.dist-info}/top_level.txt +0 -0
@@ -10,12 +10,10 @@ msgid ""
10
10
  msgstr ""
11
11
  "Project-Id-Version: Modoboa\n"
12
12
  "Report-Msgid-Bugs-To: \n"
13
- "POT-Creation-Date: 2025-07-27 10:50+0200\n"
13
+ "POT-Creation-Date: 2025-08-28 09:41+0200\n"
14
14
  "PO-Revision-Date: 2011-07-01 08:15+0000\n"
15
- "Last-Translator: Olle Gustafsson <olle@dalnix.se>, "
16
- "2013,2015-2018,2020,2022-2023,2025\n"
17
- "Language-Team: Swedish (http://app.transifex.com/tonio/modoboa/language/"
18
- "sv/)\n"
15
+ "Last-Translator: Olle Gustafsson <olle@dalnix.se>, 2013,2015-2018,2020,2022-2023,2025\n"
16
+ "Language-Team: Swedish (http://app.transifex.com/tonio/modoboa/language/sv/)\n"
19
17
  "Language: sv\n"
20
18
  "MIME-Version: 1.0\n"
21
19
  "Content-Type: text/plain; charset=UTF-8\n"
@@ -27,75 +25,76 @@ msgid ""
27
25
  "Quota shared between mailboxes. Can be expressed in KB, MB (default) or GB. "
28
26
  "A value of 0 means no quota."
29
27
  msgstr ""
30
- "Kvot som delas mellan brevlådor. Kan uttryckas i KB, MB (standard) eller GB. "
31
- "Ett värde på 0 betyder ingen kvot."
28
+ "Kvot som delas mellan brevlådor. Kan uttryckas i KB, MB (standard) eller GB."
29
+ " Ett värde på 0 betyder ingen kvot."
32
30
 
33
31
  #: admin/api/v1/serializers.py:46
34
32
  msgid "Default quota in MB applied to mailboxes. A value of 0 means no quota."
35
33
  msgstr ""
36
34
  "Standardkvot i MB tillämpas på postlådor. Ett värde på 0 betyder ingen kvot."
37
35
 
38
- #: admin/api/v1/serializers.py:88
36
+ #: admin/api/v1/serializers.py:94
39
37
  msgid "domain alias with this name already exists"
40
38
  msgstr "ett domänalias med detta namn finns redan"
41
39
 
42
- #: admin/api/v1/serializers.py:98
40
+ #: admin/api/v1/serializers.py:104
43
41
  msgid "No authorized MX record found for this domain"
44
42
  msgstr "Ingen auktoriserad MX-post hittades för den här domänen"
45
43
 
46
- #: admin/api/v1/serializers.py:116
44
+ #: admin/api/v1/serializers.py:122
47
45
  msgid "Cannot be greater than domain quota"
48
46
  msgstr "Kan inte vara större än domänkvoten"
49
47
 
50
- #: admin/api/v1/serializers.py:162 admin/api/v1/serializers.py:357
51
- #: admin/api/v2/serializers.py:548 admin/models/alias.py:44
48
+ #: admin/api/v1/serializers.py:168 admin/api/v1/serializers.py:364
49
+ #: admin/api/v2/serializers.py:564 admin/models/alias.py:44
52
50
  msgid "Permission denied."
53
51
  msgstr "Åtkomst nekad."
54
52
 
55
- #: admin/api/v1/serializers.py:224 admin/api/v2/serializers.py:88
56
- #: admin/api/v2/serializers.py:470 core/api/v2/serializers.py:235
57
- #: core/api/v2/serializers.py:237 core/api/v2/serializers.py:246
53
+ #: admin/api/v1/serializers.py:231 admin/api/v2/serializers.py:90
54
+ #: admin/api/v2/serializers.py:486 core/api/v2/serializers.py:255
55
+ #: core/api/v2/serializers.py:257 core/api/v2/serializers.py:266
58
56
  #: transport/backends.py:40
59
57
  msgid "This field is required"
60
58
  msgstr "Detta fält är obligatoriskt"
61
59
 
62
- #: admin/api/v1/serializers.py:236
60
+ #: admin/api/v1/serializers.py:243
63
61
  msgid ""
64
62
  "List of administered domains (resellers and domain administrators only)."
65
63
  msgstr ""
66
64
  "Lista över administrerade domäner (endast återförsäljare och "
67
65
  "domänadministratörer)."
68
66
 
69
- #: admin/api/v1/serializers.py:330 admin/api/v2/serializers.py:530
67
+ #: admin/api/v1/serializers.py:337 admin/api/v2/serializers.py:546
70
68
  msgid "Not allowed for this role."
71
69
  msgstr "Inte tillåtet för denna roll."
72
70
 
73
- #: admin/api/v1/serializers.py:348
71
+ #: admin/api/v1/serializers.py:355
74
72
  msgid "Must be equal to mailbox full_address"
75
73
  msgstr "Måste vara lika med postlådans full_adress"
76
74
 
77
- #: admin/api/v1/serializers.py:390 admin/api/v2/serializers.py:582
75
+ #: admin/api/v1/serializers.py:397 admin/api/v2/serializers.py:598
78
76
  #: calendars/serializers.py:175 calendars/serializers.py:177
77
+ #: pdfcredentials/api/v2/serializers.py:91
79
78
  msgid "This field is required."
80
79
  msgstr "Detta fält är obligatoriskt."
81
80
 
82
- #: admin/api/v1/serializers.py:402 admin/api/v2/serializers.py:599
81
+ #: admin/api/v1/serializers.py:409 admin/api/v2/serializers.py:615
83
82
  msgid "Local domain {} does not exist"
84
83
  msgstr "Lokal domän {} finns inte"
85
84
 
86
- #: admin/api/v1/serializers.py:492
85
+ #: admin/api/v1/serializers.py:499
87
86
  msgid "A list of recipient"
88
87
  msgstr "En lista över mottagare"
89
88
 
90
- #: admin/api/v1/serializers.py:508 admin/api/v2/viewsets.py:286
89
+ #: admin/api/v1/serializers.py:515 admin/api/v2/viewsets.py:286
91
90
  msgid "This alias already exists"
92
91
  msgstr "Detta alias finns redan"
93
92
 
94
- #: admin/api/v1/serializers.py:544
93
+ #: admin/api/v1/serializers.py:551
95
94
  msgid "You don't have access to this domain."
96
95
  msgstr "Du har inte åtkomst till den här domänen."
97
96
 
98
- #: admin/api/v1/serializers.py:553
97
+ #: admin/api/v1/serializers.py:560
99
98
  msgid "You don't have access to this mailbox."
100
99
  msgstr "Du har inte tillgång till den här brevlådan."
101
100
 
@@ -103,57 +102,57 @@ msgstr "Du har inte tillgång till den här brevlådan."
103
102
  msgid "Here is your new Modoboa password: {}"
104
103
  msgstr "Här är ditt nya Modoboa-lösenord: {}"
105
104
 
106
- #: admin/api/v2/serializers.py:80
105
+ #: admin/api/v2/serializers.py:82
107
106
  msgid "DKIM keys storage directory not configured"
108
107
  msgstr "Lagringskatalogen för DKIM-nycklar är inte konfigurerad"
109
108
 
110
- #: admin/api/v2/serializers.py:92
109
+ #: admin/api/v2/serializers.py:94
111
110
  msgid "This field is valid when type is relaydomain"
112
111
  msgstr "Det här fältet är giltigt när typen är relaydomain"
113
112
 
114
- #: admin/api/v2/serializers.py:99
113
+ #: admin/api/v2/serializers.py:101
115
114
  msgid "You can't define an unlimited quota."
116
115
  msgstr "Du kan inte definiera en obegränsad kvot."
117
116
 
118
- #: admin/api/v2/serializers.py:133
117
+ #: admin/api/v2/serializers.py:135
119
118
  #, python-format
120
119
  msgid "User '%s' already exists"
121
120
  msgstr "Användare '%s' finns redan"
122
121
 
123
- #: admin/api/v2/serializers.py:248 admin/api/v2/serializers.py:254
122
+ #: admin/api/v2/serializers.py:250 admin/api/v2/serializers.py:256
124
123
  msgid "Must be a positive integer"
125
124
  msgstr "Måste vara ett positivt heltal"
126
125
 
127
- #: admin/api/v2/serializers.py:263
126
+ #: admin/api/v2/serializers.py:265
128
127
  msgid "openssl not found, please make sure it is installed."
129
128
  msgstr "openssl hittades ej, säkerställ att det är installerat."
130
129
 
131
- #: admin/api/v2/serializers.py:266 pdfcredentials/api/v2/serializers.py:79
130
+ #: admin/api/v2/serializers.py:268 pdfcredentials/api/v2/serializers.py:84
132
131
  msgid "Directory not found."
133
132
  msgstr "Katalog hittades ej."
134
133
 
135
- #: admin/api/v2/serializers.py:277
134
+ #: admin/api/v2/serializers.py:279
136
135
  msgid "This field only allows valid IP addresses (or networks)"
137
136
  msgstr "Detta fält tillåter bara giltiga IP-adresser (eller nätverk)"
138
137
 
139
- #: admin/api/v2/serializers.py:290
138
+ #: admin/api/v2/serializers.py:292
140
139
  msgid "Please disable imap migration before disabling this option."
141
140
  msgstr "Inaktivera imap-migrering innan du inaktiverar det här alternativet."
142
141
 
143
- #: admin/api/v2/serializers.py:303
142
+ #: admin/api/v2/serializers.py:305
144
143
  msgid "Define at least one authorized network / address"
145
144
  msgstr "Definiera minst ett auktoriserat nätverk/adress"
146
145
 
147
- #: admin/api/v2/serializers.py:565
146
+ #: admin/api/v2/serializers.py:581
148
147
  msgid "The left part of an email address can't be more than 64 characters."
149
148
  msgstr ""
150
149
  "Den vänstra delen av en e-postadress kan inte vara längre än 64 tecken."
151
150
 
152
- #: admin/api/v2/serializers.py:587
151
+ #: admin/api/v2/serializers.py:603
153
152
  msgid "A mailbox is required to create aliases."
154
153
  msgstr "En brevlåda krävs för att skapa alias."
155
154
 
156
- #: admin/api/v2/serializers.py:751
155
+ #: admin/api/v2/serializers.py:772
157
156
  msgid "Unknown status"
158
157
  msgstr "Okänd status"
159
158
 
@@ -165,14 +164,6 @@ msgstr "Du saknar åtkomst till denna domän"
165
164
  msgid "You can't delete your own domain"
166
165
  msgstr "Du kan inre radera din egen domän"
167
166
 
168
- #: admin/api/v2/viewsets.py:407
169
- msgid "No alarm ID provided"
170
- msgstr "Inget larm-ID angett"
171
-
172
- #: admin/api/v2/viewsets.py:411
173
- msgid "Received invalid alarm id(s)"
174
- msgstr "Mottog ogiltiga larm-id(n)"
175
-
176
167
  #: admin/app_settings.py:19 limits/app_settings.py:38 limits/constants.py:13
177
168
  msgid "Domains"
178
169
  msgstr "Domäner"
@@ -191,8 +182,8 @@ msgstr "Giltiga MX"
191
182
 
192
183
  #: admin/app_settings.py:37
193
184
  msgid ""
194
- "A list of IP or network address every MX record should match. A warning will "
195
- "be sent if a record does not respect it."
185
+ "A list of IP or network address every MX record should match. A warning will"
186
+ " be sent if a record does not respect it."
196
187
  msgstr ""
197
188
  "En lista med IP- eller nätverksadresser som varje MX-post ska matcha. En "
198
189
  "varning kommer att skickas om en post inte respekterar den."
@@ -206,8 +197,8 @@ msgid ""
206
197
  "Prevent the creation of a new domain if its MX record does not use one of "
207
198
  "the defined addresses."
208
199
  msgstr ""
209
- "Förhindra skapandet av en ny domän om dess MX-post inte använder någon av de "
210
- "definierade adresserna."
200
+ "Förhindra skapandet av en ny domän om dess MX-post inte använder någon av de"
201
+ " definierade adresserna."
211
202
 
212
203
  #: admin/app_settings.py:59
213
204
  msgid "Enable IPV6 checks"
@@ -351,8 +342,8 @@ msgid ""
351
342
  "Number of messages freshly created mailboxes will be allowed to send per "
352
343
  "day. Leave empty for no limit."
353
344
  msgstr ""
354
- "Antal meddelanden som nyskapade brevlådor tillåts skicka per dag. Lämna tomt "
355
- "utan gräns."
345
+ "Antal meddelanden som nyskapade brevlådor tillåts skicka per dag. Lämna tomt"
346
+ " utan gräns."
356
347
 
357
348
  #: admin/app_settings.py:207
358
349
  msgid "Automatic account removal"
@@ -367,7 +358,8 @@ msgid "Automatic domain/mailbox creation"
367
358
  msgstr "Automatisk domän-/brevlådeskapande"
368
359
 
369
360
  #: admin/app_settings.py:221
370
- msgid "Create a domain and a mailbox when an account is automatically created."
361
+ msgid ""
362
+ "Create a domain and a mailbox when an account is automatically created."
371
363
  msgstr "Skapa en domän och en postlåda när ett konto skapas automatiskt."
372
364
 
373
365
  #: admin/app_settings.py:230
@@ -378,7 +370,7 @@ msgstr "Skapa ett alias när en postlåda döps om"
378
370
  msgid "Create an alias using the old address when a mailbox is renamed."
379
371
  msgstr "Skapa ett alias med den gamla adressen när en postlåda byts namn."
380
372
 
381
- #: admin/app_settings.py:287 core/api/v2/viewsets.py:162
373
+ #: admin/app_settings.py:287 core/api/v2/viewsets.py:174
382
374
  msgid "Administration"
383
375
  msgstr "Administration"
384
376
 
@@ -407,7 +399,7 @@ msgstr "domän alias"
407
399
  msgid "Account import failed (%s): domain does not exist"
408
400
  msgstr "Kontoimport misslyckades (%s): domänen existerar inte"
409
401
 
410
- #: admin/handlers.py:242 admin/models/mailbox.py:340
402
+ #: admin/handlers.py:242 admin/models/mailbox.py:342
411
403
  msgid "Mailbox {} already exists"
412
404
  msgstr "Brevlåda {} finns redan"
413
405
 
@@ -669,7 +661,7 @@ msgstr "En kvot krävs"
669
661
  msgid "{}: domain quota exceeded"
670
662
  msgstr "{}: domänkvoten har överskridits"
671
663
 
672
- #: admin/models/mailbox.py:308
664
+ #: admin/models/mailbox.py:310
673
665
  msgid "Domain does not exist"
674
666
  msgstr "Domänen existerar inte"
675
667
 
@@ -688,8 +680,8 @@ msgid ""
688
680
  "coming from it are considered as spam. You should contact those providers "
689
681
  "and ask them to unlist detected IP address(es)."
690
682
  msgstr ""
691
- "Domänens rykte kommer att påverkas och det finns en chans att e-"
692
- "postmeddelanden som kommer från den betraktas som spam. Du bör kontakta "
683
+ "Domänens rykte kommer att påverkas och det finns en chans att "
684
+ "e-postmeddelanden som kommer från den betraktas som spam. Du bör kontakta "
693
685
  "dessa leverantörer och be dem att ta bort upptäckta IP-adresser."
694
686
 
695
687
  #: admin/templates/admin/notifications/domain_invalid_mx.html:3
@@ -833,7 +825,7 @@ msgid ""
833
825
  msgstr ""
834
826
  "Maximum size in bytes of imported ICS files (or KB, MB, GB if specified)"
835
827
 
836
- #: calendars/app_settings.py:89 core/api/v2/viewsets.py:172
828
+ #: calendars/app_settings.py:89 core/api/v2/viewsets.py:195
837
829
  msgid "Calendars"
838
830
  msgstr "Kalendrar"
839
831
 
@@ -869,7 +861,7 @@ msgstr "Synkroniseringsfrekvens"
869
861
  msgid "Interval in seconds between 2 synchronization requests"
870
862
  msgstr "Intervall i sekunder mellan 2 synkroniseringsförfrågningar"
871
863
 
872
- #: contacts/app_settings.py:51 core/api/v2/viewsets.py:179
864
+ #: contacts/app_settings.py:51 core/api/v2/viewsets.py:185
873
865
  msgid "Contacts"
874
866
  msgstr "Kontakter"
875
867
 
@@ -917,13 +909,15 @@ msgstr "Ogiltig PIN-kod"
917
909
  msgid "2FA is already enabled"
918
910
  msgstr "2FA redan aktiverat"
919
911
 
920
- #: core/api/v1/serializers.py:87
921
- #, python-format
922
- msgid "Failed TFA settings editing attempt from '%s' as user '%s'"
912
+ #: core/api/v1/serializers.py:86
913
+ #, fuzzy, python-format
914
+ #| msgid "Failed TFA settings editing attempt from '%s' as user '%s'"
915
+ msgid "Failed TFA settings editing attempt from '%(addr)s' as user '%(user)s'"
923
916
  msgstr ""
924
- "Misslyckades TFA-inställningar redigeringsförsök från '%s' som användare '%s'"
917
+ "Misslyckades TFA-inställningar redigeringsförsök från '%s' som användare "
918
+ "'%s'"
925
919
 
926
- #: core/api/v1/serializers.py:91 core/api/v2/serializers.py:425
920
+ #: core/api/v1/serializers.py:91 core/api/v2/serializers.py:445
927
921
  msgid "Invalid password"
928
922
  msgstr "Ogiltigt lösenordd"
929
923
 
@@ -935,40 +929,41 @@ msgstr "2FA är nu aktiverat"
935
929
  msgid "Local"
936
930
  msgstr "Lokal"
937
931
 
938
- #: core/api/v2/serializers.py:175 core/app_settings.py:17
932
+ #: core/api/v2/serializers.py:194 core/app_settings.py:17
939
933
  msgid "User profile"
940
934
  msgstr "Användarprofil"
941
935
 
942
- #: core/api/v2/serializers.py:194 core/api/v2/serializers.py:201
943
- #: core/api/v2/serializers.py:208
936
+ #: core/api/v2/serializers.py:213 core/api/v2/serializers.py:221
937
+ #: core/api/v2/serializers.py:228
944
938
  msgid "Invalid syntax"
945
939
  msgstr "Ogiltig syntax"
946
940
 
947
- #: core/api/v2/serializers.py:213
941
+ #: core/api/v2/serializers.py:233
948
942
  msgid "Invalid rounds number"
949
943
  msgstr "Ogiltigt antal omgångar"
950
944
 
951
- #: core/api/v2/serializers.py:413 core/forms.py:81
945
+ #: core/api/v2/serializers.py:433 core/forms.py:81
952
946
  msgid "This code is invalid"
953
947
  msgstr "Denna kod är ogiltig"
954
948
 
955
- #: core/api/v2/serializers.py:483 core/views/auth.py:194 core/views/auth.py:247
949
+ #: core/api/v2/serializers.py:503 core/views/auth.py:194
950
+ #: core/views/auth.py:247
956
951
  msgid "Please use the following code to recover your Modoboa password: {}"
957
952
  msgstr "Använd följande kod för att återställa ditt Modoboa lösenord: {}"
958
953
 
959
- #: core/api/v2/viewsets.py:164
954
+ #: core/api/v2/viewsets.py:176
960
955
  msgid "Administration console"
961
956
  msgstr "Administrationskonsol"
962
957
 
963
- #: core/api/v2/viewsets.py:174
964
- msgid "Calendar"
965
- msgstr "Kalender"
966
-
967
- #: core/api/v2/viewsets.py:181
958
+ #: core/api/v2/viewsets.py:187
968
959
  msgid "Address book"
969
960
  msgstr "Adressbok"
970
961
 
971
- #: core/api/v2/viewsets.py:186 core/api/v2/viewsets.py:188
962
+ #: core/api/v2/viewsets.py:197
963
+ msgid "Calendar"
964
+ msgstr "Kalender"
965
+
966
+ #: core/api/v2/viewsets.py:205 core/api/v2/viewsets.py:207
972
967
  #: webmail/app_settings.py:258 webmail/app_settings.py:265
973
968
  msgid "Webmail"
974
969
  msgstr "Webmail"
@@ -1156,8 +1151,8 @@ msgstr "Administratörsgrupper"
1156
1151
 
1157
1152
  #: core/app_settings.py:239
1158
1153
  msgid ""
1159
- "Members of those LDAP Posix groups will be created as domain administrators. "
1160
- "Use ';' characters to separate groups."
1154
+ "Members of those LDAP Posix groups will be created as domain administrators."
1155
+ " Use ';' characters to separate groups."
1161
1156
  msgstr ""
1162
1157
  "Användare av dessa LDAP Posix grupper kommer skapas som "
1163
1158
  "domänadministratörer. Använd ';' för att separera grupper."
@@ -1249,8 +1244,8 @@ msgid ""
1249
1244
  "The template used to construct a user's DN. It should contain one "
1250
1245
  "placeholder (ie. %(user)s)"
1251
1246
  msgstr ""
1252
- "Mallen som används för att konstruera en användares DN. Den bör innehålla en "
1253
- "platshållare (dvs. %(user)s)"
1247
+ "Mallen som används för att konstruera en användares DN. Den bör innehålla en"
1248
+ " platshållare (dvs. %(user)s)"
1254
1249
 
1255
1250
  #: core/app_settings.py:350
1256
1251
  msgid "LDAP synchronization settings"
@@ -1275,7 +1270,8 @@ msgid ""
1275
1270
  "Delete remote LDAP account when local account is deleted, otherwise it will "
1276
1271
  "be disabled."
1277
1272
  msgstr ""
1278
- "Radera LDAP-fjärrkonto när det lokala kontot raderas, annars inaktiveras det."
1273
+ "Radera LDAP-fjärrkonto när det lokala kontot raderas, annars inaktiveras "
1274
+ "det."
1279
1275
 
1280
1276
  #: core/app_settings.py:401
1281
1277
  msgid "Account DN template"
@@ -1312,7 +1308,8 @@ msgstr "Aktivera Dovecot LDAP-synkronisering"
1312
1308
 
1313
1309
  #: core/app_settings.py:457
1314
1310
  msgid "LDAP authentication settings will be applied to Dovecot configuration."
1315
- msgstr "LDAP-autentiseringsinställningar tillämpas på Dovecot-konfigurationen."
1311
+ msgstr ""
1312
+ "LDAP-autentiseringsinställningar tillämpas på Dovecot-konfigurationen."
1316
1313
 
1317
1314
  #: core/app_settings.py:465
1318
1315
  msgid "Dovecot LDAP config file"
@@ -1350,21 +1347,26 @@ msgstr "Användardefinierat RSS-flöde"
1350
1347
  #: core/app_settings.py:497
1351
1348
  msgid "Display custom RSS feed to resellers and domain administrators"
1352
1349
  msgstr ""
1353
- "Visa användardefinierat RSS-flöde för återförsäljare och domänadministratörer"
1350
+ "Visa användardefinierat RSS-flöde för återförsäljare och "
1351
+ "domänadministratörer"
1354
1352
 
1355
1353
  #: core/app_settings.py:506
1356
1354
  #, fuzzy
1357
- #| msgid "Display custom RSS feed to resellers and domain administrators"
1355
+ #| msgid ""
1356
+ #| "Display custom RSS feed to resellers and domain administrators"
1358
1357
  msgid "Display custom RSS feed to super admins"
1359
1358
  msgstr ""
1360
- "Visa användardefinierat RSS-flöde för återförsäljare och domänadministratörer"
1359
+ "Visa användardefinierat RSS-flöde för återförsäljare och "
1360
+ "domänadministratörer"
1361
1361
 
1362
1362
  #: core/app_settings.py:509
1363
1363
  #, fuzzy
1364
- #| msgid "Display custom RSS feed to resellers and domain administrators"
1364
+ #| msgid ""
1365
+ #| "Display custom RSS feed to resellers and domain administrators"
1365
1366
  msgid "Display custom RSS feed also to super administrators"
1366
1367
  msgstr ""
1367
- "Visa användardefinierat RSS-flöde för återförsäljare och domänadministratörer"
1368
+ "Visa användardefinierat RSS-flöde för återförsäljare och "
1369
+ "domänadministratörer"
1368
1370
 
1369
1371
  #: core/app_settings.py:517
1370
1372
  msgid "Hide features widget"
@@ -1480,8 +1482,8 @@ msgstr "Aktivera spårning av inaktiva konton"
1480
1482
 
1481
1483
  #: core/app_settings.py:686
1482
1484
  msgid ""
1483
- "Allow the administrator to set a threshold (in days) beyond which an account "
1484
- "is considered inactive if the user hasn't logged in"
1485
+ "Allow the administrator to set a threshold (in days) beyond which an account"
1486
+ " is considered inactive if the user hasn't logged in"
1485
1487
  msgstr ""
1486
1488
  "Tillåt administratören att ställa in en tröskel (i dagar) över vilken ett "
1487
1489
  "konto anses inaktivt om användaren inte har loggat in"
@@ -1492,8 +1494,8 @@ msgstr "Gräns för inaktiva konton"
1492
1494
 
1493
1495
  #: core/app_settings.py:698
1494
1496
  msgid ""
1495
- "An account with a last login date greater than this threshold (in days) will "
1496
- "be considered as inactive"
1497
+ "An account with a last login date greater than this threshold (in days) will"
1498
+ " be considered as inactive"
1497
1499
  msgstr ""
1498
1500
  "Ett konto som inte har loggat in innan denna gräns (antal dagar) kommer "
1499
1501
  "anses som inaktivt"
@@ -1514,19 +1516,27 @@ msgstr "Maximal ålder för loggpost"
1514
1516
  msgid "The maximum age in days of a log record"
1515
1517
  msgstr "Maximal ålder i dagar för en logg post"
1516
1518
 
1517
- #: core/app_settings.py:726
1519
+ #: core/app_settings.py:727
1520
+ msgid "Retention time in message history"
1521
+ msgstr ""
1522
+
1523
+ #: core/app_settings.py:730
1524
+ msgid "Retention time (in days) of a message in the message history section"
1525
+ msgstr ""
1526
+
1527
+ #: core/app_settings.py:737
1518
1528
  msgid "Items per page"
1519
1529
  msgstr "Artiklar per sida"
1520
1530
 
1521
- #: core/app_settings.py:728
1531
+ #: core/app_settings.py:739
1522
1532
  msgid "Number of displayed items per page"
1523
1533
  msgstr "Antal poster som visas per sida"
1524
1534
 
1525
- #: core/app_settings.py:735
1535
+ #: core/app_settings.py:746
1526
1536
  msgid "Default top redirection"
1527
1537
  msgstr "Standard topp omdirigering"
1528
1538
 
1529
- #: core/app_settings.py:737
1539
+ #: core/app_settings.py:748
1530
1540
  msgid "The default redirection used when no application is specified"
1531
1541
  msgstr "Standard omdirigering när ingen applikation angetts"
1532
1542
 
@@ -1560,8 +1570,9 @@ msgstr ""
1560
1570
 
1561
1571
  #: core/checks.py:34
1562
1572
  msgid ""
1563
- "Visit : https://modoboa.readthedocs.io/en/latest/manual_installation/dovecot."
1564
- "html#dovecot-oauth2"
1573
+ "Visit : "
1574
+ "https://modoboa.readthedocs.io/en/latest/manual_installation/dovecot.html#dovecot-"
1575
+ "oauth2"
1565
1576
  msgstr ""
1566
1577
 
1567
1578
  #: core/checks.py:41
@@ -1572,8 +1583,9 @@ msgstr ""
1572
1583
 
1573
1584
  #: core/checks.py:45
1574
1585
  msgid ""
1575
- "Visit : https://modoboa.readthedocs.io/en/latest/manual_installation/"
1576
- "radicale.html#radicale-oauth2"
1586
+ "Visit : "
1587
+ "https://modoboa.readthedocs.io/en/latest/manual_installation/radicale.html#radicale-"
1588
+ "oauth2"
1577
1589
  msgstr ""
1578
1590
 
1579
1591
  #: core/constants.py:6
@@ -1749,7 +1761,8 @@ msgstr[1] "Lösenord måste innehålla minst {} specialtecken."
1749
1761
 
1750
1762
  #: core/password_validation.py:70
1751
1763
  msgid "Your password must contain a combination of different character types."
1752
- msgstr "Ditt lösenord måste innehålla en kombination av olika typer av tecken."
1764
+ msgstr ""
1765
+ "Ditt lösenord måste innehålla en kombination av olika typer av tecken."
1753
1766
 
1754
1767
  #: core/sms_backends/ovh.py:21 core/sms_backends/ovh.py:102
1755
1768
  msgid "API endpoint"
@@ -2045,8 +2058,8 @@ msgstr "Mappfilterinneslutningar"
2045
2058
  #: imap_migration/app_settings.py:76
2046
2059
  msgid ""
2047
2060
  "A comma seperated list of folders to explicitly include in sync even if "
2048
- "filtered by the Folder Filter Exclusions. Example: debian.user, debian."
2049
- "personal "
2061
+ "filtered by the Folder Filter Exclusions. Example: debian.user, "
2062
+ "debian.personal "
2050
2063
  msgstr ""
2051
2064
  "En kommaseparerad lista över mappar som explicit ska inkluderas i "
2052
2065
  "synkronisering även om de filtreras av mappfilteruteslutningarna. Exempel: "
@@ -2056,11 +2069,6 @@ msgstr ""
2056
2069
  msgid "IMAP Migration"
2057
2070
  msgstr "IMAP-migrering"
2058
2071
 
2059
- #: imap_migration/auth_backends.py:49 webmail/lib/imaputils.py:240
2060
- #, python-brace-format
2061
- msgid "Connection to IMAP server failed: {error}"
2062
- msgstr "Anslutning till IMAP-server misslyckades: {error}"
2063
-
2064
2072
  #: imap_migration/checks.py:12
2065
2073
  msgid ""
2066
2074
  "Automatic domain/mailbox creation is disabled which means IMAP "
@@ -2144,8 +2152,8 @@ msgid ""
2144
2152
  "Maximum number of allowed domain administrators for a new administrator. (0 "
2145
2153
  "to deny any creation, -1 to allow unlimited creations)"
2146
2154
  msgstr ""
2147
- "Maximalt antal tillåtna domänadministratörer för en ny administratör. (0 för "
2148
- "att neka någon skapelse, -1 för att tillåta obegränsade skapelser)"
2155
+ "Maximalt antal tillåtna domänadministratörer för en ny administratör. (0 för"
2156
+ " att neka någon skapelse, -1 för att tillåta obegränsade skapelser)"
2149
2157
 
2150
2158
  #: limits/app_settings.py:41
2151
2159
  msgid ""
@@ -2162,8 +2170,8 @@ msgstr "Domän alias"
2162
2170
 
2163
2171
  #: limits/app_settings.py:52
2164
2172
  msgid ""
2165
- "Maximum number of allowed domain aliases for a new administrator. (0 to deny "
2166
- "any creation, -1 to allow unlimited creations)"
2173
+ "Maximum number of allowed domain aliases for a new administrator. (0 to deny"
2174
+ " any creation, -1 to allow unlimited creations)"
2167
2175
  msgstr ""
2168
2176
  "Maximalt antal tillåtna domänalias för en ny administratör. (0 för att neka "
2169
2177
  "någon skapelse, -1 för att tillåta obegränsade skapelser)"
@@ -2186,8 +2194,8 @@ msgid ""
2186
2194
  "Maximum number of allowed aliases for a new administrator. (0 to deny any "
2187
2195
  "creation, -1 to allow unlimited creations)"
2188
2196
  msgstr ""
2189
- "Maximalt antal tillåtna alias för en ny administratör. (0 för att neka någon "
2190
- "skapelse, -1 för att tillåta obegränsade skapelser)"
2197
+ "Maximalt antal tillåtna alias för en ny administratör. (0 för att neka någon"
2198
+ " skapelse, -1 för att tillåta obegränsade skapelser)"
2191
2199
 
2192
2200
  #: limits/app_settings.py:84 limits/constants.py:59
2193
2201
  msgid "Quota"
@@ -2215,8 +2223,8 @@ msgstr "Aktivera eller inaktivera gränser per domän"
2215
2223
 
2216
2224
  #: limits/app_settings.py:114
2217
2225
  msgid ""
2218
- "Maximum number of allowed domain administrators for a new domain. (0 to deny "
2219
- "any creation, -1 to allow unlimited creations)"
2226
+ "Maximum number of allowed domain administrators for a new domain. (0 to deny"
2227
+ " any creation, -1 to allow unlimited creations)"
2220
2228
  msgstr ""
2221
2229
  "Maximalt antal tillåtna domänadministratörer för en ny domän. (0 för att "
2222
2230
  "neka någon skapelse, -1 för att tillåta obegränsade skapelser)"
@@ -2239,8 +2247,8 @@ msgstr ""
2239
2247
 
2240
2248
  #: limits/app_settings.py:149
2241
2249
  msgid ""
2242
- "Maximum number of allowed aliases for a new domain. (0 to deny any creation, "
2243
- "-1 to allow unlimited creations)"
2250
+ "Maximum number of allowed aliases for a new domain. (0 to deny any creation,"
2251
+ " -1 to allow unlimited creations)"
2244
2252
  msgstr ""
2245
2253
  "Maximalt antal tillåtna alias för en ny domän. (0 för att neka någon "
2246
2254
  "skapelse, -1 för att tillåta obegränsade skapelser)"
@@ -2406,11 +2414,11 @@ msgstr "Konton"
2406
2414
  msgid "Personal account information"
2407
2415
  msgstr "Personlig kontoinformation"
2408
2416
 
2409
- #: pdfcredentials/api/v2/serializers.py:81
2417
+ #: pdfcredentials/api/v2/serializers.py:86
2410
2418
  msgid "Directory is not writable"
2411
2419
  msgstr "Katalog är inte skrivbar"
2412
2420
 
2413
- #: pdfcredentials/api/v2/serializers.py:102
2421
+ #: pdfcredentials/api/v2/serializers.py:114
2414
2422
  msgid "No document available for this user"
2415
2423
  msgstr "Inget dokument tillgängligt för denna användare"
2416
2424
 
@@ -2459,8 +2467,8 @@ msgid ""
2459
2467
  "Generate a new document only when a new account is created. If set to no, a "
2460
2468
  "new document will be created each time a password is updated."
2461
2469
  msgstr ""
2462
- "Skapa ett nytt dokument först när ett nytt konto har skapats. Om inställt på "
2463
- "nej kommer ett nytt dokument att skapas varje gång ett lösenord uppdateras."
2470
+ "Skapa ett nytt dokument först när ett nytt konto har skapats. Om inställt på"
2471
+ " nej kommer ett nytt dokument att skapas varje gång ett lösenord uppdateras."
2464
2472
 
2465
2473
  #: pdfcredentials/app_settings.py:84
2466
2474
  msgid "Customization options"
@@ -2586,8 +2594,7 @@ msgid ""
2586
2594
  "your contacts.\n"
2587
2595
  msgstr ""
2588
2596
  "\n"
2589
- "Här kan du se dina e-postmeddelanden när som helst online, skapa filter "
2590
- "eller hantera\n"
2597
+ "Här kan du se dina e-postmeddelanden när som helst online, skapa filter eller hantera\n"
2591
2598
  "dina kontakter.\n"
2592
2599
 
2593
2600
  #: pdfcredentials/documents.py:126
@@ -2688,11 +2695,11 @@ msgstr "Sökväg till nyckelkarta"
2688
2695
 
2689
2696
  #: rspamd/app_settings.py:21
2690
2697
  msgid ""
2691
- "Absolute path of the file which contains paths to DKIM private keys. Must be "
2692
- "readable by _rspamd group or user."
2698
+ "Absolute path of the file which contains paths to DKIM private keys. Must be"
2699
+ " readable by _rspamd group or user."
2693
2700
  msgstr ""
2694
- "Absolut sökväg till filen som innehåller sökvägar till DKIM privata nycklar. "
2695
- "Måste vara läsbar av _rspamd-gruppen eller användaren."
2701
+ "Absolut sökväg till filen som innehåller sökvägar till DKIM privata nycklar."
2702
+ " Måste vara läsbar av _rspamd-gruppen eller användaren."
2696
2703
 
2697
2704
  #: rspamd/app_settings.py:30
2698
2705
  msgid "Selector map path"
@@ -2712,8 +2719,8 @@ msgstr "Plats för Rspamd-dashboard"
2712
2719
 
2713
2720
  #: rspamd/app_settings.py:53
2714
2721
  msgid ""
2715
- "Location of the rspamd dashboard. Can either be a relative URL (eg. '/"
2716
- "rspamd') or a full URL (eg. 'https://rspamd.domain.tld/').Only use for "
2722
+ "Location of the rspamd dashboard. Can either be a relative URL (eg. "
2723
+ "'/rspamd') or a full URL (eg. 'https://rspamd.domain.tld/').Only use for "
2717
2724
  "guidance on the Super-Admin dashboard."
2718
2725
  msgstr ""
2719
2726
  "Plats för Rspamd-dashboarden. Kan vara en relativ URL (t.ex. '/rspamd') "
@@ -2942,9 +2949,9 @@ msgid ""
2942
2949
  "primary address, and check your spam folder.</p>"
2943
2950
  msgstr ""
2944
2951
  "<p>Vi har e-postat dig instruktioner för att ändra ditt lösenord, om ett "
2945
- "konto finns med den e-post adress du angav. Du borde få detta brev inom kort."
2946
- "</p> <p>Om du inte fått något brev, var vänlig kontrollera att du angav rätt "
2947
- "e-post adress, och kolla din skräpkatalog.</p>"
2952
+ "konto finns med den e-post adress du angav. Du borde få detta brev inom "
2953
+ "kort.</p> <p>Om du inte fått något brev, var vänlig kontrollera att du angav"
2954
+ " rätt e-post adress, och kolla din skräpkatalog.</p>"
2948
2955
 
2949
2956
  #: templates/registration/password_reset_email.html:4
2950
2957
  #: templates/registration/password_reset_email_v2.html:4
@@ -2953,8 +2960,8 @@ msgid ""
2953
2960
  "To initiate the password reset process for your %(username)s Modoboa "
2954
2961
  "account, click the link below:"
2955
2962
  msgstr ""
2956
- "För att starta processen för återställning av lösenord för ditt %(username)s "
2957
- "Modoboa konto, klicka på länken nedanför:"
2963
+ "För att starta processen för återställning av lösenord för ditt %(username)s"
2964
+ " Modoboa konto, klicka på länken nedanför:"
2958
2965
 
2959
2966
  #: templates/registration/password_reset_email.html:10
2960
2967
  #: templates/registration/password_reset_email_v2.html:10
@@ -2992,8 +2999,8 @@ msgstr "Engångslösenord"
2992
2999
 
2993
3000
  #: templates/registration/twofactor_code_verify.html:35
2994
3001
  msgid ""
2995
- "Enter the code from the two-factor app on your mobile device. If you've lost "
2996
- "your device, you may enter one of your recovery codes."
3002
+ "Enter the code from the two-factor app on your mobile device. If you've lost"
3003
+ " your device, you may enter one of your recovery codes."
2997
3004
  msgstr ""
2998
3005
  "Ange koden från tvåfaktorsappen på din mobila enhet. Om du har tappat bort "
2999
3006
  "din enhet kan du ange en av dina återställningskoder."
@@ -3065,7 +3072,7 @@ msgstr "Servern behöver autentisering"
3065
3072
 
3066
3073
  #: webmail/app_settings.py:118
3067
3074
  msgid "Display"
3068
- msgstr "Visa"
3075
+ msgstr "Visning"
3069
3076
 
3070
3077
  #: webmail/app_settings.py:124
3071
3078
  msgid "Default message display mode"
@@ -3085,7 +3092,7 @@ msgstr "Aktivera/inaktivera HTML-länkvisning"
3085
3092
 
3086
3093
  #: webmail/app_settings.py:144
3087
3094
  msgid "Number of displayed emails per page"
3088
- msgstr "Antal visade e-postmeddelanden per sida"
3095
+ msgstr "Antalet visade e-postmeddelanden per sida"
3089
3096
 
3090
3097
  #: webmail/app_settings.py:147
3091
3098
  msgid "Sets the maximum number of messages displayed in a page"
@@ -3163,14 +3170,30 @@ msgstr "Signaturtext"
3163
3170
  msgid "User defined email signature"
3164
3171
  msgstr "Användardefinierad e-postsignatur"
3165
3172
 
3173
+ #: webmail/exceptions.py:18
3174
+ #, fuzzy
3175
+ #| msgid "Server address"
3176
+ msgid "Server response"
3177
+ msgstr "Server adress"
3178
+
3166
3179
  #: webmail/lib/attachments.py:112
3167
3180
  msgid "Failed to remove attachment: "
3168
3181
  msgstr "Det gick inte att ta bort bilagan:"
3169
3182
 
3183
+ #: webmail/lib/imapemail.py:272
3184
+ msgid "wrote:"
3185
+ msgstr ""
3186
+
3170
3187
  #: webmail/lib/imapemail.py:306
3171
3188
  msgid "Date"
3172
3189
  msgstr "Datum"
3173
3190
 
3191
+ #: webmail/lib/imapemail.py:322 webmail/lib/imapemail.py:325
3192
+ #, fuzzy
3193
+ #| msgid "All messages"
3194
+ msgid "Original message"
3195
+ msgstr "Alla meddelanden"
3196
+
3174
3197
  #: webmail/lib/imaputils.py:221
3175
3198
  msgid "Failed to retrieve hierarchy delimiter"
3176
3199
  msgstr "Misslyckades med att hämta hierarkinavgränsaren"
@@ -3199,3 +3222,13 @@ msgstr "Papperskorg"
3199
3222
  #, python-format
3200
3223
  msgid "Attachment is too big (limit: %s)"
3201
3224
  msgstr "Bilagan är för stor (gräns: %s)"
3225
+
3226
+ #~ msgid "No alarm ID provided"
3227
+ #~ msgstr "Inget larm-ID angett"
3228
+
3229
+ #~ msgid "Received invalid alarm id(s)"
3230
+ #~ msgstr "Mottog ogiltiga larm-id(n)"
3231
+
3232
+ #, python-brace-format
3233
+ #~ msgid "Connection to IMAP server failed: {error}"
3234
+ #~ msgstr "Anslutning till IMAP-server misslyckades: {error}"