From 4f8dbeffbb00c10d883c7be43c9da8bac18583b0 Mon Sep 17 00:00:00 2001 From: Sylvain Zimmer Date: Thu, 19 Feb 2026 20:44:49 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B(calendars)=20add=20default=20calen?= =?UTF-8?q?dar=20color?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/backend/calendars/settings.py | 5 +++++ src/backend/core/api/serializers.py | 2 +- src/backend/core/api/viewsets.py | 2 +- src/backend/core/services/caldav_service.py | 19 ++++++++++++++----- .../src/features/i18n/translations.json | 3 +++ 5 files changed, 24 insertions(+), 7 deletions(-) diff --git a/src/backend/calendars/settings.py b/src/backend/calendars/settings.py index 09e237b..d0f8010 100755 --- a/src/backend/calendars/settings.py +++ b/src/backend/calendars/settings.py @@ -127,6 +127,11 @@ class Base(Configuration): environ_name="TRANSLATIONS_JSON_PATH", environ_prefix=None, ) + DEFAULT_CALENDAR_COLOR = values.Value( + "#3788d8", + environ_name="DEFAULT_CALENDAR_COLOR", + environ_prefix=None, + ) # Security ALLOWED_HOSTS = values.ListValue([]) diff --git a/src/backend/core/api/serializers.py b/src/backend/core/api/serializers.py index 05cdc1e..0441a3b 100644 --- a/src/backend/core/api/serializers.py +++ b/src/backend/core/api/serializers.py @@ -118,7 +118,7 @@ class CalendarCreateSerializer(serializers.Serializer): # pylint: disable=abstr """Serializer for creating a Calendar (CalDAV only, no Django model).""" name = serializers.CharField(max_length=255) - color = serializers.CharField(max_length=7, required=False, default="#3174ad") + color = serializers.CharField(max_length=7, required=False, default="") description = serializers.CharField(required=False, default="") diff --git a/src/backend/core/api/viewsets.py b/src/backend/core/api/viewsets.py index 1c6b6e5..dd23790 100644 --- a/src/backend/core/api/viewsets.py +++ b/src/backend/core/api/viewsets.py @@ -287,7 +287,7 @@ class CalendarViewSet(viewsets.GenericViewSet): caldav_path = service.create_calendar( user=request.user, name=serializer.validated_data["name"], - color=serializer.validated_data.get("color", "#3174ad"), + color=serializer.validated_data.get("color", ""), ) return drf_response.Response( diff --git a/src/backend/core/services/caldav_service.py b/src/backend/core/services/caldav_service.py index 8a4c3bb..7c1d6b2 100644 --- a/src/backend/core/services/caldav_service.py +++ b/src/backend/core/services/caldav_service.py @@ -207,7 +207,7 @@ class CalDAVClient: ) name = props.get(DisplayName.tag, "Calendar") - color = props.get(CalendarColor.tag, "#3174ad") + color = props.get(CalendarColor.tag, settings.DEFAULT_CALENDAR_COLOR) description = props.get(CalendarDescription.tag, "") # Clean up color (CalDAV may return with alpha channel like #RRGGBBAA) @@ -517,16 +517,25 @@ class CalendarService: def create_default_calendar(self, user) -> str: """Create a default calendar for a user. Returns the caldav_path.""" + from core.services.translation_service import TranslationService # noqa: PLC0415 + calendar_id = str(uuid4()) - calendar_name = "Mon calendrier" - return self.caldav.create_calendar(user, calendar_name, calendar_id) + lang = TranslationService.resolve_language(email=user.email) + calendar_name = TranslationService.t( + "calendar.list.defaultCalendarName", lang + ) + return self.caldav.create_calendar( + user, calendar_name, calendar_id, color=settings.DEFAULT_CALENDAR_COLOR + ) def create_calendar( - self, user, name: str, color: str = "#3174ad" + self, user, name: str, color: str = "" ) -> str: """Create a new calendar for a user. Returns the caldav_path.""" calendar_id = str(uuid4()) - return self.caldav.create_calendar(user, name, calendar_id, color=color) + return self.caldav.create_calendar( + user, name, calendar_id, color=color or settings.DEFAULT_CALENDAR_COLOR + ) def get_events(self, user, caldav_path: str, start=None, end=None) -> list: """Get events from a calendar. Returns parsed event data.""" diff --git a/src/frontend/apps/calendars/src/features/i18n/translations.json b/src/frontend/apps/calendars/src/features/i18n/translations.json index 4737336..e75e6d8 100644 --- a/src/frontend/apps/calendars/src/features/i18n/translations.json +++ b/src/frontend/apps/calendars/src/features/i18n/translations.json @@ -181,6 +181,7 @@ } }, "list": { + "defaultCalendarName": "My calendar", "myCalendars": "My calendars", "sharedCalendars": "Shared calendars", "shared": "(shared)", @@ -914,6 +915,7 @@ } }, "list": { + "defaultCalendarName": "Mon calendrier", "myCalendars": "Mes calendriers", "sharedCalendars": "Calendriers partagés", "shared": "(partagé)", @@ -1394,6 +1396,7 @@ } }, "list": { + "defaultCalendarName": "Mijn kalender", "myCalendars": "Mijn kalenders", "sharedCalendars": "Gedeelde kalenders", "shared": "(gedeeld)",