Projet

Général

Profil

Development #19460

cellule "calendar": afficher premier créneau disponible dans intitulé

Ajouté par Brice Mallet il y a plus de 6 ans. Mis à jour il y a plus de 5 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Josué Kouka
Version cible:
-
Début:
16 octobre 2017
Echéance:
20 octobre 2017
% réalisé:

100%

Temps estimé:
Patch proposed:
Oui
Planning:

Description

Dans le seul cas d'usage de la cellule "calendar", à Orléans la cellule remonte la liste des agendas et affiche l'intitulé de ceux-ci.

Afin d'apporter plus d'informations à l'usager, prévoir affichage, à la suite de l'intitulé, du premier créneau disponible dans cet agenda.

Cela donnerait, dans le cas d'Orléans :
  • Crèche Collective Bolière (prochain créneau disponible : jeudi 12 octobre à 13h30)
  • Crèche Collective des BLOSSIERES (prochain créneau disponible : vendredi 13 octobre à 10h00)

NB : "premier créneau disponible dans cet agenda" correpond dans le cas d'Orléans premier créneau libre de 2 heures d'affilée


Fichiers

0001-booking-calendar-cell-display-first-available-slot-i.patch (4,45 ko) 0001-booking-calendar-cell-display-first-available-slot-i.patch Josué Kouka, 17 octobre 2017 17:51
0001-booking-calendar-cell-display-first-available-slot-i.patch (7,05 ko) 0001-booking-calendar-cell-display-first-available-slot-i.patch Josué Kouka, 30 octobre 2017 14:07
0001-booking-calendar-cell-display-first-available-slot-i.patch (7,06 ko) 0001-booking-calendar-cell-display-first-available-slot-i.patch Josué Kouka, 30 octobre 2017 15:49
0001-booking-calendar-cell-display-first-available-slot-i.patch (7,33 ko) 0001-booking-calendar-cell-display-first-available-slot-i.patch Josué Kouka, 03 novembre 2017 11:34
0001-booking-calendar-cell-display-first-available-slot-i.patch (7,77 ko) 0001-booking-calendar-cell-display-first-available-slot-i.patch Josué Kouka, 03 novembre 2017 14:57
0001-booking-calendar-cell-display-first-available-slot-i.patch (8,46 ko) 0001-booking-calendar-cell-display-first-available-slot-i.patch Josué Kouka, 06 novembre 2017 16:16
0001-booking-calendar-cell-display-first-available-slot-i.patch (7,73 ko) 0001-booking-calendar-cell-display-first-available-slot-i.patch Josué Kouka, 06 novembre 2017 21:05
0001-booking-calendar-cell-display-first-available-slot-i.patch (6,78 ko) 0001-booking-calendar-cell-display-first-available-slot-i.patch Josué Kouka, 07 novembre 2017 12:40
0001-booking-calendar-cell-display-first-available-slot-i.patch (7,85 ko) 0001-booking-calendar-cell-display-first-available-slot-i.patch Josué Kouka, 07 novembre 2017 16:29
0001-booking-calendar-cell-display-first-available-slot-i.patch (7,7 ko) 0001-booking-calendar-cell-display-first-available-slot-i.patch Josué Kouka, 07 novembre 2017 17:57
0001-booking-calendar-cell-display-first-available-slot-i.patch (7,29 ko) 0001-booking-calendar-cell-display-first-available-slot-i.patch Josué Kouka, 08 novembre 2017 14:26
0001-booking-calendar-cell-display-first-available-slot-i.patch (7,38 ko) 0001-booking-calendar-cell-display-first-available-slot-i.patch Josué Kouka, 08 novembre 2017 15:10
0001-booking-calendar-cell-display-first-available-slot-i.patch (7,32 ko) 0001-booking-calendar-cell-display-first-available-slot-i.patch Josué Kouka, 08 novembre 2017 16:15

Demandes liées

Lié à Combo - Bug #19370: Dégager combo.apps.calendarRejeté11 octobre 2017

Actions
Lié à Combo - Development #19452: cellule "calendar": combiner tous les agendas dans la même celluleRejeté16 octobre 2017

Actions

Révisions associées

Révision f2b51d40 (diff)
Ajouté par Josué Kouka il y a plus de 6 ans

booking calendar cell: display first available slot if any (#19460)

Historique

#2

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

  • Lié à Bug #19370: Dégager combo.apps.calendar ajouté
#3

Mis à jour par Josué Kouka il y a plus de 6 ans

  • Lié à Development #19452: cellule "calendar": combiner tous les agendas dans la même cellule ajouté
#5

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

Le mockup affiche cette information entre parenthèses et sans point final. Il affiche aussi une information quand aucun créneau n'existe.

#7

Mis à jour par Josué Kouka il y a plus de 6 ans

Frédéric Péters a écrit :

Le mockup affiche cette information entre parenthèses et sans point final. Il affiche aussi une information quand aucun créneau n'existe.

C'est fait dans le patch juste ne dessus, en prenant en compte ce qui a été défini dans #19452

#8

Mis à jour par Josué Kouka il y a plus de 6 ans

  • Statut changé de Nouveau à En cours
#9

Mis à jour par Josué Kouka il y a plus de 6 ans

Correction d'une error lors de l'initialisation de l'objet Calendar.

#10

Mis à jour par Josué Kouka il y a plus de 6 ans

Un pacth qui se base sur #19368. J'y rajoyte du style pour afficher l'information sur le premier créneau disponible en italique.

#12

Mis à jour par Serghei Mihai il y a plus de 6 ans

J'ai peut-être raté un bout, mais pourquoi une méthode __str__ en plus pour DaySlot alors qu'il y a déjà un __repr__ ? Et dédans l'utilisation de l'objet DateFormat alors que self.date_time est déjà un objet datetime et on peut appeler strftime dessus.

#13

Mis à jour par Josué Kouka il y a plus de 6 ans

Serghei Mihai a écrit :

J'ai peut-être raté un bout, mais pourquoi une méthode __str__ en plus pour DaySlot alors qu'il y a déjà un __repr__ ? Et dédans l'utilisation de l'objet DateFormat alors que self.date_time est déjà un objet datetime et on peut appeler strftime dessus.

C'etait juste pour avoir le slot au format '<date> at <hour>' déja localisé. J'ai changé en info qui est plus parlant.

#14

Mis à jour par Serghei Mihai il y a plus de 6 ans

Vire les espaces dans autour de "-"

if (tmp[-1].date_time - tmp[0].date_time) != ((step - 1) * offset):

et ack

#15

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

Juste lire

if (tmp[-1].date_time - tmp0.date_time) != ((step - 1) * offset):

Ici m'effraie.

Je me dis que dans le code il y aura des commentaires pour accompagner.

(et je vérifie et non)

#16

Mis à jour par Josué Kouka il y a plus de 6 ans

Frédéric Péters a écrit :

Juste lire

if (tmp[-1].date_time - tmp0.date_time) != ((step - 1) * offset):

Ici m'effraie.

Je me dis que dans le code il y aura des commentaires pour accompagner.

(et je vérifie et non)

J'ai rajouté des commentaires dans ce patch.

#17

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

     font-size: 13px;

nope nope nope. Ce calendar.css emmerde déjà les choses, n'obligeons pas les thèmes à contourner cette propriété; le souhait est d'être plus petit que la taille par défaut, disons ok, mais que ça passe par un pourcentage.

    def get_first_available_slot(self, offset, min_duration):
        """Search the first available slots
        but more importantly contiguous ones

Le commentaire ne semble pas tout à fait correspondre au nom de la fonction; le commentaire parle de retourner plusieurs slots.

Sur la forme, il me semble qu'il aurait été équivalent d'écrire :

required_contiguous_slots = ... # c'est peut-être équivalent au step mais je n'ai pas cherché ce que contien offset pour vérifier.
for i in range(len(self.slots) - required_contiguous_slots):
    if all([x.available for x in slots[i:i+required_contiguous_slots]):
        # got n contiguous slots, that's the one.
        return slots[i]
return None

(sur l'idée que les slots sont contigus, ce qui me semble être le cas à la lecture du patch)

+        return _('(No slot available)')

No available slots.

De manière générale, ce code qui joue avec ce qui est à afficher, ça aurait plutôt sa place dans le template, genre :

<span class="calinfo">
{% with calendar.get_first_available_slot as slot %}
({% if slot %}{% trans "Next available slot :" %}{{ slot|date:"whatever date format"}{% else %}{% trans "No available slots." %}{% endif %}
{% endwith %}
</span>

(la boucle qui se trouve dans get_info, qui se trouverait ici déplacée dans get_first_available_slot, pourrait sans doute aussi se trouver dans le template mais ce serait trop.)

#18

Mis à jour par Josué Kouka il y a plus de 6 ans

Frédéric Péters a écrit :

[...]

nope nope nope. Ce calendar.css emmerde déjà les choses, n'obligeons pas les thèmes à contourner cette propriété; le souhait est d'être plus petit que la taille par défaut, disons ok, mais que ça passe par un pourcentage.

Ok modifié.

[...]

Le commentaire ne semble pas tout à fait correspondre au nom de la fonction; le commentaire parle de retourner plusieurs slots.

Sur la forme, il me semble qu'il aurait été équivalent d'écrire :

[...]

(sur l'idée que les slots sont contigus, ce qui me semble être le cas à la lecture du patch)

+1

[...]

No available slots.

De manière générale, ce code qui joue avec ce qui est à afficher, ça aurait plutôt sa place dans le template, genre :

[...]

(la boucle qui se trouve dans get_info, qui se trouverait ici déplacée dans get_first_available_slot, pourrait sans doute aussi se trouver dans le template mais ce serait trop.)

Pris en compte avec get_first_available_slot au niveau de Calendar.

#19

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

font-size: 0.8em;

ça passe par un pourcentage → 80% ou whatever. Pas une autre unité.

"""Search the first available slots
but more importantly contiguous ones

Pas changé : le commentaire ne semble pas tout à fait correspondre au nom de la fonction; le commentaire parle de retourner plusieurs slots.

required_contiguous_slots = self.min_duration.seconds / self.offset.seconds

Pas besoin de calculer ça à chaque itération.

{% trans "Next available slot :" %}

Il y avait un piège, pas d'espace avant : en anglais.

assert '(Next available slot :June 13' in page.content

Écrire ce test devrait être suffisant pour se dire qu'il y a un truc à corriger.

#20

Mis à jour par Josué Kouka il y a plus de 6 ans

Frédéric Péters a écrit :

font-size: 0.8em;

ça passe par un pourcentage → 80% ou whatever. Pas une autre unité.

Ok corrigé

"""Search the first available slots
but more importantly contiguous ones

Pas changé : le commentaire ne semble pas tout à fait correspondre au nom de la fonction; le commentaire parle de retourner plusieurs slots.

Fait.

required_contiguous_slots = self.min_duration.seconds / self.offset.seconds

Pas besoin de calculer ça à chaque itération.

J'avais pas fait attention.

{% trans "Next available slot :" %}

Il y avait un piège, pas d'espace avant : en anglais.

assert '(Next available slot :June 13' in page.content

Écrire ce test devrait être suffisant pour se dire qu'il y a un truc à corriger.

Confusion sur la typographie, c'est corrigé aussi.

#21

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

{% trans "Next available slot: " %}

Non, on ne pose pas des espaces de fin de ligne dans les chaines à traduire, c'est trop facile ensuite de les rater. L'espace doit être dans le template entre {% trans "Next available slot: " %} et {{ slot.date_time...

    def get_first_available_slot(self):
        """Return the first available slot

Comme le commentaire n'apporte rien qu'une répétition du nom de la méthode, il ne sert vraiment pas. Pour le garder faut le prolonger avec de l'info supplémentaire, genre "return the first available slot that has enough consecutive available slots to be allowed for booking".

#22

Mis à jour par Josué Kouka il y a plus de 6 ans

Frédéric Péters a écrit :

{% trans "Next available slot: " %}

Non, on ne pose pas des espaces de fin de ligne dans les chaines à traduire, c'est trop facile ensuite de les rater. L'espace doit être dans le template entre {% trans "Next available slot: " %} et {{ slot.date_time...

[...]

Corrigé

Comme le commentaire n'apporte rien qu'une répétition du nom de la méthode, il ne sert vraiment pas. Pour le garder faut le prolonger avec de l'info supplémentaire, genre "return the first available slot that has enough consecutive available slots to be allowed for booking".

Done.

#23

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

À rebaser pour ne pas utiliser calendar.css. → inclure <style>.calinfo { font-style: italic; font-size: 80%; } dans le template de la cellule.

#24

Mis à jour par Josué Kouka il y a plus de 6 ans

Frédéric Péters a écrit :

À rebaser pour ne pas utiliser calendar.css. → inclure <style>.calinfo { font-style: italic; font-size: 80%; } dans le template de la cellule.

Ok, ajouté dans ce patch.

#25

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

Ok, ajouté dans ce patch.

Pas du tout, tu l'as ajouté en dur en attribut de l'élément alors que je disais qu'il fallait taper ça dans une balise <style>.

#26

Mis à jour par Josué Kouka il y a plus de 6 ans

Frédéric Péters a écrit :

Ok, ajouté dans ce patch.

Pas du tout, tu l'as ajouté en dur en attribut de l'élément alors que je disais qu'il fallait taper ça dans une balise <style>.

Corrigé.

#27

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

<style>.calinfo { ...

Vraiment.

Pas style="...".

Pas non plus <style>h2 > .calinfo.

Le raisonnement derrière c'est avoir le sélecteur avec la plus petite priorité/spécificité possible.

#28

Mis à jour par Josué Kouka il y a plus de 6 ans

Frédéric Péters a écrit :

<style>.calinfo { ...

Vraiment.

Pas style="...".

Pas non plus <style>h2 > .calinfo.

Le raisonnement derrière c'est avoir le sélecteur avec la plus petite priorité/spécificité possible.

Ok, j'ai éssayé de rester fidèle à ce que t'as dit.

#29

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

Ok.

#30

Mis à jour par Josué Kouka il y a plus de 6 ans

  • Statut changé de En cours à Résolu (à déployer)
  • % réalisé changé de 0 à 100
commit f2b51d40774c31109048bb959024037a0e9f772d
Author: Josue Kouka <jkouka@entrouvert.com>
Date:   Tue Oct 17 16:13:45 2017 +0200

    booking calendar cell: display first available slot if any (#19460)

#31

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

  • Statut changé de Résolu (à déployer) à Fermé

Formats disponibles : Atom PDF