Development #29209
matérialiser les sources d'exceptions
0%
Description
On a pas mal de tickets sur les exceptions, sur la gestion des récurrences, les soucis d'interaction entre fichier uploaded, fichiers remote, utilisé UID ou pas, etc..
Pas mal de ces problèmes me sembleraient plus simple si à chaque source (fichier uploadé ou URL) on associé un modèle, visible, modifiable et que chaque exception soit lié à un des ces modèles, chaque groupe d'exception venant de chacun de ces sources seraient ainsi bien compartimenté et gérable (on supprime une source, les exceptions associés disparaissent, on la modifie, toutes les exceptions associées sont mises à jour et seulement celles-ci).
Fichiers
Demandes liées
Révisions associées
agendas: delete an exception source (#29209)
agendas: refresh an exception source (#29209)
Historique
Mis à jour par Benjamin Dauvergne il y a plus de 5 ans
- Lié à Bug #27263: crash sur import d'un ics ajouté
Mis à jour par Benjamin Dauvergne il y a plus de 5 ans
- Lié à Development #19825: import ics: synchroniser les evenements issus d'un fichier uploadé ajouté
Mis à jour par Benjamin Dauvergne il y a plus de 5 ans
- Lié à Bug #25962: mettre à jour/créer les exceptions en fonction des dates et non du sommaire de l'evenement ajouté
Mis à jour par Frédéric Péters il y a plus de 4 ans
- Lié à Development #36167: Lever la limite de 600 jours lors de l'import des exceptions ajouté
Mis à jour par Frédéric Péters il y a plus de 4 ans
Pour préciser le côté pratique/UI de la chose, ça pourrait être étendre la popup de chargement des exceptions, commencer par une liste des sources d'exception existantes et ensuite avoir la définition d'une nouvelle source
Exceptions (titre) * https://.../blah.ics [rafraichir] [supprimer] * FrenchHolidays.ics [remplacer] [supprimer] Pour ajouter de nouvelles exceptions en masse, vous pouvez télécharger un fichier ou spécifier l'adresse d'un calendrier distant. * Fichier ICS: [..............] * URL: [......................] [Annuler] [Importer]
Mis à jour par Lauréline Guérin il y a plus de 4 ans
- Fichier 0001-misc-fix-flake8-errors-29209.patch 0001-misc-fix-flake8-errors-29209.patch ajouté
- Fichier 0002-agendas-add-exception-source-model-29209.patch 0002-agendas-add-exception-source-model-29209.patch ajouté
- Fichier 0004-agendas-refresh-an-exception-source-29209.patch 0004-agendas-refresh-an-exception-source-29209.patch ajouté
- Fichier 0003-agendas-delete-an-exception-source-29209.patch 0003-agendas-delete-an-exception-source-29209.patch ajouté
- Statut changé de Nouveau à Solution proposée
- Patch proposed changé de Non à Oui
J'ai fait un premier commit de nettoyage flake8 sur quelques modules que j'avais à modifier, histoire de voir où je mettais les pieds :)
Mis à jour par Benjamin Dauvergne il y a plus de 4 ans
Si tu supprimes toutes les exceptions à chaque chargement, tu peux complètement virer la partie keep_synced_by_uid
elle
servait justement à gérer le rafraîchissement en l'absence d'objet « source », c'est donc devenu inutile.
Purement pour la forme: pour la vue de rafraîchissement c'est toujours plus joli et plus respectueux de la séparation vue/formulaire de mettre toute la validation dans Form.clean() plutôt que d'en déplacer des bouts dans form_valid() (ça oblige à des form.add_error(None, ...)
un peu moche).
Mis à jour par Frédéric Péters il y a plus de 4 ans
À propos de 0001, je me dis qu'on a décidé black pour chrono (#37464), que même sans l'infra pour vérifier côté jenkins que ça colle, on pourrait déjà faire la passe sur le code . (dans le commit de la branche de #37464, j'ai mis black --target-version py35 --skip-string-normalization --line-length 110, ça peut s'y discuter).
Mis à jour par Lauréline Guérin il y a plus de 4 ans
- Fichier 0004-agendas-refresh-an-exception-source-29209.patch 0004-agendas-refresh-an-exception-source-29209.patch ajouté
- Fichier 0003-agendas-delete-an-exception-source-29209.patch 0003-agendas-delete-an-exception-source-29209.patch ajouté
- Fichier 0002-agendas-add-exception-source-model-29209.patch 0002-agendas-add-exception-source-model-29209.patch ajouté
- Fichier 0001-misc-black-29209.patch 0001-misc-black-29209.patch ajouté
Dans 0001 j'ai passé un coup de black, avec les options du commit de #37464
Dans 0002 j'ai supprimé la notion de keep_synced_by_uid et le champ external_id du model TimePeriodException qui du coup ne servait plus à rien.
J'ai déplacé un check dans la méthode clean du form ExceptionsImportForm, mais j'ai laissé la gestion des ICSError dans les vues.
Mis à jour par Frédéric Péters il y a plus de 4 ans
Je pense que je ferais sans la confirmation lors du "refresh".
(et j'allais dire que ma version de black ne produit pas le même résultat, mais en fait c'est que tu as limité le changement aux fichiers que tu touchais, je te dirais d'y aller totalement, que tous les fichiers soient traités une fois pour toutes).
Mis à jour par Benjamin Dauvergne il y a plus de 4 ans
Lauréline Guerin a écrit :
J'ai déplacé un check dans la méthode clean du form ExceptionsImportForm, mais j'ai laissé la gestion des ICSError dans les vues.
Je parlais de TimePeriodExceptionSourceRefreshForm en fait.
Mis à jour par Lauréline Guérin il y a plus de 4 ans
ExceptionsImportForm ou TimePeriodExceptionSourceRefreshForm, c'est la même mécanique: on valide le form, on save l'instance, puis on lance l'import en form_valid
Mis à jour par Lauréline Guérin il y a plus de 4 ans
- Fichier 0004-agendas-refresh-an-exception-source-29209.patch 0004-agendas-refresh-an-exception-source-29209.patch ajouté
- Fichier 0003-agendas-delete-an-exception-source-29209.patch 0003-agendas-delete-an-exception-source-29209.patch ajouté
- Fichier 0002-agendas-add-exception-source-model-29209.patch 0002-agendas-add-exception-source-model-29209.patch ajouté
- Fichier 0001-misc-black-29209.patch 0001-misc-black-29209.patch ajouté
J'ai blaké tout chrono/ et tests/
J'ai aussi séparé les actions refresh et replace, pour supprimer l'étape de confirmation du refresh (le mode avec url)
Mis à jour par Frédéric Péters il y a plus de 4 ans
- Statut changé de Solution proposée à Solution validée
Pour moi c'est ok, une fois rebasé sur master (et j'ai brièvement regardé et c'est un peu plus chiant que juste zapper le premier commit), tu peux envoyer.
Mis à jour par Lauréline Guérin il y a plus de 4 ans
- Statut changé de Solution validée à Résolu (à déployer)
commit 7a33c41586d095b0f2ec3f85855623025e50301a Author: Lauréline Guérin <zebuline@entrouvert.com> Date: Thu Dec 12 10:56:14 2019 +0100 agendas: refresh an exception source (#29209) commit 2aed92d132ea154af465450a6d0c9e476e1fab80 Author: Lauréline Guérin <zebuline@entrouvert.com> Date: Thu Dec 12 09:45:54 2019 +0100 agendas: delete an exception source (#29209) commit a5a8a3fe3d2a1ac7feed68fd7e45f391aa3d70ab Author: Lauréline Guérin <zebuline@entrouvert.com> Date: Tue Dec 10 15:28:39 2019 +0100 agendas: add exception source model (#29209)
Mis à jour par Frédéric Péters il y a plus de 4 ans
- Statut changé de Résolu (à déployer) à Solution déployée
Mis à jour par Benjamin Dauvergne il y a environ 4 ans
- Lié à Development #39259: conserver les fichiers d'exception uploadés ajouté
agendas: add exception source model (#29209)