🐛(calendars) add default calendar color

This commit is contained in:
Sylvain Zimmer
2026-02-19 20:44:49 +01:00
parent 81954a4ead
commit 4f8dbeffbb
5 changed files with 24 additions and 7 deletions

View File

@@ -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([])

View File

@@ -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="")

View File

@@ -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(

View File

@@ -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."""

View File

@@ -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)",