# Documentation pour les développeurs ScoDoc Informations pour les développeurs souhaitant étendre ou modifier ScoDoc. ## Informations générales * S'abonner aux [listes de diffusion](ListesDeDiffusion.md) * [Générer de nouveaux formats de bulletins PDF](ApiGenerationBulletinsPdf.md) * [Créer de nouveaux types de "parcours"](ApiCreationParcours.md) * [API](ScoDocAPI.md) : API JSON ou XML pour interfaçage avec d'autres applications * Notes diverses * [Discussions pour la future gestion des absences](IdeesGestionAbsences.md) * [Anciennes discussions sur la gestion des plannings](IdeesGestionPlannings.md) ## Développer sur ScoDoc 7 et 8 Quelques conseils, indications et mémos pour les développeurs sur ScoDoc version 7.x et 8. ### Style et formatage du code L'ancienneté de la base de code a rendu le style peu cohérent. Le code doit être formatté avec [`black`](https://black.readthedocs.io/) avant tout commit (configurez votre éditeur pour appeler `black` à l'enregistrement). #### Documentation On adoptera le style "Google": Exemple: """Description résumée de la fonction blah blah sur la fonction Args: table_handle: An open smalltable.Table instance. keys: A sequence of strings representing the key of each table row to fetch. String keys will be UTF-8 encoded. require_all_keys: Optional; If require_all_keys is True only rows with values set for all keys will be returned. Returns: A dict mapping keys to the corresponding table row data fetched. Each row is represented as a tuple of strings. For example: {b'Serak': ('Rigel VII', 'Preparer'), b'Zim': ('Irk', 'Invader'), b'Lrrr': ('Omicron Persei 8', 'Emperor')} """ ### Git Le dépot est La branche `master` est celle en production. La branche `Scodoc8`est expérimentale (nouvel installeur, refactoring...). ScoDoc9 sera avec Python 3. Ci-dessous quelques pense-bête qui peuvent servir. #### Hot fixes (internes) Pour les développeurs internes (écriture sur le dépot master), un exemple basique: # Créer une branche # si besoin (travail en cours), utiliser git stash avant git checkout master git branch hotfix git checkout hotfix ... dev, test ... git add ... git commit -m "fixed ..." git checkout master git merge hotfix git branch -d hotfix # publication # éventuellement: git stash pop #### Mettre à jour votre branche Vous travaillez dans votre branche `ma_branche`. Pour lui appliquer les mises à jour de `master` (remote): git pull origin master #### Commandes utiles, en vrac * `git log -L:fonction_python:fichier.py` * Commits locaux: `git log @{u}..` #### Refactoring pylint --disable=all -e E sco_parcours_dut.py | grep undefined-variable | awk '{print $4;}' | sort | uniq | tr -d \' Lint tous les fichiers modifiés: git status | grep modified | grep .py | awk '{print $2}' | xargs pylint -E Restore les modes au besoin (SAMBA les changent parfois): git diff -p -R --no-color | grep -E "^(diff|(old|new) mode)" --color=never | git apply ### Portail pour tests TODO (voir `scotests/fakeportal/`). ## Roadmap Sujets **prioritaires** en 2021: - modernisation du code: Flask, Python 3. - prise en compte du Bachelor (BUT): SAÉ, suivi compétences, validations des blocs, UE, semestres selon la cadrage et l'arêté Licence Pro 2020. - Redéfinition API et interface mobile simplifiée. Autres sujets: - [voir les tickets](https://scodoc.org/git/viennet/ScoDoc/issues)