a143325bbe
Sharing-Fix: Calendar-Model hatte keine owner-Relation zu User - list_calendars stuerzte beim Listen geteilter Kalender ab (c.owner.username -> AttributeError). Jetzt mit explizitem foreign_keys Relationship. Benutzer-Autocomplete: "Kalender teilen" nutzt jetzt /users/search wie bei Dateien. Tippt man 2+ Zeichen, erscheint ein Dropdown mit passenden Benutzernamen. Klick uebernimmt den Namen. Bestehende Freigaben werden im Menue angezeigt mit Muelleimer zum Entfernen. Privat-Flag fuer Termine: CalendarEvent bekommt is_private-Spalte. Checkbox im Termin- Dialog "🔒 Privat (Teilnehmer sehen nur den Zeitblock)". Redaction greift an drei Stellen: * GET /events: Nicht-Owner sehen summary="Privat", description und location = null. Zeitfenster bleibt voll sichtbar. * iCal-Export (/ical/<token>): Privat-Events werden mit CLASS:PRIVATE ausgegeben und SUMMARY/DESCRIPTION/LOCATION werden gestrippt. * CalDAV: aktuell werden eh nur eigene Kalender exportiert, also keine Redaction noetig. Kommt bei Share-Support rein. Der Eigentuemer sieht natuerlich in seiner eigenen Ansicht alle Details seines privaten Termins. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>