Better handling of negative datetime timezone offsets.

Fix an issue with Autoreply message definition and also a bug
in the frontend form.
This commit is contained in:
Antoine Nguyen
2025-12-02 13:26:28 +01:00
parent d6d3db2932
commit 4df61e05a3
4 changed files with 57 additions and 53 deletions
+2 -1
View File
@@ -1,6 +1,6 @@
services:
redis:
image: redis:7-alpine
image: redis:8-alpine
ports:
- 6379:6379
command: redis-server --save 60 1 --loglevel warning
@@ -68,6 +68,7 @@ services:
python3 manage.py runserver_plus 0.0.0.0:8000 --cert-file cert.crt"
depends_on:
- radicale
- redis
volumes:
- .:/code
networks:
@@ -104,10 +104,11 @@ async function submit() {
accountApi.getARMessage().then((resp) => {
form.value = resp.data
if (form.value.fromdate) {
form.value.fromdate = form.value.fromdate.slice(0, -4)
form.value.fromdate = form.value.fromdate.slice(0, -6)
console.log(form.value.fromdate)
}
if (form.value.untildate) {
form.value.untildate = form.value.untildate.slice(0, -4)
form.value.untildate = form.value.untildate.slice(0, -6)
}
})
</script>
+48 -46
View File
@@ -1,50 +1,52 @@
<template>
<v-toolbar flat>
<v-toolbar-title>{{ $gettext('Account settings') }}</v-toolbar-title>
</v-toolbar>
<div class="pa-4">
<v-tabs v-model="tab" color="primary" class="mb-4">
<v-tab value="profile">
{{ $gettext('Profile') }}
</v-tab>
<v-tab value="security">
{{ $gettext('Two-factor auth') }}
</v-tab>
<v-tab v-if="authStore.userHasMailbox" value="forward">
{{ $gettext('Forward') }}
</v-tab>
<v-tab v-if="authStore.userHasMailbox" value="autoreply">
{{ $gettext('Auto-reply message') }}
</v-tab>
<v-tab
v-if="authStore.authUser.role === constants.SUPER_ADMIN"
value="api"
>
{{ $gettext('API access') }}
</v-tab>
</v-tabs>
<v-tabs-window v-model="tab">
<v-tabs-window-item value="profile">
<ProfileForm />
</v-tabs-window-item>
<v-tabs-window-item value="security">
<TotpAuthForm />
<FidoAuthForm />
<BackupCodeAuthForm />
</v-tabs-window-item>
<v-tabs-window-item v-if="authStore.userHasMailbox" value="forward">
<ForwardForm />
</v-tabs-window-item>
<v-tabs-window-item v-if="authStore.userHasMailbox" value="autoreply">
<AutoReplyForm />
</v-tabs-window-item>
<v-tabs-window-item
v-if="authStore.authUser.role === constants.SUPER_ADMIN"
value="api"
>
<APISetupForm />
</v-tabs-window-item>
</v-tabs-window>
<div>
<v-toolbar flat>
<v-toolbar-title>{{ $gettext('Account settings') }}</v-toolbar-title>
</v-toolbar>
<div class="pa-4">
<v-tabs v-model="tab" color="primary" class="mb-4">
<v-tab value="profile">
{{ $gettext('Profile') }}
</v-tab>
<v-tab value="security">
{{ $gettext('Two-factor auth') }}
</v-tab>
<v-tab v-if="authStore.userHasMailbox" value="forward">
{{ $gettext('Forward') }}
</v-tab>
<v-tab v-if="authStore.userHasMailbox" value="autoreply">
{{ $gettext('Auto-reply message') }}
</v-tab>
<v-tab
v-if="authStore.authUser.role === constants.SUPER_ADMIN"
value="api"
>
{{ $gettext('API access') }}
</v-tab>
</v-tabs>
<v-tabs-window v-model="tab">
<v-tabs-window-item value="profile">
<ProfileForm />
</v-tabs-window-item>
<v-tabs-window-item value="security">
<TotpAuthForm />
<FidoAuthForm />
<BackupCodeAuthForm />
</v-tabs-window-item>
<v-tabs-window-item v-if="authStore.userHasMailbox" value="forward">
<ForwardForm />
</v-tabs-window-item>
<v-tabs-window-item v-if="authStore.userHasMailbox" value="autoreply">
<AutoReplyForm />
</v-tabs-window-item>
<v-tabs-window-item
v-if="authStore.authUser.role === constants.SUPER_ADMIN"
value="api"
>
<APISetupForm />
</v-tabs-window-item>
</v-tabs-window>
</div>
</div>
</template>
+4 -4
View File
@@ -38,9 +38,9 @@ class ARmessage(models.Model):
days = request.localconfig.parameters.get_value("tracking_period")
context["fromdate"] = localize(self.fromdate)
fromdate = self.fromdate.isoformat()
fromdate, tz = fromdate.split("+")
tz = f"+{tz.replace(':', '')}"
condition = [("currentdate", ":zone", tz, ":value", "ge", "iso8601", fromdate)]
datepart = fromdate[:-6]
tz = fromdate[-6:].replace(":", "")
condition = [("currentdate", ":zone", tz, ":value", "ge", "iso8601", datepart)]
if self.untildate:
context["untildate"] = localize(self.untildate)
condition.append(
@@ -51,7 +51,7 @@ class ARmessage(models.Model):
":value",
"lt",
"iso8601",
self.untildate.isoformat().split("+")[0],
self.untildate.isoformat()[:-6],
)
)
content = self.content % context