Projet

Général

Profil

Development #47394

Calendrier d'indisponibilités : gérer l'import/export

Ajouté par Emmanuel Cazenave il y a plus de 3 ans. Mis à jour il y a plus de 3 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Catégorie:
-
Version cible:
-
Début:
06 octobre 2020
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

Description

...


Fichiers


Demandes liées

Lié à Chrono - Development #46555: Permettre de poser une exception qui s'applique sur plusieurs agendaFermé11 septembre 2020

Actions

Révisions associées

Révision 033c43f8 (diff)
Ajouté par Emmanuel Cazenave il y a plus de 3 ans

agendas: handle import/export of unavailability calendars (#47394)

Historique

#1

Mis à jour par Emmanuel Cazenave il y a plus de 3 ans

  • Lié à Development #46555: Permettre de poser une exception qui s'applique sur plusieurs agenda ajouté
#2

Mis à jour par Emmanuel Cazenave il y a plus de 3 ans

  • Statut changé de Nouveau à En cours
  • Assigné à mis à Emmanuel Cazenave
#3

Mis à jour par Emmanuel Cazenave il y a plus de 3 ans

#4

Mis à jour par Lauréline Guérin il y a plus de 3 ans

        unavailability_calendar, created = cls.objects.get_or_create(slug=data['slug'], defaults=data)
        if not created:
            for k, v in data.items():
                setattr(unavailability_calendar, k, v)

Pourquoi ne pas faire un update_or_create ?
#5

Mis à jour par Emmanuel Cazenave il y a plus de 3 ans

Lauréline Guerin a écrit :

[...]
Pourquoi ne pas faire un update_or_create ?

Copier/coller sans réfléchir, c'est corrigé plus couverture de cette situation dans le test.

#6

Mis à jour par Emmanuel Cazenave il y a plus de 3 ans

  • Statut changé de Solution proposée à En cours

Il manque la partie UI, je suis à l'ouest.

#7

Mis à jour par Emmanuel Cazenave il y a plus de 3 ans

Faire apparaître l'export dans l'UI c'est straight forward.

Pour l'import si on passe par l'unique point d'entrée actuel, le bouton 'Importer' sur /manage, il y a une nouvelle formulation trouver parce que ça amène sur '/manage/agendas/import/' ou il est écrit 'Importation d'agendas' et 'fichier d'agendas'.

Donc trouver une formulation complètement neutre, qui couvrira aussi peut-être plus tard l'import de Resource ou de tout autre type d'objet qui n'existe pas encore

Deuxième option séparer les point d'entrée d'import, genre faire apparaître un bouton d'import sur /manage/unavailability-calendars/, plus tard sur '/manage/resources/', etc.

Je ne sais pas trop quoi en penser, à votre bon cœur.

#8

Mis à jour par Frédéric Péters il y a plus de 3 ans

Deuxième option séparer les point d'entrée d'import, genre faire apparaître un bouton d'import sur /manage/unavailability-calendars/, plus tard sur '/manage/resources/', etc.

Bof.

Pour moi il faut 1/ l'export/import global, qu'il contienne agendas et ressources et calendriers d'indisponibilités (c'est le plus important) et 2/ individuellement sur les pages d'un agenda, d'une ressource, d'un calendrier d'indisponibilités avoir une action d'export.

En évolution plus loin, si jamais ça se trouve être utile, l'export global pourrait commencer par une boite de dialogue où il serait possible de cocher les types d'objets souhaités dans l'export. (je pense avoir déjà fait une maquette pour ça, mais c'était peut-être en fait dans combo).

#9

Mis à jour par Emmanuel Cazenave il y a plus de 3 ans

Pour l'export global que nous n'avons pas : #48100 parce que c'est quand même un peu de boulot.

Du coup ici j'ai rajouté l'export depuis un calendrier d'indisponibilité, facile.

Et je modifie l'import global qui invite à 'importer' tout court plutôt que 'Importation d'agendas' (comme dans wcs), et gestion des types d'objets différents dans le rapport d'importation.

#10

Mis à jour par Valentin Deniaud il y a plus de 3 ans

Petite remarque de forme,

+            try:
+                slug = unavailability_calendar['slug']
+                target_calendar = UnavailabilityCalendar.objects.get(slug=slug)
+                desk.unavailability_calendars.add(target_calendar)
+            except UnavailabilityCalendar.DoesNotExist:

je trouve ça mieux quand on ne met que la ligne qui doit lever une exception dans le try.

Je pense qu'il faut un peu revoir les messages qui s'affichent suite à un import, quand j'importe un agenda ça fait bizarre de lire « aucune calendrier d'indispo trouvé », et inversement quand j'apporte un calendrier savoir que « aucun agenda trouvé » ne me paraît pas utile.

À part ça ça me semble tout bon.

#11

Mis à jour par Emmanuel Cazenave il y a plus de 3 ans

Valentin Deniaud a écrit :

Petite remarque de forme,

Corrigé.

Je pense qu'il faut un peu revoir les messages qui s'affichent suite à un import

Ouaip, j'ai shooté ça au profit d'un peu glorieux mais peu probable 'No data found' si rien ne s'est fait sur aucun type d'objet (genre fichier d'import vide).

#13

Mis à jour par Valentin Deniaud il y a plus de 3 ans

  • Statut changé de Solution proposée à Solution validée
#14

Mis à jour par Emmanuel Cazenave il y a plus de 3 ans

  • Statut changé de Solution validée à Résolu (à déployer)
commit 033c43f8601db8629294af61fe1d69c33e77580e
Author: Emmanuel Cazenave <ecazenave@entrouvert.com>
Date:   Mon Oct 26 17:15:47 2020 +0100

    agendas: handle import/export of unavailability calendars (#47394)
#15

Mis à jour par Frédéric Péters il y a plus de 3 ans

  • Statut changé de Résolu (à déployer) à Solution déployée

Formats disponibles : Atom PDF