Ajouter la possibilité pour les "Types de Groupes" d'être lié une Carte (un MapGroupType)
Exemple : les colocs.
L'idée est de généraliser le concept pour pouvoir à l'avenir ajouter d'autres types de groupes associés à une carte (exemple: les stages, les mobilités à l'international, etc...)
Definition of done
Le ticket est terminé si :
[ ] Sur la page des groupes (https://nantral-platform.fr/group/), je vois en plus des types de groupes classiques (Clubs, Formations, Listes BDX...) les types de groupes associés à une carte (Colocs)
[ ] Sur la page listant tous les groupes d'un type de groupe donné, je vois un bouton en haut à droite (à côté du bouton d'ajout) me redirigeant vers la carte associé au type de groupe si elle existe
[ ] Dans le menu principal, j'ai une page "Carte" à l'adresse https://nantral-platform.fr/map, faite directement en react
[ ] Sur cette page, je vois :
[ ] Un menu déroulant permettant de sélectionner le type de groupe à afficher (coloc, stages, mobilités...)
[ ] Lorsque je sélectionne un type de groupe, le slug du type de groupe est affiché en queryParam de la page (ex: l'url devient https://nantral-platform/map?type=roommates)
[ ] Une carte avec l'emplacement de tous les groupes associé au type de groupe sélectionné
[ ] Un champ de recherche pour trouver un groupe par name, shortName, members__first_name, et members_last_name
[ ] Lorsque je sélectionne un marqueur (via la recherche ou en cliquant dessus sur la carte), une popup s'affiche avec le nom du groupe, le résumé du groupe, puis un bouton "Détails" pour ouvrir la page du groupe, et un bouton "Y aller" pour ouvrir Google Maps en mode trajet. L'id du groupe sélectionné s'ajoute aussi aux query params (/map?type=roommates&id=1)
[ ] Un filtre pour afficher ou non les groupes archivés
[ ] Lorsque je modifie un groupe dans un type associé à une carte :
[ ] Je dois avoir accès à trois champs supplémentaires : l'adresse, et les coordonnées GPS (latitude et longitude - calculées automatiquement à partir de l'adresse, mais modifiables manuellement au cas où le calcul foire)
[ ] Le champ 'lieu de réunion' est masqué pour éviter la confusion
[ ] Sur la page du groupe :
[ ] Le champ 'Lieu de réunion' est remplacé par l'adresse : cette adresse est cliquable, et redirige vers la carte avec le groupe sélectionné (ie l'adresse /map?type=...&id=...)
[ ] En bas de la page, je vois les autres groupes (y compris les groupes archivés) dont le champ address est strictement identique (pour identifier les anciennes colocs)
Hors-scope
Choses à ne pas faire ici et qui seront faites dans d'autres tickets:
Migrer les pages des groupes sur la nouvelle interface react (ici on migre uniquement la page "Carte"
Migrer le module Colocathlon (on supprime tout ce qui a rapport au colocathlon pour le réimplémenter plus tard si besoin, car l'expérience a révélé qu'il n'était pas très utile).
Stratégie technique
[ ] Ajouter dans la table GroupType un champ boolean isMap
[ ] Ajouter dans la table Group les champs textes facultatifs (blank=True mais pas null=True) address, latitude et longitude
[ ] Dans la méthode save() du model Group, rendre obligatoire les attributs address, latitude et longitude si le type du groupe a la propriété isMap
[ ] Ajouter une task celery pour archiver automatiquement tous les jours à 03:00 les groupes sans membres actifs (ie les groupes dont tous les membres ont une date de fin inférieure à la date du jour)
Pour la map, utiliser MapBox : se créer un compte pour récupérer une clé perso, puis implémenter la carte en suivant leur doc. Ne surtout pas réutiliser l'ancien code, bien repartir de zéro (toutes les libs utilisées sont depuis dépréciées)
Migration de roommates
Les objets roommates sont copiés dans de nouveaux objets groupe, et les dates de l'objet roommates sont déplacés dans les dates de chaque nouvel objet membre
Les objets housing sont supprimés, et leur données sont recopiées dans les attributs summary, address, latitude et longitude du type Group
Les objets members sont déplacés vers les nouveaux objets members de Group (les nickname sont supprimés, ils seront réintroduits plus tard dans une mise à jour de Student) - les dates sont recopiées depuis l'objet roommate
Description
Ajouter la possibilité pour les "Types de Groupes" d'être lié une Carte (un
MapGroupType
) Exemple : les colocs. L'idée est de généraliser le concept pour pouvoir à l'avenir ajouter d'autres types de groupes associés à une carte (exemple: les stages, les mobilités à l'international, etc...)Definition of done
Le ticket est terminé si :
https://nantral-platform.fr/map
, faite directement en reacthttps://nantral-platform/map?type=roommates
)/map?type=roommates&id=1
)/map?type=...&id=...
)address
est strictement identique (pour identifier les anciennes colocs)Hors-scope
Choses à ne pas faire ici et qui seront faites dans d'autres tickets:
Stratégie technique
GroupType
un champ booleanisMap
Group
les champs textes facultatifs (blank=True mais pas null=True)address
,latitude
etlongitude
address
,latitude
etlongitude
si le type du groupe a la propriétéisMap
Migration de roommates
summary
,address
,latitude
etlongitude
du type Group