modoboa 2.6.5__py3-none-any.whl → 2.7.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- modoboa/admin/api/v2/serializers.py +1 -0
- modoboa/admin/app_settings.py +12 -0
- modoboa/admin/{management/commands/subcommands/_mx.py → dns_checker.py} +41 -111
- modoboa/admin/jobs.py +86 -0
- modoboa/admin/management/commands/modo.py +0 -2
- modoboa/admin/tests/test_mailbox_operations.py +4 -4
- modoboa/admin/tests/test_mx.py +68 -56
- modoboa/amavis/jobs.py +11 -0
- modoboa/amavis/tests/test_jobs.py +18 -0
- modoboa/amavis/tests/test_viewsets.py +2 -3
- modoboa/autoconfig/templates/autoconfig/autoconfig.xml +2 -2
- modoboa/autoconfig/templates/autoconfig/autodiscover.xml +14 -0
- modoboa/autoconfig/tests.py +2 -1
- modoboa/autoconfig/views.py +11 -3
- modoboa/calendars/backends/caldav_.py +17 -13
- modoboa/calendars/jobs.py +7 -0
- modoboa/calendars/mocks.py +4 -1
- modoboa/calendars/serializers.py +14 -9
- modoboa/calendars/tests.py +10 -9
- modoboa/calendars/viewsets.py +3 -1
- modoboa/contacts/migrations/0008_addressbook_syncing.py +18 -0
- modoboa/contacts/models.py +1 -0
- modoboa/contacts/serializers.py +5 -2
- modoboa/contacts/tasks.py +9 -3
- modoboa/contacts/tests.py +32 -6
- modoboa/contacts/viewsets.py +7 -1
- modoboa/core/api/v2/serializers.py +0 -7
- modoboa/core/api/v2/tests.py +0 -10
- modoboa/core/app_settings.py +0 -22
- modoboa/core/commands/deploy.py +13 -0
- modoboa/core/commands/templates/cron_config.py.tpl +33 -0
- modoboa/core/commands/templates/settings.py.tpl +21 -0
- modoboa/core/jobs.py +34 -0
- modoboa/core/management/commands/load_initial_data.py +1 -1
- modoboa/core/password_hashers/base.py +4 -1
- modoboa/core/tests/test_core.py +0 -14
- modoboa/core/tests/test_jobs.py +40 -0
- modoboa/frontend_dist/assets/{AccountAliasForm-B-hTKSFr.js → AccountAliasForm-DO6DwfjE.js} +1 -1
- modoboa/frontend_dist/assets/{AccountEditView-LkP_qhf_.js → AccountEditView-CCuN9mGB.js} +1 -1
- modoboa/frontend_dist/assets/AccountLayout-Ge7fzuZg.js +1 -0
- modoboa/frontend_dist/assets/AccountPasswordSubForm-PkFPblkR.js +1 -0
- modoboa/frontend_dist/assets/AccountView-dgseekZ8.js +1 -0
- modoboa/frontend_dist/assets/AddressBook-DZWOHOJj.js +1 -0
- modoboa/frontend_dist/assets/AdminLayout-itB_mmH_.js +1 -0
- modoboa/frontend_dist/assets/AlarmsView-King6zb6.js +1 -0
- modoboa/frontend_dist/assets/{AliasEditView-BVjNJekt.js → AliasEditView-CTjrXYPf.js} +1 -1
- modoboa/frontend_dist/assets/AliasRecipientForm-CI7bXqVp.js +1 -0
- modoboa/frontend_dist/assets/{AliasView-DvvI6cV9.js → AliasView-BN13MNN_.js} +1 -1
- modoboa/frontend_dist/assets/AuditTrailView-C1jQwgoo.js +1 -0
- modoboa/frontend_dist/assets/CalendarView-juHVIHU5.css +1 -0
- modoboa/frontend_dist/assets/CalendarView-rRSzqxrH.js +1 -0
- modoboa/frontend_dist/assets/ChoiceField-DCr12shR.js +1 -0
- modoboa/frontend_dist/assets/ComposeEmailForm-BmtKwFb1.js +2 -0
- modoboa/frontend_dist/assets/ComposeEmailForm-CVNDl-Mq.css +1 -0
- modoboa/frontend_dist/assets/ComposeEmailView-JW22Phrb.js +1 -0
- modoboa/frontend_dist/assets/ConfirmDialog-CWpdwSQ6.js +1 -0
- modoboa/frontend_dist/assets/ConnectedLayout-BP8pO27H.js +1 -0
- modoboa/frontend_dist/assets/{ConnectedLayout-C6HNXWkp.css → ConnectedLayout-Ddpb_6yT.css} +1 -1
- modoboa/frontend_dist/assets/CreationForm-CzelJsVQ.js +1 -0
- modoboa/frontend_dist/assets/DashboardView-BBkBodVj.js +1 -0
- modoboa/frontend_dist/assets/{DomainAdminList-BO8_4Cwt.js → DomainAdminList-DD7p3i6F.js} +1 -1
- modoboa/frontend_dist/assets/{DomainEditView-BXylM4aB.js → DomainEditView-DoIoNYC4.js} +1 -1
- modoboa/frontend_dist/assets/{DomainTransportForm-Ccw5BXyM.js → DomainTransportForm-CbiJF9z5.js} +1 -1
- modoboa/frontend_dist/assets/{DomainView-Bd5XQI-1.js → DomainView-BXvznFYz.js} +3 -3
- modoboa/frontend_dist/assets/DomainsView-ffYjiffp.js +1 -0
- modoboa/frontend_dist/assets/EmailField-KhhJYA4D.js +1 -0
- modoboa/frontend_dist/assets/EmailSchedulingForm-CQL5Vfdr.js +1 -0
- modoboa/frontend_dist/assets/EmailView-Bq2bHZBO.js +1 -0
- modoboa/frontend_dist/assets/EmptyLayout-NrTftp18.js +1 -0
- modoboa/frontend_dist/assets/FiltersView-SOQy0U_3.js +1 -0
- modoboa/frontend_dist/assets/ForwardEmailView-kEPDjWUw.js +1 -0
- modoboa/frontend_dist/assets/{HtmlEditor-DNn3CY-w.js → HtmlEditor-CyBl5wj2.js} +15 -15
- modoboa/frontend_dist/assets/IdentitiesView-CZFf4oR9.js +1 -0
- modoboa/frontend_dist/assets/InformationView-CAtneAqM.js +1 -0
- modoboa/frontend_dist/assets/{LoadingData-CnQ_aVqa.js → LoadingData-C2txD49L.js} +1 -1
- modoboa/frontend_dist/assets/{LoginCallbackView-Nh_gmh8e.js → LoginCallbackView-DAvty3CI.js} +1 -1
- modoboa/frontend_dist/assets/{LoginView-BtC9BHuJ.js → LoginView-DHYITkn4.js} +1 -1
- modoboa/frontend_dist/assets/MailboxView-BNg2v7mi.css +1 -0
- modoboa/frontend_dist/assets/MailboxView-DHg5A78D.js +5 -0
- modoboa/frontend_dist/assets/MenuItems-C9p70bSC.js +1 -0
- modoboa/frontend_dist/assets/{MessageView-C1Goz-hY.js → MessageView-CrrEJpNI.js} +1 -1
- modoboa/frontend_dist/assets/MessagesView-CyecRd4I.js +1 -0
- modoboa/frontend_dist/assets/MigrationsView-DXGKKz2h.js +1 -0
- modoboa/frontend_dist/assets/{ParametersForm-BegEnkQM.js → ParametersForm-DFKYkPAs.js} +1 -1
- modoboa/frontend_dist/assets/ParametersView-B1wT5oyt.js +1 -0
- modoboa/frontend_dist/assets/ParametersView-CfvVzKea.js +1 -0
- modoboa/frontend_dist/assets/ProviderEditView-De-8ggBp.js +1 -0
- modoboa/frontend_dist/assets/{ProviderGeneralForm-BAELnXh6.js → ProviderGeneralForm-DO-IpJMQ.js} +1 -1
- modoboa/frontend_dist/assets/ProvidersView-Bhk7sCz4.js +1 -0
- modoboa/frontend_dist/assets/QuarantineLayout-C1YszNmP.js +1 -0
- modoboa/frontend_dist/assets/QuarantineView-cElD_rS-.js +1 -0
- modoboa/frontend_dist/assets/ReplyEmailView-BvuOZdLl.js +1 -0
- modoboa/frontend_dist/assets/ResourcesForm-FWxrmVwo.js +1 -0
- modoboa/frontend_dist/assets/SelfServiceLayout-JHRvfvQf.js +1 -0
- modoboa/frontend_dist/assets/SettingsView-SIsKAXtQ.css +1 -0
- modoboa/frontend_dist/assets/SettingsView-s2l2Xl1L.js +6 -0
- modoboa/frontend_dist/assets/StatisticsView-FiidWvad.js +1 -0
- modoboa/frontend_dist/assets/TimeSerieChart-CdqUHiO_.js +1 -0
- modoboa/frontend_dist/assets/TimeSerieChart-nLIFGI0y.css +1 -0
- modoboa/frontend_dist/assets/UserLayout-DyvI8duf.js +1 -0
- modoboa/frontend_dist/assets/{VAlert-Buv8Z5G4.js → VAlert-MDbeolOo.js} +1 -1
- modoboa/frontend_dist/assets/VApp-DM1KLQfQ.js +1 -0
- modoboa/frontend_dist/assets/VAutocomplete-C9NL5_uo.css +1 -0
- modoboa/frontend_dist/assets/VAutocomplete-CQsWYWNX.js +1 -0
- modoboa/frontend_dist/assets/VAvatar-CXV_FqpP.js +1 -0
- modoboa/frontend_dist/assets/VBadge-7tDx7aI3.js +1 -0
- modoboa/frontend_dist/assets/{VCard-D7AwBs4w.js → VCard-CBtX8JF-.js} +1 -1
- modoboa/frontend_dist/assets/VCheckbox-zY1MApOy.js +1 -0
- modoboa/frontend_dist/assets/{VCheckboxBtn-B5evxN9K.js → VCheckboxBtn-B0mIT3E0.js} +1 -1
- modoboa/frontend_dist/assets/VColorPicker-BbCHvk6K.js +1 -0
- modoboa/frontend_dist/assets/{VColorPicker-B_lVDaYR.css → VColorPicker-C9m8L-6U.css} +1 -1
- modoboa/frontend_dist/assets/{VContainer-DY9021j4.js → VContainer-Cn-vKB3s.js} +1 -1
- modoboa/frontend_dist/assets/VDataTable-CNT9KOSp.js +1 -0
- modoboa/frontend_dist/assets/VDataTableServer-_yn4Ry6U.js +1 -0
- modoboa/frontend_dist/assets/VDataTableVirtual-Csxh3Gp6.js +1 -0
- modoboa/frontend_dist/assets/VDatePicker-_OUDqShN.css +1 -0
- modoboa/frontend_dist/assets/VDatePicker-iFu13xIP.js +2 -0
- modoboa/frontend_dist/assets/VDialog-lKtBdqnp.js +1 -0
- modoboa/frontend_dist/assets/VExpansionPanels-CaIvk9iF.js +1 -0
- modoboa/frontend_dist/assets/VFileInput-C7J_qVmk.js +1 -0
- modoboa/frontend_dist/assets/VForm-fdQ5d-CH.js +1 -0
- modoboa/frontend_dist/assets/VInput-BwHvhzAe.js +1 -0
- modoboa/frontend_dist/assets/VMenu-BpmJf4X2.js +1 -0
- modoboa/frontend_dist/assets/VMenu-C5A_5Hs5.css +1 -0
- modoboa/frontend_dist/assets/VPicker-B7cB3kJg.css +1 -0
- modoboa/frontend_dist/assets/VPicker-BZho70wU.js +1 -0
- modoboa/frontend_dist/assets/VProgressCircular-DRw_-iNj.js +1 -0
- modoboa/frontend_dist/assets/VRadioGroup--eiP5xtJ.js +1 -0
- modoboa/frontend_dist/assets/{VRow-DyK_Mj7R.js → VRow-83Qnr5iB.js} +1 -1
- modoboa/frontend_dist/assets/VSelect-BcmGFGif.js +1 -0
- modoboa/frontend_dist/assets/{VSelectionControl-Dkms9_P5.js → VSelectionControl-Cqi1xt-q.js} +1 -1
- modoboa/frontend_dist/assets/VSheet-C3MaHhtw.js +1 -0
- modoboa/frontend_dist/assets/VSpacer-CuSkdJZL.js +1 -0
- modoboa/frontend_dist/assets/VSwitch-XumUl685.js +1 -0
- modoboa/frontend_dist/assets/{VTable-D8ZwwC_B.js → VTable-f7wcr2AZ.js} +1 -1
- modoboa/frontend_dist/assets/VTabs-CDfdejXj.css +1 -0
- modoboa/frontend_dist/assets/VTabs-y4wNP4im.js +1 -0
- modoboa/frontend_dist/assets/VTextField-BPIvtrn4.js +1 -0
- modoboa/frontend_dist/assets/VTextField-DjbYGlzs.css +1 -0
- modoboa/frontend_dist/assets/VTextarea-B6bGYcC3.js +1 -0
- modoboa/frontend_dist/assets/VTextarea-f6vTjzFy.css +1 -0
- modoboa/frontend_dist/assets/VToolbar-BYDPtwf0.css +1 -0
- modoboa/frontend_dist/assets/VToolbar-CB6wwtYc.js +1 -0
- modoboa/frontend_dist/assets/VWindowItem-CDtLLEkg.js +1 -0
- modoboa/frontend_dist/assets/WebmailLayout-CQQAolnl.css +1 -0
- modoboa/frontend_dist/assets/WebmailLayout-tosQSHLS.js +1 -0
- modoboa/frontend_dist/assets/{accounts-BZBqbAmd.js → accounts-KUsk6LHW.js} +1 -1
- modoboa/frontend_dist/assets/{admin-uCrKjpln.js → admin-BW9cZW0P.js} +1 -1
- modoboa/frontend_dist/assets/{aliases-CFwFkX45.js → aliases-Ge0hjIsH.js} +1 -1
- modoboa/frontend_dist/assets/{amavis-DCy0U0TD.js → amavis-BbFeFfsk.js} +1 -1
- modoboa/frontend_dist/assets/{amavis-B4ScfQsG.js → amavis-DtuzP_CS.js} +1 -1
- modoboa/frontend_dist/assets/{contacts-DKmh2q-4.js → contacts-DMJlQTe0.js} +1 -1
- modoboa/frontend_dist/assets/{domains-CDE4_LDF.js → domains-Du64lcXT.js} +1 -1
- modoboa/frontend_dist/assets/{domains.store-a9Y5UlDV.js → domains.store-1U61jeCV.js} +1 -1
- modoboa/frontend_dist/assets/events-BM3in65C.js +1 -0
- modoboa/frontend_dist/assets/filter-Dihm6o59.js +1 -0
- modoboa/frontend_dist/assets/importExport-HGcNGWOm.js +1 -0
- modoboa/frontend_dist/assets/{index-B9q1vO3K.css → index-B1EK3MQe.css} +1 -1
- modoboa/frontend_dist/assets/{index-Dwg6jPTX.js → index-Dv00bmw9.js} +1 -1
- modoboa/frontend_dist/assets/{index-BjibLozh.js → index-jui3edpn.js} +47 -41
- modoboa/frontend_dist/assets/{language.store-DGuI8jG0.js → language.store-OcfdXL_-.js} +1 -1
- modoboa/frontend_dist/assets/languages-CF8hxo7x.js +1 -0
- modoboa/frontend_dist/assets/{layout-5PvsmkGR.js → layout-DOO7TRTJ.js} +1 -1
- modoboa/frontend_dist/assets/{layout.store-DJVcXtxk.js → layout.store-C0g-piJn.js} +1 -1
- modoboa/frontend_dist/assets/{logos-CMmd0hOG.js → logos-Dz2Gzei-.js} +1 -1
- modoboa/frontend_dist/assets/{logs-D2GOydPZ.js → logs-CLm32Weu.js} +1 -1
- modoboa/frontend_dist/assets/{parameters-DJdlq9sh.js → parameters-DMIAQ7cd.js} +1 -1
- modoboa/frontend_dist/assets/{parameters.store-DH3pPlaT.js → parameters.store-DLnFzCwV.js} +1 -1
- modoboa/frontend_dist/assets/{permissions-CgFJFhCp.js → permissions-CrpE0b4w.js} +1 -1
- modoboa/frontend_dist/assets/{ssrBoot-ChTB-PYP.js → ssrBoot-B7cr7q9U.js} +1 -1
- modoboa/frontend_dist/assets/{tag-CvrHE14f.js → tag-WF93n81Q.js} +1 -1
- modoboa/frontend_dist/assets/{theme-DFzlhSh5.js → theme-_0oOYChG.js} +1 -1
- modoboa/frontend_dist/assets/transports-CS61syt-.js +1 -0
- modoboa/frontend_dist/assets/webmail-CYDXU0DS.js +1 -0
- modoboa/frontend_dist/assets/webmail.store-BvHCQSjM.js +1 -0
- modoboa/frontend_dist/index.html +2 -2
- modoboa/imap_migration/models.py +3 -3
- modoboa/imap_migration/templates/imap_migration/offlineimap.conf +2 -2
- modoboa/imap_migration/tests.py +21 -0
- modoboa/lib/cryptutils.py +2 -2
- modoboa/lib/sysutils.py +1 -1
- modoboa/lib/tests/__init__.py +0 -1
- modoboa/locale/br/LC_MESSAGES/django.mo +0 -0
- modoboa/locale/br/LC_MESSAGES/django.po +301 -273
- modoboa/locale/cs/LC_MESSAGES/django.po +286 -269
- modoboa/locale/cs_CZ/LC_MESSAGES/django.mo +0 -0
- modoboa/locale/cs_CZ/LC_MESSAGES/django.po +303 -275
- modoboa/locale/de/LC_MESSAGES/django.mo +0 -0
- modoboa/locale/de/LC_MESSAGES/django.po +297 -269
- modoboa/locale/de_DE/LC_MESSAGES/django.mo +0 -0
- modoboa/locale/de_DE/LC_MESSAGES/django.po +303 -275
- modoboa/locale/el_GR/LC_MESSAGES/django.mo +0 -0
- modoboa/locale/el_GR/LC_MESSAGES/django.po +303 -275
- modoboa/locale/en/LC_MESSAGES/django.po +286 -269
- modoboa/locale/es/LC_MESSAGES/django.mo +0 -0
- modoboa/locale/es/LC_MESSAGES/django.po +302 -274
- modoboa/locale/es_MX/LC_MESSAGES/django.po +286 -269
- modoboa/locale/fi/LC_MESSAGES/django.mo +0 -0
- modoboa/locale/fi/LC_MESSAGES/django.po +299 -271
- modoboa/locale/fr/LC_MESSAGES/django.mo +0 -0
- modoboa/locale/fr/LC_MESSAGES/django.po +288 -271
- modoboa/locale/hu/LC_MESSAGES/django.po +286 -269
- modoboa/locale/it/LC_MESSAGES/django.mo +0 -0
- modoboa/locale/it/LC_MESSAGES/django.po +303 -275
- modoboa/locale/ja_JP/LC_MESSAGES/django.mo +0 -0
- modoboa/locale/ja_JP/LC_MESSAGES/django.po +390 -413
- modoboa/locale/ka/LC_MESSAGES/django.po +286 -269
- modoboa/locale/nl_NL/LC_MESSAGES/django.mo +0 -0
- modoboa/locale/nl_NL/LC_MESSAGES/django.po +299 -271
- modoboa/locale/no/LC_MESSAGES/django.po +286 -269
- modoboa/locale/pl_PL/LC_MESSAGES/django.mo +0 -0
- modoboa/locale/pl_PL/LC_MESSAGES/django.po +297 -269
- modoboa/locale/pt_BR/LC_MESSAGES/django.mo +0 -0
- modoboa/locale/pt_BR/LC_MESSAGES/django.po +298 -270
- modoboa/locale/pt_PT/LC_MESSAGES/django.mo +0 -0
- modoboa/locale/pt_PT/LC_MESSAGES/django.po +303 -275
- modoboa/locale/ro_RO/LC_MESSAGES/django.mo +0 -0
- modoboa/locale/ro_RO/LC_MESSAGES/django.po +299 -271
- modoboa/locale/ru/LC_MESSAGES/django.mo +0 -0
- modoboa/locale/ru/LC_MESSAGES/django.po +993 -1096
- modoboa/locale/si/LC_MESSAGES/django.po +286 -269
- modoboa/locale/sk/LC_MESSAGES/django.po +286 -269
- modoboa/locale/sk_SK/LC_MESSAGES/django.po +286 -269
- modoboa/locale/sl_SI/LC_MESSAGES/django.po +288 -269
- modoboa/locale/sv/LC_MESSAGES/django.mo +0 -0
- modoboa/locale/sv/LC_MESSAGES/django.po +297 -269
- modoboa/locale/tr/LC_MESSAGES/django.mo +0 -0
- modoboa/locale/tr/LC_MESSAGES/django.po +301 -272
- modoboa/locale/tr_TR/LC_MESSAGES/django.mo +0 -0
- modoboa/locale/tr_TR/LC_MESSAGES/django.po +291 -269
- modoboa/locale/uk/LC_MESSAGES/django.po +286 -269
- modoboa/locale/zh/LC_MESSAGES/django.po +286 -269
- modoboa/locale/zh_CN/LC_MESSAGES/django.po +286 -269
- modoboa/locale/zh_TW/LC_MESSAGES/django.mo +0 -0
- modoboa/locale/zh_TW/LC_MESSAGES/django.po +295 -273
- modoboa/maillog/jobs.py +11 -0
- modoboa/maillog/tests/test_views.py +5 -4
- modoboa/parameters/api/v2/tests.py +1 -1
- modoboa/policyd/management/commands/policy_daemon.py +5 -1
- modoboa/policyd/tests.py +4 -2
- modoboa/rspamd/tests.py +20 -0
- modoboa/templates/registration/twofactor_code_verify.html +1 -1
- modoboa/webmail/app_settings.py +37 -0
- modoboa/webmail/constants.py +21 -1
- modoboa/webmail/factories.py +19 -0
- modoboa/webmail/jobs.py +27 -0
- modoboa/webmail/lib/__init__.py +0 -2
- modoboa/webmail/lib/imapemail.py +9 -11
- modoboa/webmail/lib/imapheader.py +25 -13
- modoboa/webmail/lib/imaputils.py +51 -13
- modoboa/webmail/lib/sendmail.py +88 -105
- modoboa/webmail/lib/utils.py +109 -0
- modoboa/webmail/migrations/0001_initial.py +90 -0
- modoboa/webmail/migrations/__init__.py +0 -0
- modoboa/webmail/mocks.py +12 -3
- modoboa/webmail/models.py +102 -0
- modoboa/webmail/serializers.py +84 -4
- modoboa/webmail/tests/data.py +21 -0
- modoboa/webmail/tests/test_lib_imaputils.py +33 -0
- modoboa/webmail/tests/test_viewsets.py +108 -0
- modoboa/webmail/urls.py +5 -0
- modoboa/webmail/viewsets.py +39 -9
- {modoboa-2.6.5.dist-info → modoboa-2.7.0.dist-info}/METADATA +16 -13
- {modoboa-2.6.5.dist-info → modoboa-2.7.0.dist-info}/RECORD +269 -252
- {modoboa-2.6.5.dist-info → modoboa-2.7.0.dist-info}/WHEEL +1 -1
- modoboa/admin/management/commands/handle_mailbox_operations.py +0 -103
- modoboa/core/management/commands/cleanlogs.py +0 -53
- modoboa/frontend_dist/assets/AccountLayout-APeC9bsN.js +0 -1
- modoboa/frontend_dist/assets/AccountPasswordSubForm-D4vB2yQK.js +0 -1
- modoboa/frontend_dist/assets/AccountView-CloBP1BY.js +0 -1
- modoboa/frontend_dist/assets/AddressBook-C03MXg3y.js +0 -1
- modoboa/frontend_dist/assets/AdminLayout-DFmyKOo6.js +0 -1
- modoboa/frontend_dist/assets/AlarmsView-CFhH0I5d.js +0 -1
- modoboa/frontend_dist/assets/AliasRecipientForm-CZ_SvjtG.js +0 -1
- modoboa/frontend_dist/assets/AuditTrailView-Cyq25Jle.js +0 -1
- modoboa/frontend_dist/assets/CalendarView-C_dSXRp9.js +0 -1
- modoboa/frontend_dist/assets/ChoiceField-BPhUvoyr.js +0 -1
- modoboa/frontend_dist/assets/ComposeEmailForm-D3yUbBJX.css +0 -1
- modoboa/frontend_dist/assets/ComposeEmailForm-Ns5SYs4J.js +0 -1
- modoboa/frontend_dist/assets/ComposeEmailView-DgUfiWEH.js +0 -1
- modoboa/frontend_dist/assets/ConfirmDialog-BMIg94-U.js +0 -1
- modoboa/frontend_dist/assets/ConnectedLayout-CSXdVJtV.js +0 -1
- modoboa/frontend_dist/assets/CreationForm-CaAZYATm.js +0 -1
- modoboa/frontend_dist/assets/DashboardView-DErmyUoy.js +0 -1
- modoboa/frontend_dist/assets/DomainsView-CC1EwRId.js +0 -1
- modoboa/frontend_dist/assets/EmailField-BFgga4zp.js +0 -1
- modoboa/frontend_dist/assets/EmailView-DPWTch_6.js +0 -1
- modoboa/frontend_dist/assets/EmptyLayout-DAw7fAab.js +0 -1
- modoboa/frontend_dist/assets/FiltersView-Cg9lkLw0.js +0 -1
- modoboa/frontend_dist/assets/ForwardEmailView-Dd1sxgaP.js +0 -1
- modoboa/frontend_dist/assets/IdentitiesView-CiHIQ9Qt.js +0 -1
- modoboa/frontend_dist/assets/InformationView-Cc0aBA5j.js +0 -1
- modoboa/frontend_dist/assets/MailboxView-DIVABvk5.css +0 -1
- modoboa/frontend_dist/assets/MailboxView-DplC0IXR.js +0 -5
- modoboa/frontend_dist/assets/MenuItems-efx2rqwT.js +0 -1
- modoboa/frontend_dist/assets/MessagesView-CesYYZ9f.js +0 -1
- modoboa/frontend_dist/assets/MigrationsView-DSBk8T0y.js +0 -1
- modoboa/frontend_dist/assets/ParametersView-B8W_PAiz.js +0 -1
- modoboa/frontend_dist/assets/ParametersView-Dsx2M_g9.js +0 -1
- modoboa/frontend_dist/assets/ProviderEditView-PEAr7MA1.js +0 -1
- modoboa/frontend_dist/assets/ProvidersView-CHvQf3Vv.js +0 -1
- modoboa/frontend_dist/assets/QuarantineLayout-BWEaBK48.js +0 -1
- modoboa/frontend_dist/assets/QuarantineView-BzjeDhTm.js +0 -1
- modoboa/frontend_dist/assets/ReplyEmailView-CwQ9jsce.js +0 -1
- modoboa/frontend_dist/assets/ResourcesForm-noC3AXd9.js +0 -1
- modoboa/frontend_dist/assets/SelfServiceLayout-DQgRMu0L.js +0 -1
- modoboa/frontend_dist/assets/SettingsView-DJTdIeRK.css +0 -1
- modoboa/frontend_dist/assets/SettingsView-Dgwpfd8O.js +0 -6
- modoboa/frontend_dist/assets/StatisticsView-BZkVSh5o.js +0 -1
- modoboa/frontend_dist/assets/TimeSerieChart-BXJwhTMO.js +0 -1
- modoboa/frontend_dist/assets/TimeSerieChart-C3XHmlRd.css +0 -1
- modoboa/frontend_dist/assets/UserLayout-CWK9ICfE.js +0 -1
- modoboa/frontend_dist/assets/VApp-CiIBWB_Q.js +0 -1
- modoboa/frontend_dist/assets/VAutocomplete-DcNqTIie.js +0 -1
- modoboa/frontend_dist/assets/VAutocomplete-hzGuLlUI.css +0 -1
- modoboa/frontend_dist/assets/VAvatar-BsHplcRP.js +0 -1
- modoboa/frontend_dist/assets/VBadge-CavP_E2g.js +0 -1
- modoboa/frontend_dist/assets/VCheckbox-CKW9lz5i.js +0 -1
- modoboa/frontend_dist/assets/VColorPicker-Bsrz8yif.js +0 -1
- modoboa/frontend_dist/assets/VDataTable-ocZo8ju0.js +0 -1
- modoboa/frontend_dist/assets/VDataTableServer-CJfpYXQW.js +0 -1
- modoboa/frontend_dist/assets/VDataTableVirtual-Cr8yw49k.js +0 -1
- modoboa/frontend_dist/assets/VDialog-CUMh3paI.js +0 -1
- modoboa/frontend_dist/assets/VExpansionPanels-CkwHiKsA.js +0 -1
- modoboa/frontend_dist/assets/VFileInput-D5qlksIG.js +0 -1
- modoboa/frontend_dist/assets/VForm-ClJU5x_v.js +0 -1
- modoboa/frontend_dist/assets/VInput-DhzSMFXh.js +0 -1
- modoboa/frontend_dist/assets/VMenu-B53a3gm6.js +0 -1
- modoboa/frontend_dist/assets/VMenu-BEipA1lw.css +0 -1
- modoboa/frontend_dist/assets/VPicker-B928ZVJQ.js +0 -1
- modoboa/frontend_dist/assets/VPicker-ClSXs6kv.css +0 -1
- modoboa/frontend_dist/assets/VProgressCircular-viI3jDXe.js +0 -1
- modoboa/frontend_dist/assets/VRadioGroup-C0bqFrYg.js +0 -1
- modoboa/frontend_dist/assets/VSelect-y0E5_vPn.js +0 -1
- modoboa/frontend_dist/assets/VSheet-DQkh_hsX.js +0 -1
- modoboa/frontend_dist/assets/VSpacer-CBqB9uSt.js +0 -1
- modoboa/frontend_dist/assets/VSwitch-D4xdR9jz.js +0 -1
- modoboa/frontend_dist/assets/VTabs-D2c0KeF2.js +0 -1
- modoboa/frontend_dist/assets/VTabs-NzpINroH.css +0 -1
- modoboa/frontend_dist/assets/VTextField-Cow3HZvI.css +0 -1
- modoboa/frontend_dist/assets/VTextField-DvvH1ciR.js +0 -1
- modoboa/frontend_dist/assets/VTextarea-DHtXtzqP.js +0 -1
- modoboa/frontend_dist/assets/VTextarea-DyGjqrlm.css +0 -1
- modoboa/frontend_dist/assets/VToolbar-CB2GrZpA.css +0 -1
- modoboa/frontend_dist/assets/VToolbar-pvLQtmbU.js +0 -1
- modoboa/frontend_dist/assets/VWindowItem-DErNPSH8.js +0 -1
- modoboa/frontend_dist/assets/WebmailLayout-BzW0LWYp.css +0 -1
- modoboa/frontend_dist/assets/WebmailLayout-D7J-QJ-0.js +0 -1
- modoboa/frontend_dist/assets/filter-BVvMTmPG.js +0 -1
- modoboa/frontend_dist/assets/global.store-Bha4Z76j.js +0 -1
- modoboa/frontend_dist/assets/importExport-EgijWlC1.js +0 -1
- modoboa/frontend_dist/assets/languages-Cge6pECg.js +0 -1
- modoboa/frontend_dist/assets/transports-BUSYxSF4.js +0 -1
- modoboa/frontend_dist/assets/webmail-HVg3ZHC0.js +0 -1
- modoboa/frontend_dist/assets/webmail.store-D-d88s4w.js +0 -1
- {modoboa-2.6.5.data → modoboa-2.7.0.data}/scripts/modoboa-admin.py +0 -0
- {modoboa-2.6.5.dist-info → modoboa-2.7.0.dist-info}/entry_points.txt +0 -0
- {modoboa-2.6.5.dist-info → modoboa-2.7.0.dist-info}/licenses/LICENSE +0 -0
- {modoboa-2.6.5.dist-info → modoboa-2.7.0.dist-info}/top_level.txt +0 -0
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
"""A management command to apply mailbox operations."""
|
|
2
|
-
|
|
3
|
-
import logging
|
|
4
|
-
import os
|
|
5
|
-
import shutil
|
|
6
|
-
|
|
7
|
-
from django.core.management.base import BaseCommand
|
|
8
|
-
|
|
9
|
-
from modoboa.lib.exceptions import InternalError
|
|
10
|
-
from modoboa.lib.sysutils import exec_cmd
|
|
11
|
-
from modoboa.parameters import tools as param_tools
|
|
12
|
-
from ...app_settings import load_admin_settings
|
|
13
|
-
from ...models import MailboxOperation
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
class OperationError(Exception):
|
|
17
|
-
"""Custom exception."""
|
|
18
|
-
|
|
19
|
-
pass
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
class Command(BaseCommand):
|
|
23
|
-
"""Command definition"""
|
|
24
|
-
|
|
25
|
-
help = "Handles rename and delete operations on mailboxes" # NOQA:A003
|
|
26
|
-
|
|
27
|
-
def __init__(self, *args, **kwargs):
|
|
28
|
-
super().__init__(*args, **kwargs)
|
|
29
|
-
self.logger = logging.getLogger("modoboa.admin")
|
|
30
|
-
|
|
31
|
-
def add_arguments(self, parser):
|
|
32
|
-
"""Add extra arguments to command line."""
|
|
33
|
-
parser.add_argument(
|
|
34
|
-
"--pidfile",
|
|
35
|
-
default="/tmp/handle_mailbox_operations.pid",
|
|
36
|
-
help="Path to the file that will contain the PID of this process",
|
|
37
|
-
)
|
|
38
|
-
|
|
39
|
-
def rename_mailbox(self, operation):
|
|
40
|
-
if not os.path.exists(operation.argument):
|
|
41
|
-
return
|
|
42
|
-
new_mail_home = operation.mailbox.mail_home
|
|
43
|
-
dirname = os.path.dirname(new_mail_home)
|
|
44
|
-
if not os.path.exists(dirname):
|
|
45
|
-
try:
|
|
46
|
-
os.makedirs(dirname)
|
|
47
|
-
except OSError as e:
|
|
48
|
-
raise OperationError(str(e)) from None
|
|
49
|
-
code, output = exec_cmd(f"mv {operation.argument} {new_mail_home}")
|
|
50
|
-
if code:
|
|
51
|
-
raise OperationError(output)
|
|
52
|
-
|
|
53
|
-
def delete_mailbox(self, operation):
|
|
54
|
-
"""Try to delete a mailbox tree on filesystem."""
|
|
55
|
-
if not os.path.exists(operation.argument):
|
|
56
|
-
return
|
|
57
|
-
|
|
58
|
-
def onerror(function, path, excinfo):
|
|
59
|
-
"""Handle errors."""
|
|
60
|
-
self.logger.critical(f"delete failed (reason: {excinfo})")
|
|
61
|
-
|
|
62
|
-
shutil.rmtree(operation.argument, False, onerror)
|
|
63
|
-
|
|
64
|
-
def check_pidfile(self, path):
|
|
65
|
-
"""Check if this command is already running
|
|
66
|
-
|
|
67
|
-
:param str path: path to the file containing the PID
|
|
68
|
-
:return: a boolean, True means we can go further
|
|
69
|
-
"""
|
|
70
|
-
if os.path.exists(path):
|
|
71
|
-
with open(path) as fp:
|
|
72
|
-
pid = fp.read().strip()
|
|
73
|
-
code, output = exec_cmd(
|
|
74
|
-
f"grep handle_mailbox_operations /proc/{pid}/cmdline"
|
|
75
|
-
)
|
|
76
|
-
if not code:
|
|
77
|
-
return False
|
|
78
|
-
with open(path, "w") as fp:
|
|
79
|
-
print(os.getpid(), file=fp)
|
|
80
|
-
return True
|
|
81
|
-
|
|
82
|
-
def handle(self, *args, **options):
|
|
83
|
-
"""Command entry point."""
|
|
84
|
-
load_admin_settings()
|
|
85
|
-
if not param_tools.get_global_parameter("handle_mailboxes"):
|
|
86
|
-
return
|
|
87
|
-
if not self.check_pidfile(options["pidfile"]):
|
|
88
|
-
return
|
|
89
|
-
for ope in MailboxOperation.objects.all():
|
|
90
|
-
try:
|
|
91
|
-
f = getattr(self, f"{ope.type}_mailbox")
|
|
92
|
-
except AttributeError:
|
|
93
|
-
continue
|
|
94
|
-
try:
|
|
95
|
-
f(ope)
|
|
96
|
-
except (OperationError, InternalError) as e:
|
|
97
|
-
self.logger.critical(
|
|
98
|
-
"%s failed (reason: %s)", ope, str(e).decode("utf-8")
|
|
99
|
-
)
|
|
100
|
-
else:
|
|
101
|
-
self.logger.info("%s succeed", ope)
|
|
102
|
-
ope.delete()
|
|
103
|
-
os.unlink(options["pidfile"])
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
import datetime
|
|
2
|
-
import logging
|
|
3
|
-
|
|
4
|
-
from django.core.management.base import BaseCommand
|
|
5
|
-
from django.utils import timezone
|
|
6
|
-
|
|
7
|
-
from modoboa.core.models import Log
|
|
8
|
-
from modoboa.maillog.models import Maillog
|
|
9
|
-
from modoboa.parameters import tools as param_tools
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
class Command(BaseCommand):
|
|
13
|
-
"""Command class."""
|
|
14
|
-
|
|
15
|
-
help = "Log table cleanup" # NOQA:A003
|
|
16
|
-
|
|
17
|
-
def add_arguments(self, parser):
|
|
18
|
-
"""Add extra arguments to command line."""
|
|
19
|
-
parser.add_argument(
|
|
20
|
-
"--debug", action="store_true", default=False, help="Activate debug output"
|
|
21
|
-
)
|
|
22
|
-
parser.add_argument(
|
|
23
|
-
"--verbose",
|
|
24
|
-
action="store_true",
|
|
25
|
-
default=False,
|
|
26
|
-
help="Display informational messages",
|
|
27
|
-
)
|
|
28
|
-
|
|
29
|
-
def __vprint(self, msg):
|
|
30
|
-
if not self.verbose:
|
|
31
|
-
return
|
|
32
|
-
print(msg)
|
|
33
|
-
|
|
34
|
-
def handle(self, *args, **options):
|
|
35
|
-
if options["debug"]:
|
|
36
|
-
log = logging.getLogger("django.db.backends")
|
|
37
|
-
log.setLevel(logging.DEBUG)
|
|
38
|
-
log.addHandler(logging.StreamHandler())
|
|
39
|
-
self.verbose = options["verbose"]
|
|
40
|
-
|
|
41
|
-
log_maximum_age = param_tools.get_global_parameter("log_maximum_age")
|
|
42
|
-
self.__vprint(f"Deleting logs older than {log_maximum_age} days...")
|
|
43
|
-
limit = timezone.now() - datetime.timedelta(log_maximum_age)
|
|
44
|
-
Log.objects.filter(date_created__lt=limit).delete()
|
|
45
|
-
message_history_maximum_age = param_tools.get_global_parameter(
|
|
46
|
-
"message_history_maximum_age"
|
|
47
|
-
)
|
|
48
|
-
self.__vprint(
|
|
49
|
-
f"Deleting messages in history older than {message_history_maximum_age} days..."
|
|
50
|
-
)
|
|
51
|
-
limit = timezone.now() - datetime.timedelta(message_history_maximum_age)
|
|
52
|
-
Maillog.objects.filter(date__lt=limit).delete()
|
|
53
|
-
self.__vprint("Done.")
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{u as n,b as c,h as u,i,c as l,o as f}from"./index-BjibLozh.js";import{_}from"./ConnectedLayout-CSXdVJtV.js";import{p as h}from"./parameters-DJdlq9sh.js";import"./theme-DFzlhSh5.js";import"./VContainer-DY9021j4.js";/* empty css */import"./tag-CvrHE14f.js";import"./VApp-CiIBWB_Q.js";import"./layout-5PvsmkGR.js";import"./ssrBoot-ChTB-PYP.js";import"./logos-CMmd0hOG.js";import"./layout.store-DJVcXtxk.js";import"./VAvatar-BsHplcRP.js";import"./VProgressCircular-viI3jDXe.js";import"./VMenu-B53a3gm6.js";import"./global.store-Bha4Z76j.js";import"./VBadge-CavP_E2g.js";import"./VCard-D7AwBs4w.js";import"./VRow-DyK_Mj7R.js";import"./VSheet-DQkh_hsX.js";const q={__name:"AccountLayout",setup(d){const s=n(),{$gettext:e}=c(),r=u([]),m=i(()=>s.authUser),p=i(()=>{const t=[],a={contacts:"mdi-contacts-outline",webmail:"mdi-at"};if(t.push({text:e("Settings"),to:{name:"AccountSettings"},icon:"mdi-cog"}),m.value.mailbox){t.push({text:e("Filters"),to:{name:"AccountFilters"},icon:"mdi-filter"});for(const o of r.value)t.push({icon:a[o.name],text:o.label,to:{name:"AccountParametersEdit",params:{app:o.name}}})}return t});return h.getUserApplications().then(t=>{r.value=t.data}),(t,a)=>(f(),l(_,{color:"grey","menu-items":p.value},null,8,["menu-items"]))}};export{q as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{b as P,n as _,i as b,l as m,o as n,m as p,a as o,F as V,e as v,t as y,f as l,w as u,c as h}from"./index-BjibLozh.js";import{a as E}from"./accounts-BZBqbAmd.js";import{r as c}from"./VForm-ClJU5x_v.js";import{V as w}from"./VTextField-DvvH1ciR.js";import{a as g,V as R}from"./VRow-DyK_Mj7R.js";import{V as S}from"./VSwitch-D4xdR9jz.js";import{V as q}from"./VAlert-Buv8Z5G4.js";import{V as A}from"./VAvatar-BsHplcRP.js";const F={class:"m-label"},N={class:"text-white mr-4"},H={__name:"AccountPasswordSubForm",props:{modelValue:{type:Object,default:null},withPasswordCheck:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},editing:{type:Boolean,default:!1},formErrors:{type:Object,required:!1,default:()=>{}}},setup(s){const{$gettext:t}=P(),k=_(),r=s,e=b(()=>r.modelValue),f=b(()=>!r.disabled&&(!r.editing||e.value.password)),x=i=>i===e.value.new_password||t("Password mismatch");function C(){navigator.clipboard.writeText(e.value.new_password).then(()=>{k.displayNotification({msg:t("Password copied to clipboard")})})}function B(i){i?E.getRandomPassword().then(a=>{e.value.new_password=a.data.password}):(e.value.new_password=null,e.value.password_confirmation=null)}return(i,a)=>(n(),m("div",null,[s.withPasswordCheck?(n(),m(V,{key:0},[v("label",F,y(l(t)("Current password")),1),o(w,{modelValue:e.value.password,"onUpdate:modelValue":a[0]||(a[0]=d=>e.value.password=d),autocomplete:"new-password",variant:"outlined",type:"password",density:"compact","validate-on":"submit",rules:s.disabled?[]:[l(c).required],disabled:s.disabled,"error-messages":r.formErrors?r.formErrors.password:[]},null,8,["modelValue","rules","disabled","error-messages"])],64)):p("",!0),o(R,{justify:"center"},{default:u(()=>[o(g,{cols:"auto"},{default:u(()=>[o(S,{modelValue:e.value.random_password,"onUpdate:modelValue":[a[1]||(a[1]=d=>e.value.random_password=d),B],label:l(t)("Random password"),density:"compact",color:"primary",class:"text-center",disabled:s.disabled},null,8,["modelValue","label","disabled"])]),_:1}),o(g,null,{default:u(()=>[e.value.random_password?(n(),h(q,{key:0,style:{"background-color":"#515d78"},class:"ml-6",density:"compact"},{default:u(()=>[v("span",N,y(e.value.new_password),1),o(A,{size:"small",color:"white",variant:"text",density:"compact",disabled:s.disabled,icon:"mdi-clipboard-multiple-outline",title:l(t)("Copy to clipboard"),onClick:C},null,8,["disabled","title"])]),_:1})):p("",!0)]),_:1})]),_:1}),e.value.random_password?p("",!0):(n(),m(V,{key:1},[o(w,{modelValue:e.value.new_password,"onUpdate:modelValue":a[2]||(a[2]=d=>e.value.new_password=d),variant:"outlined",label:l(t)("Password"),type:"password",autocomplete:"new-password",density:"compact",disabled:s.disabled,rules:f.value?[l(c).required]:[]},null,8,["modelValue","label","disabled","rules"]),o(w,{modelValue:e.value.password_confirmation,"onUpdate:modelValue":a[3]||(a[3]=d=>e.value.password_confirmation=d),variant:"outlined",type:"password",label:l(t)("Confirmation"),density:"compact",disabled:s.disabled,rules:f.value?[l(c).required,x]:[],"error-messages":r.formErrors?r.formErrors.new_password:[]},null,8,["modelValue","label","disabled","rules","error-messages"])],64))]))}};export{H as _};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c as d,o,w as e,a as t,e as b,t as a,l as g,F as p,s as D,k as s,C as w,n as P,b as T,h as x,f,m as v,g as U,_ as G,B as z,j as L}from"./index-BjibLozh.js";import{u as Q}from"./permissions-CgFJFhCp.js";import{a as H}from"./accounts-BZBqbAmd.js";import{p as J}from"./parameters-DJdlq9sh.js";import{c as A,V,a as C}from"./VCard-D7AwBs4w.js";import{V as K}from"./VSelect-y0E5_vPn.js";import{V as W}from"./VDataTable-ocZo8ju0.js";import{V as $,c as F,a as M}from"./VAvatar-BsHplcRP.js";import{V as X}from"./VTextField-DvvH1ciR.js";import{u as Y}from"./language.store-DGuI8jG0.js";import{V as _,a as i}from"./VRow-DyK_Mj7R.js";import{V as Z,a as ee}from"./VToolbar-pvLQtmbU.js";import"./tag-CvrHE14f.js";import"./VInput-DhzSMFXh.js";import"./VProgressCircular-viI3jDXe.js";import"./VMenu-B53a3gm6.js";import"./ssrBoot-ChTB-PYP.js";import"./VCheckboxBtn-B5evxN9K.js";import"./VSelectionControl-Dkms9_P5.js";import"./VTable-D8ZwwC_B.js";import"./filter-BVvMTmPG.js";import"./languages-Cge6pECg.js";/* empty css */const te={class:"headline"},ae={__name:"AccountAliases",props:{account:{type:Object,default:null}},setup(l){return(r,m)=>(o(),d(C,null,{default:e(()=>[t(A,null,{default:e(()=>[b("span",te,a(r.$gettext("Aliases")),1)]),_:1}),t(V,null,{default:e(()=>[(o(!0),g(p,null,D(l.account.aliases,c=>(o(),d(K,{key:c,class:"mr-2 mt-2"},{default:e(()=>[s(a(c),1)]),_:2},1024))),128))]),_:1})]),_:1}))}},N="senderaddresses",B={getAll(){return w.get(`${N}/`)},getAllForMailbox(l){return w.get(`${N}/`,{params:{mailbox:l}})},create(l){return w.post(`${N}/`,l)},delete(l){return w.delete(`${N}/${l}/`)}},le={class:"headline"},ne={key:0},oe={__name:"AccountSenderAddresses",props:{account:{type:Object,default:null}},setup(l){const r=P(),{$gettext:m}=T(),c=l,n=x([]),y=x(!1),u=x(""),j=[{title:m("Address"),key:"address"},{title:"",key:"actions",align:"end",sortable:!1}];function E(){n.value.push({}),y.value=!0}function R(){B.getAllForMailbox(c.account.mailbox.pk).then(h=>{n.value=h.data})}function I(){const h={address:u.value,mailbox:c.account.mailbox.pk};B.create(h).then(()=>{R(),u.value=null,y.value=!1,r.displayNotification({msg:m("Sender address added")})})}function O(h){B.delete(h.pk).then(()=>{R(),r.displayNotification({msg:m("Sender address deleted")})})}return R(),(h,S)=>(o(),d(C,null,{default:e(()=>[t(A,null,{default:e(()=>[b("span",le,a(f(m)("Sender addresses")),1)]),_:1}),t(V,null,{default:e(()=>[t(W,{headers:j,items:n.value,"no-data-text":f(m)("No sender address defined for this account")},{"item.address":e(({item:k})=>[k.pk?(o(),g("span",ne,a(k.address),1)):(o(),d(X,{key:1,modelValue:u.value,"onUpdate:modelValue":S[0]||(S[0]=q=>u.value=q),label:f(m)("Specify an email address")},{append:e(()=>[u.value?(o(),d($,{key:0,icon:"mdi-content-save",color:"primary",variant:"text",onClick:I})):v("",!0)]),_:1},8,["modelValue","label"]))]),"item.actions":e(({item:k})=>[k.pk?(o(),d($,{key:0,icon:"mdi-delete-outline",color:"red",title:f(m)("Remove this address"),variant:"text",onClick:q=>O(k)},null,8,["title","onClick"])):v("",!0)]),bottom:e(()=>[...S[1]||(S[1]=[])]),_:2},1032,["items","no-data-text"]),y.value?v("",!0):(o(),d($,{key:0,size:"small",color:"primary",variant:"outlined",onClick:E},{default:e(()=>[t(F,{size:"small",icon:"mdi-plus"}),s(" "+a(f(m)("Add sender address")),1)]),_:1}))]),_:1})]),_:1}))}},se={class:"headline"},ue={__name:"AccountSummary",props:{account:{type:Object,default:null}},async setup(l){let r,m;const c=Y();return[r,m]=U(()=>c.getLanguages()),await r,m(),(n,y)=>(o(),d(C,null,{default:e(()=>[t(A,null,{default:e(()=>[b("span",se,a(n.$gettext("General information")),1)]),_:1}),t(V,null,{default:e(()=>[t(_,null,{default:e(()=>[t(i,{cols:"6"},{default:e(()=>[s(a(n.$gettext("Creation date")),1)]),_:1}),t(i,{cols:"6"},{default:e(()=>[s(a(n.$date(l.account.date_joined)),1)]),_:1})]),_:1}),t(_,null,{default:e(()=>[t(i,{cols:"6"},{default:e(()=>[s(a(n.$gettext("Last login date")),1)]),_:1}),l.account.last_login?(o(),d(i,{key:0,cols:"6"},{default:e(()=>[s(a(n.$date(l.account.last_login)),1)]),_:1})):(o(),d(i,{key:1,cols:"6"},{default:e(()=>[s(a(n.$gettext("Never logged-in")),1)]),_:1}))]),_:1}),t(_,null,{default:e(()=>[t(i,{cols:"6"},{default:e(()=>[s(a(n.$gettext("Full name")),1)]),_:1}),t(i,{cols:"6"},{default:e(()=>[s(a(l.account.first_name)+" "+a(l.account.last_name),1)]),_:1})]),_:1}),t(_,null,{default:e(()=>[t(i,{cols:"6"},{default:e(()=>[s(a(n.$gettext("Role")),1)]),_:1}),t(i,{cols:"6"},{default:e(()=>[s(a(l.account.role),1)]),_:1})]),_:1}),t(_,null,{default:e(()=>[t(i,{cols:"6"},{default:e(()=>[s(a(n.$gettext("Language")),1)]),_:1}),t(i,{cols:"6"},{default:e(()=>[s(a(f(c).getLanguageLabel(l.account.language)),1)]),_:1})]),_:1}),t(_,null,{default:e(()=>[t(i,{cols:"6"},{default:e(()=>[s(a(n.$gettext("Secondary email")),1)]),_:1}),t(i,{cols:"6"},{default:e(()=>[s(a(l.account.secondary_email),1)]),_:1})]),_:1}),t(_,null,{default:e(()=>[t(i,{cols:"6"},{default:e(()=>[s(a(n.$gettext("Phone number")),1)]),_:1}),t(i,{cols:"6"},{default:e(()=>[s(a(l.account.phone_number),1)]),_:1})]),_:1}),t(_,null,{default:e(()=>[t(i,{cols:"6"},{default:e(()=>[s(a(n.$gettext("Enabled")),1)]),_:1}),t(i,{cols:"6"},{default:e(()=>[t(F,{color:l.account.is_active?"success":"error",icon:l.account.is_active?"mdi-check-circle":"mdi-close-circle",variant:"flat"},null,8,["color","icon"])]),_:1})]),_:1}),l.account.mailbox?(o(),g(p,{key:0},[t(_,null,{default:e(()=>[t(i,{cols:"6"},{default:e(()=>[s(a(n.$gettext("Quota")),1)]),_:1}),l.account.mailbox.quota==="0"?(o(),d(i,{key:0,cols:"6"},{default:e(()=>[s(a(n.$gettext("Unlimited")),1)]),_:1})):(o(),d(i,{key:1,cols:"6"},{default:e(()=>[t(M,{color:l.account.mailbox.quota_usage<80?"primary":"warning","model-value":l.account.mailbox.quota_usage,height:"25",class:"white--text"},{default:e(({value:u})=>[s(a(Math.ceil(u))+"% ("+a(l.account.mailbox.quota)+" "+a(n.$gettext("MB"))+") ",1)]),_:1},8,["color","model-value"])]),_:1}))]),_:1}),l.account.mailbox.message_limit!==null&&l.account.mailbox.message_limit!==void 0?(o(),d(_,{key:0},{default:e(()=>[t(i,{cols:"6"},{default:e(()=>[s(a(n.$gettext("Daily sending limit")),1)]),_:1}),t(i,{cols:"6"},{default:e(()=>[l.account.mailbox.message_limit===0?(o(),g(p,{key:0},[s(a(n.$gettext("Sending forbidden")),1)],64)):(o(),d(M,{key:1,color:l.account.mailbox.sent_messages_in_percent<80?"primary":"warning","model-value":l.account.mailbox.sent_messages_in_percent,height:"25",class:"white--text"},{default:e(({value:u})=>[s(a(Math.ceil(u))+"% ("+a(l.account.mailbox.message_limit)+" "+a(n.$gettext("messages"))+") ",1)]),_:1},8,["color","model-value"]))]),_:1})]),_:1})):v("",!0)],64)):v("",!0)]),_:1})]),_:1}))}},ce={class:"headline"},ie={key:1},de={class:"text-disabled"},re={__name:"DomainAdminDomains",props:{account:{type:Object,default:null}},setup(l){const{$gettext:r}=T();return(m,c)=>(o(),d(C,null,{default:e(()=>[t(A,null,{default:e(()=>[b("span",ce,a(f(r)("Administered domains")),1)]),_:1}),t(V,null,{default:e(()=>[l.account.domains!==void 0&&l.account.domains.length?(o(!0),g(p,{key:0},D(l.account.domains,n=>(o(),d(_,{key:n},{default:e(()=>[t(i,{cols:"12"},{default:e(()=>[s(a(n),1)]),_:2},1024)]),_:2},1024))),128)):(o(),g("div",ie,a(f(r)("No domain managed")),1)),b("div",de,a(f(r)("Add/Remove from the domain page")),1)]),_:1})]),_:1}))}},me={class:"headline"},fe={__name:"ResourcesView",props:{resources:{type:Array,default:null}},setup(l){const{$gettext:r}=T(),m=n=>n.name==="quota"?r("No quota"):r("Creation denied");function c(n){return n<50?"primary":n<80?"warning":"error"}return(n,y)=>(o(),d(C,null,{default:e(()=>[t(A,null,{default:e(()=>[b("span",me,a(f(r)("Resources usage")),1)]),_:1}),t(V,null,{default:e(()=>[(o(!0),g(p,null,D(l.resources,u=>(o(),g("div",{key:u.name,class:"mt-4"},[u.max_value===-1?(o(),g(p,{key:0},[s(a(u.label)+" ("+a(f(r)("Unlimited"))+") ",1)],64)):u.max_value===0?(o(),g(p,{key:1},[s(a(u.label)+" ("+a(m(u))+") ",1)],64)):(o(),g(p,{key:2},[s(a(u.label)+" ("+a(Math.ceil(u.usage))+"%) ",1),t(M,{"model-value":u.usage,color:c(u.usage)},null,8,["model-value","color"])],64))]))),128))]),_:1})]),_:1}))}},_e={__name:"AccountView",setup(l){const r=z(),{canSetRole:m}=Q(),c=x({pk:r.params.id}),n=x({});function y(){H.get(r.params.id).then(u=>{c.value=u.data})}return m.value&&J.getGlobalApplication("limits").then(u=>{n.value=u.data}),y(),(u,j)=>(o(),g(p,null,[t(Z,{flat:""},{default:e(()=>[t(ee,null,{default:e(()=>[s(a(u.$gettext("Account"))+" "+a(c.value.username)+" ",1),t($,{color:"primary",icon:"mdi-circle-edit-outline",to:{name:"AccountEdit",params:{id:c.value.pk}}},null,8,["to"]),t($,{color:"primary",icon:"mdi-reload",onClick:y})]),_:1})]),_:1}),t(_,null,{default:e(()=>[t(i,{cols:"6"},{default:e(()=>[t(ue,{account:c.value},null,8,["account"]),c.value.role===f(L).DOMAIN_ADMIN?(o(),d(re,{key:0,class:"mt-2",account:c.value},null,8,["account"])):v("",!0)]),_:1}),t(i,{cols:"6"},{default:e(()=>[n.value.params&&n.value.params.enable_admin_limits&&c.value.role!==f(L).USER&&c.value.role!==f(L).SUPER_ADMIN?(o(),d(fe,{key:0,resources:c.value.resources},null,8,["resources"])):v("",!0),c.value.aliases?(o(),d(ae,{key:1,class:"mt-2",account:c.value},null,8,["account"])):v("",!0),c.value.mailbox?(o(),d(oe,{key:2,class:"mt-2",account:c.value},null,8,["account"])):v("",!0)]),_:1})]),_:1})],64))}},Fe=G(_e,[["__scopeId","data-v-388d62f6"]]);export{Fe as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{E as ie,h as V,c as A,o as p,w as t,a as e,e as L,t as f,k as x,i as P,l as z,f as m,m as D,F as O,b as H,z as q,p as ee,s as X,B as me,n as ae,aB as ce,v as pe,q as oe}from"./index-BjibLozh.js";import{c as B}from"./contacts-DKmh2q-4.js";import{p as fe}from"./parameters-DJdlq9sh.js";import{c as K,V as Q,b as W,a as J}from"./VCard-D7AwBs4w.js";import{V as ve}from"./VAlert-Buv8Z5G4.js";import{V as G}from"./VSpacer-CBqB9uSt.js";import{V as $}from"./VAvatar-BsHplcRP.js";import{r as Y,V as te}from"./VForm-ClJU5x_v.js";import{V as w}from"./VTextField-DvvH1ciR.js";import{a as _,V as ye}from"./VRow-DyK_Mj7R.js";import{a as ne,V as Ve}from"./VSelect-y0E5_vPn.js";import{V as le}from"./VTextarea-DHtXtzqP.js";import{V as ge}from"./VCheckbox-CKW9lz5i.js";import{_ as be}from"./MenuItems-efx2rqwT.js";import{V as Ce}from"./VDataTable-ocZo8ju0.js";import{V as ke}from"./VMenu-B53a3gm6.js";import{V as _e}from"./VToolbar-pvLQtmbU.js";import{V as Z}from"./VDialog-CUMh3paI.js";import{u as $e}from"./layout.store-DJVcXtxk.js";import"./tag-CvrHE14f.js";import"./VProgressCircular-viI3jDXe.js";/* empty css */import"./VInput-DhzSMFXh.js";import"./VCheckboxBtn-B5evxN9K.js";import"./VSelectionControl-Dkms9_P5.js";import"./VTable-D8ZwwC_B.js";import"./filter-BVvMTmPG.js";import"./ssrBoot-ChTB-PYP.js";const he=ie("contacts",()=>{const y=V(null);function U(i){y.value=i}async function s(){y.value=null}return{currentCategory:y,setCurrentCategory:U,$reset:s}}),xe={class:"headline"},Ue={__name:"AddressBookInfo",props:{addressBookUrl:{type:String,default:null}},emits:["close"],setup(y,{emit:U}){return(s,i)=>(p(),A(J,null,{default:t(()=>[e(K,null,{default:t(()=>[L("span",xe,f(s.$gettext("Address book information")),1)]),_:1}),e(Q,null,{default:t(()=>[L("p",null,f(s.$gettext("To access this address book from the outside (such as Mozilla Thunderbird or your smartphone), use the following URL:")),1),e(ve,{type:"info",class:"my-4",variant:"tonal"},{default:t(()=>[x(f(y.addressBookUrl),1)]),_:1}),L("p",null,f(s.$gettext("The credentials are the same than the ones you use to access Modoboa.")),1)]),_:1}),e(W,null,{default:t(()=>[e(G),e($,{onClick:i[0]||(i[0]=a=>s.$emit("close"))},{default:t(()=>[x(f(s.$gettext("Close")),1)]),_:1})]),_:1})]),_:1}))}},we={__name:"EmailField",props:{modelValue:{type:Object,default:null},errors:{type:Object,default:null},index:{type:Number,required:!0}},emits:["add","delete","update:modelValue"],setup(y,{emit:U}){const s=y,i=U,a=P({get(){return s.modelValue},set(r){i("update:modelValue",r)}}),l=["home","work","other"];return(r,n)=>(p(),z(O,null,[e(_,{cols:"6"},{default:t(()=>[e(w,{modelValue:a.value.address,"onUpdate:modelValue":n[0]||(n[0]=c=>a.value.address=c),label:r.$gettext("Address"),variant:"outlined","prepend-icon":"mdi-email",density:"compact",rules:[m(Y).required]},null,8,["modelValue","label","rules"])]),_:1}),e(_,{cols:"4",class:"pl-4"},{default:t(()=>[e(ne,{modelValue:a.value.type,"onUpdate:modelValue":n[1]||(n[1]=c=>a.value.type=c),items:l,density:"compact",variant:"outlined",rules:[m(Y).required]},null,8,["modelValue","rules"])]),_:1}),e(_,{cols:"2",class:"pl-4"},{default:t(()=>[e($,{icon:"mdi-plus",size:"x-small",flat:"",onClick:n[2]||(n[2]=c=>r.$emit("add"))}),y.index?(p(),A($,{key:0,icon:"mdi-trash-can",color:"red",size:"x-small",flat:"",variant:"text",onClick:n[3]||(n[3]=c=>r.$emit("delete",y.index))})):D("",!0)]),_:1})],64))}},Ae={__name:"PhoneNumberField",props:{errors:{type:Object,default:null},index:{type:Number,required:!0},modelValue:{type:Object,default:null}},emits:["add","delete","update:modelValue"],setup(y,{emit:U}){const s=y,i=U,a=P({get(){return s.modelValue},set(r){i("update:modelValue",r)}}),l=["cell","fax","home","main","pager","work","other"];return(r,n)=>(p(),z(O,null,[e(_,{cols:"6"},{default:t(()=>[e(w,{modelValue:a.value.number,"onUpdate:modelValue":n[0]||(n[0]=c=>a.value.number=c),label:r.$gettext("Phone number"),variant:"outlined","prepend-icon":"mdi-phone",density:"compact"},null,8,["modelValue","label"])]),_:1}),e(_,{cols:"4",class:"pl-4"},{default:t(()=>[e(ne,{modelValue:a.value.type,"onUpdate:modelValue":n[1]||(n[1]=c=>a.value.type=c),items:l,density:"compact",variant:"outlined"},null,8,["modelValue"])]),_:1}),e(_,{cols:"2",class:"pl-4"},{default:t(()=>[e($,{icon:"mdi-plus",size:"x-small",flat:"",onClick:n[2]||(n[2]=c=>r.$emit("add"))}),y.index?(p(),A($,{key:0,icon:"mdi-trash-can",color:"red",size:"x-small",flat:"",variant:"text",onClick:n[3]||(n[3]=c=>r.$emit("delete",y.index))})):D("",!0)]),_:1})],64))}},Fe={class:"headline"},Se={__name:"ContactForm",props:{contact:{type:Object,required:!1}},emits:["close","added","updated"],setup(y,{emit:U}){const s=U,i=y,{$gettext:a}=H(),l=V(v()),r=V(!1),n=V(),c=V({}),d=V(!1),F=P(()=>i.contact?a("Edit contact"):a("New contact")),h=P(()=>i.contact?a("Update"):a("Add"));function v(){return{emails:[{}],phone_numbers:[{}]}}function S(){l.value.emails.push({})}function T(N){l.value.emails.splice(N,1)}function j(){l.value.phone_numbers.push({})}function E(N){l.value.phone_numbers.splice(N,1)}async function I(){var u;const{valid:N}=await n.value.validate();if(!N)return;d.value=!0;const o=JSON.parse(JSON.stringify(l.value));Object.keys(o.phone_numbers[0]).length||o.phone_numbers.splice(0,1);try{let C;i.contact?(C=await B.updateContact(i.contact.pk,o),s("updated",C.data)):(C=await B.createContact(o),s("added",C.data)),s("close")}catch(C){((u=C.response)==null?void 0:u.status)===400&&(c.value=C.response.data)}finally{d.value=!1}}return q(()=>i.contact,N=>{N?(l.value=JSON.parse(JSON.stringify(N)),l.value.phone_numbers.length||(l.value.phone_numbers=[{}])):l.value=v()},{immediate:!0}),(N,o)=>(p(),A(J,null,{default:t(()=>[e(te,{ref_key:"formRef",ref:n,onSubmit:ee(I,["prevent"])},{default:t(()=>[e(K,null,{default:t(()=>[L("span",Fe,f(F.value),1)]),_:1}),e(Q,null,{default:t(()=>[e(ye,{"no-gutters":""},{default:t(()=>[e(_,{cols:"6"},{default:t(()=>[e(w,{modelValue:l.value.first_name,"onUpdate:modelValue":o[0]||(o[0]=u=>l.value.first_name=u),label:m(a)("First name"),variant:"outlined","prepend-icon":"mdi-account",density:"compact","error-messages":c.value.first_name},null,8,["modelValue","label","error-messages"])]),_:1}),e(_,{cols:"6",class:"pl-4"},{default:t(()=>[e(w,{modelValue:l.value.last_name,"onUpdate:modelValue":o[1]||(o[1]=u=>l.value.last_name=u),label:m(a)("Last name"),variant:"outlined",density:"compact","error-messages":c.value.last_name},null,8,["modelValue","label","error-messages"])]),_:1}),e(_,{cols:"12"},{default:t(()=>[e(w,{modelValue:l.value.display_name,"onUpdate:modelValue":o[2]||(o[2]=u=>l.value.display_name=u),label:m(a)("Display name"),variant:"outlined","prepend-icon":"toto",density:"compact","error-messages":c.value.display_name},null,8,["modelValue","label","error-messages"])]),_:1}),e(_,{cols:"6"},{default:t(()=>[e(w,{modelValue:l.value.company,"onUpdate:modelValue":o[3]||(o[3]=u=>l.value.company=u),label:m(a)("Company"),variant:"outlined","prepend-icon":"mdi-office-building",density:"compact"},null,8,["modelValue","label"])]),_:1}),e(_,{cols:"6",class:"pl-4"},{default:t(()=>[e(w,{modelValue:l.value.position,"onUpdate:modelValue":o[4]||(o[4]=u=>l.value.position=u),label:m(a)("Position"),variant:"outlined",density:"compact"},null,8,["modelValue","label"])]),_:1}),(p(!0),z(O,null,X(l.value.emails,(u,C)=>(p(),A(we,{key:`email-${C}`,modelValue:l.value.emails[C],"onUpdate:modelValue":M=>l.value.emails[C]=M,index:C,onAdd:S,onDelete:T},null,8,["modelValue","onUpdate:modelValue","index"]))),128)),(p(!0),z(O,null,X(l.value.phone_numbers,(u,C)=>(p(),A(Ae,{key:`phone-${C}`,modelValue:l.value.phone_numbers[C],"onUpdate:modelValue":M=>l.value.phone_numbers[C]=M,index:C,onAdd:j,onDelete:E},null,8,["modelValue","onUpdate:modelValue","index"]))),128)),r.value?(p(),z(O,{key:0},[e(_,{cols:"6"},{default:t(()=>[e(w,{modelValue:l.value.birth_date,"onUpdate:modelValue":o[5]||(o[5]=u=>l.value.birth_date=u),label:m(a)("Birth date"),type:"date","prepend-icon":"mdi-calendar",variant:"outlined",density:"compact"},null,8,["modelValue","label"])]),_:1}),e(_,{cols:"12"},{default:t(()=>[e(le,{modelValue:l.value.address,"onUpdate:modelValue":o[6]||(o[6]=u=>l.value.address=u),label:m(a)("Address"),"prepend-icon":"mdi-location",variant:"outlined",density:"compact",rows:"2"},null,8,["modelValue","label"])]),_:1}),e(_,{cols:"6"},{default:t(()=>[e(w,{modelValue:l.value.zipcode,"onUpdate:modelValue":o[7]||(o[7]=u=>l.value.zipcode=u),label:m(a)("Zip code"),"prepend-icon":"toto",variant:"outlined",density:"compact"},null,8,["modelValue","label"])]),_:1}),e(_,{cols:"6",class:"pl-4"},{default:t(()=>[e(w,{modelValue:l.value.city,"onUpdate:modelValue":o[8]||(o[8]=u=>l.value.city=u),label:m(a)("City"),variant:"outlined",density:"compact"},null,8,["modelValue","label"])]),_:1}),e(_,{cols:"6"},{default:t(()=>[e(w,{modelValue:l.value.country,"onUpdate:modelValue":o[9]||(o[9]=u=>l.value.country=u),label:m(a)("Country"),"prepend-icon":"toto",variant:"outlined",density:"compact"},null,8,["modelValue","label"])]),_:1}),e(_,{cols:"6",class:"pl-4"},{default:t(()=>[e(w,{modelValue:l.value.state,"onUpdate:modelValue":o[10]||(o[10]=u=>l.value.state=u),label:m(a)("State/Province"),variant:"outlined",density:"compact"},null,8,["modelValue","label"])]),_:1}),e(_,{cols:"12"},{default:t(()=>[e(le,{modelValue:l.value.note,"onUpdate:modelValue":o[11]||(o[11]=u=>l.value.note=u),label:m(a)("Note"),"prepend-icon":"mdi-file",variant:"outlined",density:"compact",rows:"2"},null,8,["modelValue","label"])]),_:1})],64)):D("",!0)]),_:1})]),_:1}),e(W,null,{default:t(()=>[r.value?(p(),A($,{key:1,onClick:o[13]||(o[13]=u=>r.value=!1)},{default:t(()=>[x(f(m(a)("Less")),1)]),_:1})):(p(),A($,{key:0,onClick:o[12]||(o[12]=u=>r.value=!0)},{default:t(()=>[x(f(m(a)("More")),1)]),_:1})),e(G),e($,{loading:d.value,onClick:o[14]||(o[14]=u=>s("close"))},{default:t(()=>[x(f(m(a)("Close")),1)]),_:1},8,["loading"]),e($,{color:"primary",type:"submit",loading:d.value},{default:t(()=>[x(f(h.value),1)]),_:1},8,["loading"])]),_:1})]),_:1},512)]),_:1}))}},Be={class:"headline"},Ne={__name:"ContactCategoriesForm",props:{contact:{type:Object,default:null}},emits:["close"],setup(y,{emit:U}){const s=y,i=U,a=V([]),l=V([]),r=V(!1);function n(){i("close","updated")}async function c(){const d={categories:l.value};r.value=!0;try{await B.updateContact(s.contact.pk,d),i("updated"),n()}finally{r.value=!1}}return q(()=>s.contact,d=>{d?l.value=d.categories:l.value=[]},{immediate:!0}),B.getCategories().then(d=>{a.value=d.data}),(d,F)=>(p(),A(J,null,{default:t(()=>[e(te,{ref:"formRef",onSubmit:ee(c,["prevent"])},{default:t(()=>[e(K,null,{default:t(()=>[L("span",Be,f(d.$gettext("Categories")),1)]),_:1}),e(Q,null,{default:t(()=>[(p(!0),z(O,null,X(a.value,h=>(p(),A(ge,{key:h.pk,modelValue:l.value,"onUpdate:modelValue":F[0]||(F[0]=v=>l.value=v),label:h.name,"hide-details":"",value:h.pk,color:"primary"},null,8,["modelValue","label","value"]))),128))]),_:1}),e(W,null,{default:t(()=>[e(G),e($,{loading:r.value,onClick:n},{default:t(()=>[x(f(d.$gettext("Close")),1)]),_:1},8,["loading"]),e($,{color:"primary",type:"submit",loading:r.value},{default:t(()=>[x(f(d.$gettext("Update")),1)]),_:1},8,["loading"])]),_:1})]),_:1},512)]),_:1}))}},ze={class:"text-right"},Oe={__name:"ContactList",emits:["editCategory"],setup(y,{emit:U}){const s=U,i=me(),{$gettext:a}=H(),{displayNotification:l}=ae(),r=V({}),n=V([]),c=V(""),d=V(null),F=V(!1),h=V(!1),v=V(!1),S=V({}),T=[{key:"display_name",title:a("Display name")},{key:"emails",title:a("E-mail")},{key:"phone_numbers",title:a("Phone")},{key:"actions",title:a("Actions"),align:"end"}],j=[{label:a("Categories"),icon:"mdi-label",onClick:M},{label:a("Edit"),icon:"mdi-circle-edit-outline",onClick:u},{label:a("Delete"),icon:"mdi-delete-outline",onClick:ue,color:"red"}];let E;ce(()=>{E&&clearInterval(E)});function I(){h.value=!1,d.value=null}function N(g){return g.map(k=>k.address).join(", ")}function o(g){return g.map(k=>k.number).join(", ")}function u(g){d.value=g,h.value=!0}function C(){s("editCategory")}function M(g){d.value=g,v.value=!0}function se(){v.value=!1,d.value=null}function ue(g){B.deleteContact(g.pk).then(()=>{R()})}function R(){B.getContacts(i.params).then(g=>{n.value=g.data})}function re(){B.synchronizeToAddressBook().then(()=>{l({msg:a("Synchronization started")})})}return B.getDefaultAddressBook().then(g=>{r.value=g.data}),fe.getUserApplication("contacts").then(g=>{S.value=g.data.params}),R(),q(S,g=>{g&&(E=setInterval(B.synchronizeFromAddressBook,g.sync_frequency*1e3))}),q(()=>i.params.category,()=>{R()}),(g,k)=>(p(),z(O,null,[e(J,{class:"mt-6"},{default:t(()=>[e(Ce,{headers:T,items:n.value},{top:t(()=>[e(_e,{color:"white",flat:""},{default:t(()=>[e(w,{modelValue:c.value,"onUpdate:modelValue":k[0]||(k[0]=b=>c.value=b),"prepend-inner-icon":"mdi-magnify",placeholder:m(a)("Search"),variant:"outlined","single-line":"",flat:"","hide-details":"",density:"compact",class:"flex-grow-0 w-33 mr-4"},null,8,["modelValue","placeholder"]),e($,{color:"primary",variant:"outlined",onClick:k[1]||(k[1]=b=>h.value=!0)},{default:t(()=>[x(f(m(a)("Add")),1)]),_:1}),S.value.enable_carddav_sync?(p(),z(O,{key:0},[e($,{icon:"mdi-information-outline",title:m(a)("Display address book information"),class:"ml-2",onClick:k[2]||(k[2]=b=>F.value=!0)},null,8,["title"]),r.value.last_sync?D("",!0):(p(),A($,{key:0,icon:"mdi-sync",color:"success",title:m(a)("Synchronize contacts with address book"),onClick:re},null,8,["title"]))],64)):D("",!0),g.$route.params.category?(p(),A(Ve,{key:1,class:"my-2 mx-4",label:"",size:"small",color:"green","prepend-icon":"mdi-label",onClick:C},{default:t(()=>[x(f(g.$route.params.category),1)]),_:1})):D("",!0),e(G)]),_:1})]),"item.display_name":t(({item:b})=>[b.display_name?(p(),z(O,{key:0},[x(f(b.display_name),1)],64)):(p(),z(O,{key:1},[x(f(b.first_name)+" "+f(b.last_name),1)],64))]),"item.emails":t(({item:b})=>[x(f(N(b.emails)),1)]),"item.phone_numbers":t(({item:b})=>[x(f(o(b.phone_numbers)),1)]),"item.actions":t(({item:b})=>[L("div",ze,[e(ke,{"offset-y":""},{activator:t(({props:de})=>[e($,pe({icon:"mdi-dots-horizontal",variant:"text"},de),null,16)]),default:t(()=>[e(m(be),{items:j,obj:b},null,8,["obj"])]),_:2},1024)])]),_:2},1032,["items"])]),_:1}),e(Z,{modelValue:h.value,"onUpdate:modelValue":k[3]||(k[3]=b=>h.value=b),persistent:"","max-width":"800px"},{default:t(()=>[e(Se,{contact:d.value,onClose:I,onAdded:R,onUpdated:R},null,8,["contact"])]),_:1},8,["modelValue"]),e(Z,{modelValue:v.value,"onUpdate:modelValue":k[4]||(k[4]=b=>v.value=b),persistent:"","max-width":"800px"},{default:t(()=>[e(Ne,{contact:d.value,onUpdated:R,onClose:se},null,8,["contact"])]),_:1},8,["modelValue"]),e(Z,{modelValue:F.value,"onUpdate:modelValue":k[6]||(k[6]=b=>F.value=b),persistent:"","max-width":"800px"},{default:t(()=>[e(Ue,{"address-book-url":r.value.url,onClose:k[5]||(k[5]=b=>F.value=!1)},null,8,["address-book-url"])]),_:1},8,["modelValue"])],64))}},Ee={class:"headline"},je={__name:"CategoryForm",props:{category:{type:Object,default:null}},emits:["close","updated"],setup(y,{emit:U}){const s=y,i=U,a=oe(),{$gettext:l}=H(),{displayNotification:r}=ae(),n=V({}),c=V(),d=V(!1),F=P(()=>s.category?l("Edit category"):l("Add category")),h=P(()=>s.category?l("Update"):l("Add"));function v(){n.value={},i("close")}async function S(){const{valid:j}=await c.value.validate();if(j){d.value=!0;try{s.category?await B.updateCategory(s.category.pk,n.value):await B.addCategory(n.value),i("updated"),i("close")}catch(E){console.log(E)}finally{d.value=!1}}}function T(){B.deleteCategory(s.category.pk).then(()=>{v(),i("updated"),r({msg:l("Category deleted")}),a.push({name:"ContactList"})})}return q(()=>s.category,j=>{j?n.value=JSON.parse(JSON.stringify(j)):n.value={}},{immediate:!0}),(j,E)=>(p(),A(J,null,{default:t(()=>[e(te,{ref_key:"formRef",ref:c,onSubmit:ee(S,["prevent"])},{default:t(()=>[e(K,null,{default:t(()=>[L("span",Ee,f(F.value),1)]),_:1}),e(Q,null,{default:t(()=>[e(w,{modelValue:n.value.name,"onUpdate:modelValue":E[0]||(E[0]=I=>n.value.name=I),label:m(l)("Name"),variant:"outlined",density:"compact",rules:[m(Y).required]},null,8,["modelValue","label","rules"])]),_:1}),e(W,null,{default:t(()=>[y.category?(p(),A($,{key:0,color:"red",onClick:T},{default:t(()=>[x(f(m(l)("Delete")),1)]),_:1})):D("",!0),e(G),e($,{loading:d.value,onClick:v},{default:t(()=>[x(f(m(l)("Close")),1)]),_:1},8,["loading"]),e($,{color:"primary",type:"submit",loading:d.value},{default:t(()=>[x(f(h.value),1)]),_:1},8,["loading"])]),_:1})]),_:1},512)]),_:1}))}},Le={class:"text-h5 ml-4"},ct={__name:"AddressBook",setup(y){const U=oe(),{$gettext:s}=H(),i=he(),a=$e(),l=V([]),r=V(!1),n=P(()=>{const v=[{icon:"mdi-contacts",text:s("Contacts"),to:{name:"ContactList"}},{text:s("Categories"),subheader:!0}];for(const S of l.value)v.push({icon:"mdi-label",text:S.name,action:()=>F(S)});return v.push({icon:"mdi-plus",text:s("Add a category"),action:c}),v});function c(){r.value=!0}function d(){r.value=!1}function F(v){i.setCurrentCategory(v),U.push({name:"ContactList",params:{category:v.name}})}function h(){B.getCategories().then(v=>{l.value=v.data})}return h(),q(n,v=>{a.setLeftMenuItems(v)}),(v,S)=>(p(),z(O,null,[L("div",Le,f(m(s)("Contacts")),1),e(Oe,{onEditCategory:c}),e(Z,{modelValue:r.value,"onUpdate:modelValue":S[0]||(S[0]=T=>r.value=T),persistent:"","max-width":"800px"},{default:t(()=>[e(je,{category:m(i).currentCategory,onClose:d,onAdded:h,onUpdated:h},null,8,["category"])]),_:1},8,["modelValue"])],64))}};export{ct as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{b as D,u as g,h as l,i as p,j as t,g as c,c as b,o as x}from"./index-BjibLozh.js";import{p as _}from"./parameters-DJdlq9sh.js";import{_ as N}from"./ConnectedLayout-CSXdVJtV.js";import{u as h}from"./parameters.store-DH3pPlaT.js";import{u as f}from"./global.store-Bha4Z76j.js";import"./theme-DFzlhSh5.js";import"./VContainer-DY9021j4.js";/* empty css */import"./tag-CvrHE14f.js";import"./VApp-CiIBWB_Q.js";import"./layout-5PvsmkGR.js";import"./ssrBoot-ChTB-PYP.js";import"./logos-CMmd0hOG.js";import"./layout.store-DJVcXtxk.js";import"./VAvatar-BsHplcRP.js";import"./VProgressCircular-viI3jDXe.js";import"./VMenu-B53a3gm6.js";import"./VBadge-CavP_E2g.js";import"./VCard-D7AwBs4w.js";import"./VRow-DyK_Mj7R.js";import"./VSheet-DQkh_hsX.js";const W={__name:"AdminLayout",async setup(L){let a,e;const{$gettext:i}=D(),A=g(),s=f(),r=h(),n=l(!1),d=l("/rspamd"),u=l([]),M=p(()=>A.authUser),R=p(()=>r.imapMigrationEnabled),S=()=>{window.location=d.value},I=p(()=>{const o=[{text:i("Dashboard"),to:{name:"Dashboard"},exact:!0,icon:"mdi-view-dashboard-outline"},{text:i("Domains"),to:{name:"DomainList"},icon:"mdi-domain",roles:[t.DOMAIN_ADMIN,t.RESELLER,t.SUPER_ADMIN]},{text:i("Identities"),to:{name:"Identities"},icon:"mdi-account",roles:[t.DOMAIN_ADMIN,t.RESELLER,t.SUPER_ADMIN]},{text:i("Alarms"),to:{name:"Alarms"},icon:"mdi-bell"},{icon:"mdi-history",text:i("Monitoring"),roles:[t.SUPER_ADMIN,t.RESELLER,t.DOMAIN_ADMIN],children:[{text:i("Statistics"),to:{name:"Statistics"},roles:[t.SUPER_ADMIN]},{text:i("Audit trail"),to:{name:"AuditTrail"},roles:[t.SUPER_ADMIN]},{text:i("Messages"),to:{name:"MessageLog"},roles:[t.DOMAIN_ADMIN,t.RESELLER,t.SUPER_ADMIN]}]},{icon:"mdi-email-sync-outline",text:i("IMAP Migration"),roles:[t.SUPER_ADMIN,t.RESELLER],condition:()=>R.value,children:[{text:i("Email providers"),to:{name:"ProvidersList"},roles:[t.SUPER_ADMIN,t.RESELLER]},{text:i("Migrations"),to:{name:"MigrationsList"},roles:[t.RESELLER,t.SUPER_ADMIN]}]}],m=[];return u.value.forEach(E=>{m.push({text:E.label,to:{name:"ParametersEdit",params:{app:E.name}}})}),o.concat([{icon:"mdi-cog",text:i("Settings"),children:m,roles:[t.SUPER_ADMIN]},{icon:"mdi-email-check-outline",text:"Rspamd",action:S,roles:[t.SUPER_ADMIN],condition:()=>n.value},{icon:"mdi-information",text:i("Information"),roles:[t.SUPER_ADMIN],to:{name:"Information"},withBell:!0}])});if(M.value.role===t.SUPER_ADMIN){let o=([a,e]=c(()=>_.getGlobalApplications()),a=await a,e(),a);u.value=o.data,[a,e]=c(()=>s.fetchCapabilities()),await a,e(),s.capabilities.imap_migration&&r.imapMigrationEnabled===null&&(o=([a,e]=c(()=>_.getGlobalApplication("imap_migration")),a=await a,e(),a),r.imapMigrationEnabled=o.data.params.enabled_imapmigration),n.value="rspamd"in s.capabilities,n.value&&(d.value=s.capabilities.rspamd.location||"/rspamd")}return(o,m)=>(x(),b(N,{"menu-items":I.value},null,8,["menu-items"]))}};export{W as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{d as G}from"./index-Dwg6jPTX.js";import{C as b,_ as E,b as H,n as J,h as d,B as K,c as A,w as a,a as s,e as Q,f as p,v as D,k as n,t as c,l as w,F as N,j as x,o as f}from"./index-BjibLozh.js";import{_ as M}from"./MenuItems-efx2rqwT.js";import{V as L,a as W}from"./VMenu-B53a3gm6.js";import{V as T,c as X}from"./VAvatar-BsHplcRP.js";import{V as B}from"./VSelect-y0E5_vPn.js";import{V as O,a as Y}from"./VToolbar-pvLQtmbU.js";import{V as Z}from"./VTextField-DvvH1ciR.js";import{V as ee}from"./VDataTableServer-CJfpYXQW.js";import{a as te}from"./VCard-D7AwBs4w.js";import"./tag-CvrHE14f.js";import"./ssrBoot-ChTB-PYP.js";import"./VProgressCircular-viI3jDXe.js";import"./VInput-DhzSMFXh.js";import"./VCheckboxBtn-B5evxN9K.js";import"./VSelectionControl-Dkms9_P5.js";import"./VDataTable-ocZo8ju0.js";import"./VTable-D8ZwwC_B.js";import"./filter-BVvMTmPG.js";const y="alarms",v={getAll(i){return b.get(`${y}/`,{params:i})},switchStatus(i,e){return b.patch(`${y}/${i}/switch/`,e)},delete(i){return b.delete(`${y}/${i}/`)},bulkDelete(i){return b.post(`${y}/bulk_delete/`,{ids:i})}},ae={class:"text-right"},le={__name:"AlarmList",setup(i){const{$gettext:e}=H(),V=K(),_=J(),C=d([]),$=d([{key:"status",order:"desc"}]),k=d(!1),u=d(""),g=d([]),S=d(0),R=[{title:e("Triggered"),key:"created"},{title:e("Status"),key:"status"},{title:e("Domain"),key:"domain.name",sortable:!1},{title:e("Mailbox"),key:"mailbox",sortable:!1},{title:e("Message"),key:"title"},{title:e("Actions"),key:"actions",sortable:!1,align:"right"}],z=[{value:10,title:"10"},{value:25,title:"25"},{value:50,title:"50"},{value:100,title:"100"}];function I(){const o=[];return g.value.length>0&&o.push({label:e("Delete"),icon:"mdi-delete-outline",onClick:U,color:"red"}),o.push({label:e("Reload"),icon:"mdi-reload",onClick:r}),o}function P(o){const l=[];return l.push({label:e("Delete"),icon:"mdi-delete-outline",onClick:j,color:"red"}),o.status===x.ALARM_OPENED?l.push({label:e("Close alarm"),icon:"mdi-check",onClick:F,color:"green"}):l.push({label:e("Reopen alarm"),icon:"mdi-alert-circle-outline",onClick:q,color:"orange"}),l}function r({page:o,itemsPerPage:l,sortBy:t}){const h={page:o||1,page_size:l||10};t&&t.length&&(h.ordering=t.map(m=>m.order!=="asc"?`-${m.key}`:m.key).join(",")),u.value!==""&&(h.search=u.value),k.value=!0,v.getAll(h).then(m=>{C.value=m.data.results,S.value=m.data.count,k.value=!1})}async function j(o,l=!0){v.delete(o.id).then(()=>{l&&(_.displayNotification({msg:e("Alarm deleted")}),r({}))})}async function U(){await v.bulkDelete(g.value),_.displayNotification({msg:e("Alarms deleted")}),g.value=[],r({})}async function F(o){v.switchStatus(o.id,{status:x.ALARM_CLOSED}).then(()=>{_.displayNotification({msg:e("Alarm closed")}),r({})})}async function q(o){v.switchStatus(o.id,{status:x.ALARM_OPENED}).then(()=>{_.displayNotification({msg:e("Alarm re-opened")}),r({})})}return V.query.search&&(u.value=V.query.search),r=G(r,500),(o,l)=>(f(),A(te,{class:"mt-6"},{default:a(()=>[s(ee,{modelValue:g.value,"onUpdate:modelValue":l[1]||(l[1]=t=>g.value=t),"sort-by":$.value,"onUpdate:sortBy":l[2]||(l[2]=t=>$.value=t),headers:R,items:C.value,search:u.value,"item-value":"id","items-length":S.value,"items-per-page-options":z,loading:k.value,elevation:"0","show-select":"","onUpdate:options":r},{top:a(()=>[s(O,{color:"white",flat:""},{default:a(()=>[s(Z,{modelValue:u.value,"onUpdate:modelValue":l[0]||(l[0]=t=>u.value=t),"prepend-inner-icon":"mdi-magnify",placeholder:p(e)("Search"),density:"compact",variant:"outlined","hide-details":"",flat:"","single-line":"",class:"flex-grow-0 w-33 mr-4"},null,8,["modelValue","placeholder"]),s(L,{location:"bottom"},{activator:a(({props:t})=>[s(T,D(t,{size:"small"}),{default:a(()=>[n(c(p(e)("Actions"))+" ",1),s(X,{right:""},{default:a(()=>[...l[3]||(l[3]=[n("mdi-chevron-down",-1)])]),_:1})]),_:1},16)]),default:a(()=>[s(W,{density:"compact"},{default:a(()=>[s(p(M),{items:I()},null,8,["items"])]),_:1})]),_:1})]),_:1})]),"item.status":a(({item:t})=>[t.status===1?(f(),A(B,{key:0,color:"warning",size:"small"},{default:a(()=>[n(c(p(e)("Opened")),1)]),_:1})):(f(),A(B,{key:1,color:"info",size:"small"},{default:a(()=>[n(c(p(e)("Closed")),1)]),_:1}))]),"item.mailbox":a(({item:t})=>[t.mailbox?(f(),w(N,{key:0},[n(c(t.mailbox.address)+"@"+c(t.domain.name),1)],64)):(f(),w(N,{key:1},[n(" / ")],64))]),"item.created":a(({item:t})=>[n(c(o.$date(t.created)),1)]),"item.actions":a(({item:t})=>[Q("div",ae,[s(L,{location:"bottom"},{activator:a(({props:h})=>[s(T,D({icon:"mdi-dots-horizontal"},h,{variant:"text"}),null,16)]),default:a(()=>[s(p(M),{items:P(t),obj:t},null,8,["items","obj"])]),_:2},1024)])]),_:2},1032,["modelValue","sort-by","items","search","items-length","loading"])]),_:1}))}},oe=E(le,[["__scopeId","data-v-4fccec74"]]),se={__name:"AlarmsView",setup(i){return(e,V)=>(f(),w("div",null,[s(O,{flat:""},{default:a(()=>[s(Y,null,{default:a(()=>[n(c(e.$gettext("Opened alarms")),1)]),_:1})]),_:1}),s(oe)]))}},we=E(se,[["__scopeId","data-v-eeff1c15"]]);export{we as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as E}from"./aliases-CFwFkX45.js";import{E as h}from"./EmailField-BFgga4zp.js";import{r as $,V as C}from"./VForm-ClJU5x_v.js";import{d as B}from"./domains-CDE4_LDF.js";import{V as A}from"./VSwitch-D4xdR9jz.js";import{a as D,V as S}from"./VSelect-y0E5_vPn.js";import{V as R}from"./VAvatar-BsHplcRP.js";import{V as U}from"./VTextField-DvvH1ciR.js";import{V as T}from"./VTextarea-DHtXtzqP.js";import{i as _,h as m,c as b,o as d,w as p,m as N,l as x,a as o,e as f,F as g,t as u,f as r,b as j,A as q,s as G,k as M}from"./index-BjibLozh.js";const L={class:"m-label"},O={class:"m-label"},P={class:"m-label"},z={class:"m-label"},le={__name:"AliasGeneralForm",props:{modelValue:{type:Object,default:null}},setup(y,{expose:k}){const n=y,e=_(()=>n.modelValue),s=m([]),c=m();function i(){e.value.address!=null&&navigator.clipboard.writeText(e.value.address)}async function V(){e.value.domain!=null&&E.getRandomAddress().then(t=>{e.value.address=`${t.data.address}@${e.value.domain.name}`})}return B.getDomains().then(t=>{s.value=t.data}),k({vFormRef:c}),(t,a)=>(d(),b(C,{ref_key:"vFormRef",ref:c},{default:p(()=>[e.value.pk?N("",!0):(d(),b(A,{key:0,modelValue:e.value.random,"onUpdate:modelValue":a[0]||(a[0]=l=>e.value.random=l),label:t.$gettext("Random address"),color:"primary"},null,8,["modelValue","label"])),e.value.random?(d(),x(g,{key:2},[f("label",O,u(t.$gettext("Domain")),1),o(D,{modelValue:e.value.domain,"onUpdate:modelValue":[a[2]||(a[2]=l=>e.value.domain=l),V],items:s.value,"item-title":"name","return-object":"",variant:"outlined",density:"compact",rules:[r($).required]},{append:p(()=>[o(R,{variant:"flat",icon:"mdi-reload",onClick:V})]),_:1},8,["modelValue","items","rules"]),o(U,{modelValue:e.value.address,"onUpdate:modelValue":a[3]||(a[3]=l=>e.value.address=l),label:t.$gettext("Generated address"),variant:"outlined",readonly:""},{"append-inner":p(()=>[o(R,{variant:"flat",icon:"mdi-clipboard-outline",onClick:i})]),_:1},8,["modelValue","label"])],64)):(d(),x(g,{key:1},[f("label",L,u(t.$gettext("Email address")),1),o(r(h),{ref:"address",modelValue:e.value.address,"onUpdate:modelValue":a[1]||(a[1]=l=>e.value.address=l),type:"email",variant:"outlined",density:"compact",rules:[r($).required]},null,8,["modelValue","rules"])],64)),o(A,{modelValue:e.value.enabled,"onUpdate:modelValue":a[4]||(a[4]=l=>e.value.enabled=l),label:t.$gettext("Enabled"),color:"primary"},null,8,["modelValue","label"]),f("label",P,u(t.$gettext("Expire at")),1),o(U,{modelValue:e.value.expire,"onUpdate:modelValue":a[5]||(a[5]=l=>e.value.expire=l),variant:"outlined",density:"compact"},null,8,["modelValue"]),f("label",z,u(t.$gettext("Description")),1),o(T,{modelValue:e.value.description,"onUpdate:modelValue":a[6]||(a[6]=l=>e.value.description=l),rows:"2",variant:"outlined",density:"compact"},null,8,["modelValue"])]),_:1},512))}},te={__name:"AliasRecipientForm",props:{modelValue:{type:Array,default:()=>[]},modelModifiers:{}},emits:["update:modelValue"],setup(y,{expose:k}){const{$gettext:n}=j(),e=q(y,"modelValue"),s=m(""),c=m(),i=m();async function V(){e.value.push(s.value),s.value="",i.value.resetValidation()}function t(l){e.value.splice(l,1)}const a=[()=>e.value.length>0||n("Please add at least one recipient.")];return k({vFormRef:i}),(l,F)=>(d(),b(C,{ref_key:"vFormRef",ref:i},{default:p(()=>[o(r(h),{ref_key:"recipientField",ref:c,modelValue:s.value,"onUpdate:modelValue":F[0]||(F[0]=v=>s.value=v),placeholder:r(n)("Start typing a name here..."),hint:r(n)("Alias(es) of this mailbox. To create a catchall alias, just enter the domain name (@domain.tld)."),"persistent-hint":"","allow-add":"",rules:a,onDomainSelected:V},null,8,["modelValue","placeholder","hint"]),(d(!0),x(g,null,G(e.value,(v,w)=>(d(),b(S,{key:v,class:"mr-2 mt-2",closable:"","onClick:close":H=>t(w)},{default:p(()=>[M(u(v),1)]),_:2},1032,["onClick:close"]))),128))]),_:1},512))}};export{te as _,le as a};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{b as A,h as i,c as y,o as f,w as r,a as o,k as g,t as _,f as C,_ as L,l as b,F as I}from"./index-BjibLozh.js";import{l as N}from"./logs-D2GOydPZ.js";import{d as R}from"./index-Dwg6jPTX.js";import{V as F}from"./VDataTableServer-CJfpYXQW.js";import{V as D}from"./VSelect-y0E5_vPn.js";import{V as h,a as O}from"./VToolbar-pvLQtmbU.js";import{V as S}from"./VTextField-DvvH1ciR.js";import{a as $}from"./VCard-D7AwBs4w.js";import"./VDataTable-ocZo8ju0.js";import"./VAvatar-BsHplcRP.js";import"./tag-CvrHE14f.js";import"./VProgressCircular-viI3jDXe.js";import"./VCheckboxBtn-B5evxN9K.js";import"./VSelectionControl-Dkms9_P5.js";import"./VInput-DhzSMFXh.js";import"./VTable-D8ZwwC_B.js";import"./filter-BVvMTmPG.js";import"./VMenu-B53a3gm6.js";import"./ssrBoot-ChTB-PYP.js";const z={__name:"AuditTrailList",setup(v){const{$gettext:t}=A(),s=i(!1),u=i([]),n=i(""),c=i(0),V=[{title:t("Date"),key:"date_created"},{title:t("Level"),key:"level"},{title:t("Logger"),key:"logger"},{title:t("Message"),key:"message"}],x=[{value:10,title:"10"},{value:25,title:"25"},{value:50,title:"50"},{value:100,title:"100"}];function T(a){return a==="INFO"?"primary":a==="WARNING"?"orange":a==="CRITICAL"||a==="ERROR"?"red":""}function m({page:a,itemsPerPage:l,sortBy:e,search:k}){let p;e.length&&(p=(e[0].order==="desc"?"-":"")+e[0].key);const w={ordering:p,page:a,page_size:l,search:k};s.value=!0,N.getAuditTrail(w).then(d=>{u.value=d.data.results,c.value=d.data.count,s.value=!1})}return m=R(m,500),(a,l)=>(f(),y($,{class:"mt-6"},{default:r(()=>[o(F,{headers:V,items:u.value,search:n.value,class:"elevation-0","items-length":c.value,"items-per-page-options":x,"onUpdate:options":m},{top:r(()=>[o(h,{flat:"",color:"white"},{default:r(()=>[o(S,{modelValue:n.value,"onUpdate:modelValue":l[0]||(l[0]=e=>n.value=e),"prepend-inner-icon":"mdi-magnify",placeholder:C(t)("Search"),variant:"outlined","hide-details":"",density:"compact",class:"flex-grow-0 w-33"},null,8,["modelValue","placeholder"])]),_:1})]),"item.level":r(({item:e})=>[o(D,{color:T(e.level),"text-color":"white",size:"small"},{default:r(()=>[g(_(e.level),1)]),_:2},1032,["color"])]),_:2},1032,["items","search","items-length"])]),_:1}))}},E={__name:"AuditTrailView",setup(v){return(t,s)=>(f(),b(I,null,[o(h,{flat:""},{default:r(()=>[o(O,null,{default:r(()=>[g(_(t.$gettext("Audit trail")),1)]),_:1})]),_:1}),o(z)],64))}},oe=L(E,[["__scopeId","data-v-5d9f29af"]]);export{oe as default};
|