Gladys 4 - Service CalDAV

Bonjour tout le monde,

Sur demande de Pierre-Gilles et pour ne pas avoir de confusion avec le module CalDAV de l’ancienne version de Gladys un nouveau sujet est lancé.

Pour les nouveaux, ce service vous permet de synchroniser le calendrier de votre instance Gladys avec un service d’agenda compatible CalDAV (Google Calendar, iCloud, Nextcloud…).

Vous trouverez dans la documentation Gladys de l’aide pour configurer ce service :

Pour info, à l’heure où j’écris ce message, 3 sujets sont en cours :

Sur mon téléphone j’utilise l’application DAVx5 pour la synchronisation contact/calendrier que j’affiche avec le calendrier Etar (Qui est une alternative au calendrier Android de base).

Et effectivement sur mon téléphone portable je ne synchronise pas tout les calendrier de mon instance nextcloud. L’application DAVx5 propose le choix des calendriers à synchroniser, c’est le “use case” qui m’est venu à l’idée. Car je ne veux pas forcément que Gladys contrôle mon agenda, mais plutôt que Gladys affiche sur un jolie tableau de bord mes prochains rendez-vous ou l’utiliser dans des scénarios pour déclancher des évènements.

Salut tout le monde, pour info je viens de proposer une PR pour la sélection des calendriers à synchroniser.

Ça sera dans un nouvel onglet dans la page de configuration du service

1 Like

Salut @bertrandda ! Génial, ça rend super :slight_smile:

Autre sujet vis à vis du service Caldav. On en parlait ici => Point stabilité, mise à jour des dépendance & qualité de code, ça serait cool qu’on retire la dépendance « moment » utilisée dans le front du service Caldav, dépendance qui est deprecated et assez lourde.

C’est un sujet indépendant de cette PR biensur, mais il faudrait s’y pencher à un moment :slight_smile:

10/10 pour le jeu de mot :stuck_out_tongue_winking_eye:

2 Likes

j’avais même pas vu aha ^^

Oui j’ai vu, je vais étudier une solution mais comme le disait Vincent à l’époque j’avais laissé moment parce que la lib react-big-calendar n’était pas compatible dayjs.

Bonjour, j’essaie de connecter mon calendrier iCloud, mais j’obtiens l’erreur suivante :

{ 
    "status": 409,
    "code": "CONFLICT",
    "error": {
        "message": "selector must be unique",
        "attribute": "selector",
        "value": "films-series-",
        "type": "unique violation"
    }
}

à cause de :

2021-05-17T09:41:06+0200 <info> calendar.syncUserCalendars.js:38 (CalDAVHandler.syncUserCalendars) CalDAV : Found 10 calendars.
2021-05-17T09:41:06+0200 <error> index.js:48 (Timeout.syncAllUsers [as _onTimeout]) UniqueConstraintError [SequelizeUniqueConstraintError]: Validation error
    at Query.formatError (/src/server/node_modules/sequelize/lib/dialects/sqlite/query.js:409:16)
    at Query._handleQueryResponse (/src/server/node_modules/sequelize/lib/dialects/sqlite/query.js:72:18)
    at Statement.afterExecute (/src/server/node_modules/sequelize/lib/dialects/sqlite/query.js:246:27) {
  errors: [
    ValidationErrorItem {
      message: 'selector must be unique',
      type: 'unique violation',
      path: 'selector',
      value: 'films-series-',
      origin: 'DB',
      instance: [t_calendar],
      validatorKey: 'not_unique',
      validatorName: null,
      validatorArgs: []
    }
  ],
  fields: [ 'selector' ],
  parent: [Error: SQLITE_CONSTRAINT: UNIQUE constraint failed: t_calendar.selector] {
    errno: 19,
    code: 'SQLITE_CONSTRAINT',
    sql: 'INSERT INTO `t_calendar` (`id`,`user_id`,`service_id`,`name`,`selector`,`external_id`,`description`,`sync`,`notify`,`ctag`,`sync_token`,`color`,`created_at`,`updated_at`) VALUES ($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14);'
  },
  original: [Error: SQLITE_CONSTRAINT: UNIQUE constraint failed: t_calendar.selector] {
    errno: 19,
    code: 'SQLITE_CONSTRAINT',
    sql: 'INSERT INTO `t_calendar` (`id`,`user_id`,`service_id`,`name`,`selector`,`external_id`,`description`,`sync`,`notify`,`ctag`,`sync_token`,`color`,`created_at`,`updated_at`) VALUES ($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14);'
  },
  sql: 'INSERT INTO `t_calendar` (`id`,`user_id`,`service_id`,`name`,`selector`,`external_id`,`description`,`sync`,`notify`,`ctag`,`sync_token`,`color`,`created_at`,`updated_at`) VALUES ($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14);'
}

Bonjour @Thomas_Parquier, il semblerait que tu aies plusieurs calendriers avec le même nom. Je vais voir comment régler ça en modifiant la génération du slug calendrier. En attendant peux-tu essayer en renommant sur iCloud l’un des deux calendriers qui commence par “Films séries” ?

en effet, c’est ce que j’ai dit aux modérateurs sur un autre canal…

le calendrier qui pose problème vient de Rappels… j’ai plusieurs listes de rappels qui portaient le même slug…

J’ai renommé les listes, mais sans effet. Mais ça peut être un problème de cache (car j’ai aussi supprimé une liste, et pourtant celle-ci est tjs retournée par l’api iCloud).