Une sous-issue de #20 concernant la parité des programmes, ie. le fait d'avoir au moins toutes les fonctionnalités de la v4.3, ce qui devrait permettre de migrer.
Modèle
Notes
Tests
Tags
Modèles de calculatrices
Langage d'implémentation
Catégories (jeux/cours/etc)
Divers
Métadonnées : auteur (quand ce n'est pas le posteur)
Métadonnées : taille (calculée automatiquement ?)
Métadonnées : version
Métadonnées : license
Bannière de fond
Label de qualité
Identifiant de concours
Systèmes
Job pour le progrank
Implémentation de la formule du progrank
Une sous-issue de #20 concernant la parité des programmes, ie. le fait d'avoir au moins toutes les fonctionnalités de la v4.3, ce qui devrait permettre de migrer.
**Modèle**
- [ ] Notes
- [ ] Tests
- [x] Tags
* [x] Modèles de calculatrices
* [x] Langage d'implémentation
* [x] Catégories (jeux/cours/etc)
**Divers**
- [x] Métadonnées : auteur (quand ce n'est pas le posteur)
- [x] Métadonnées : taille (calculée automatiquement ?)
- [x] Métadonnées : version
- [x] Métadonnées : license
- [ ] Bannière de fond
- [x] Label de qualité
- [x] Identifiant de concours
**Systèmes**
- [x] Job pour le progrank
- [ ] Implémentation de la formule du progrank
J'ai ajouté les tags dans c74abf3fcc. Je garde la case décochée parce qu'il n'y a pas encore d'UI, c'est juste dans la base de données.
J'ai ajouté les tags dans https://gitea.planet-casio.com/devs/PCv5/commit/c74abf3fcca4b4a739e94ebd21425bd83c8dad09. Je garde la case décochée parce qu'il n'y a pas encore d'UI, c'est juste dans la base de données.
Gros commit ci-dessus, j'ai ajouté un champ de saisie pour les tags. Les fonctionnalités côté front :
Sélection de tags au clic en Javascript
Saisie manuelle des IDs (eg. calc.g90+e) dans un champ de texte hors Javascript
Supporte les valeurs initiales
Supporte les modifications par les scripts
Jolies couleurs sur tous les thèmes (un peu à l'arrache)
Et côté back :
Champ TagListField avec validation automatique que les tags existent bien
Méthode .selected_tags() évite de passer par .value
widgets/tag_selector.html fournit le système de sélection
Comme truc subtil il reste donc essentiellement que le progrank.
Gros commit ci-dessus, j'ai ajouté un champ de saisie pour les tags. Les fonctionnalités côté front :
* Sélection de tags au clic en Javascript
* Saisie manuelle des IDs (eg. `calc.g90+e`) dans un champ de texte hors Javascript
* Supporte les valeurs initiales
* Supporte les modifications par les scripts
* Jolies couleurs sur tous les thèmes (un peu à l'arrache)
Et côté back :
* Champ `TagListField` avec validation automatique que les tags existent bien
* Méthode `.selected_tags()` évite de passer par `.value`
* `widgets/tag_selector.html` fournit le système de sélection

Comme truc subtil il reste donc essentiellement que le progrank.
Le commit ci-dessus utilise le module flask-crontab pour exécuter le job de calcul du progrank chaque jour à 4 heures du matin. Pour l'instant ça donne juste un progrank de 0 et on stocke la date de dernière mise à jour.
J'ai cherché les options pour les jobs comme ça ; la réponse générale est "utilisez crontab", et l'avantage de ce module par rapport à le faire directement c'est que les données sont sur le dépôt et pas dans la config système.
Le module génère une crontab quand on exécute flask crontab add (ce qui sert aussi à mettre à jour après une modification) et la supprime quand on exécute flask crontab remove. On peut aussi lancer les jobs à la main avec flask crontab run <hash>.
Le commit ci-dessus utilise le module [flask-crontab](https://github.com/frostming/flask-crontab) pour exécuter le job de calcul du progrank chaque jour à 4 heures du matin. Pour l'instant ça donne juste un progrank de 0 et on stocke la date de dernière mise à jour.
J'ai cherché les options pour les jobs comme ça ; la réponse générale est "utilisez crontab", et l'avantage de ce module par rapport à le faire directement c'est que les données sont sur le dépôt et pas dans la config système.
Le module génère une crontab quand on exécute `flask crontab add` (ce qui sert aussi à mettre à jour après une modification) et la supprime quand on exécute `flask crontab remove`. On peut aussi lancer les jobs à la main avec `flask crontab run <hash>`.
Le commit ci-dessus ajoute la plupart des métadonnées, en plus d'une nouvelle table Event pour noter les événements dans le futur, ce qui devrait nous permettre tout u tas de petits trucs sympas pour chaque événement :
A link to the event's main topic
List of programs published in the event
Possibly, a list of all related topics (announcement, start, results,
etc) all sharing a common 1-line header so they are linked together
This would be used for event-related trophies
And possibly for an event calendar
Le commit ci-dessus ajoute la plupart des métadonnées, en plus d'une nouvelle table `Event` pour noter les événements dans le futur, ce qui devrait nous permettre tout u tas de petits trucs sympas pour chaque événement :
> - A link to the event's main topic
> - List of programs published in the event
> - Possibly, a list of all related topics (announcement, start, results,
> etc) all sharing a common 1-line header so they are linked together
> - This would be used for event-related trophies
> - And possibly for an event calendar
Une sous-issue de #20 concernant la parité des programmes, ie. le fait d'avoir au moins toutes les fonctionnalités de la v4.3, ce qui devrait permettre de migrer.
Modèle
Divers
Systèmes
J'ai ajouté les tags dans
c74abf3fcc
. Je garde la case décochée parce qu'il n'y a pas encore d'UI, c'est juste dans la base de données.Gros commit ci-dessus, j'ai ajouté un champ de saisie pour les tags. Les fonctionnalités côté front :
calc.g90+e
) dans un champ de texte hors JavascriptEt côté back :
TagListField
avec validation automatique que les tags existent bien.selected_tags()
évite de passer par.value
widgets/tag_selector.html
fournit le système de sélectionComme truc subtil il reste donc essentiellement que le progrank.
Le commit ci-dessus utilise le module flask-crontab pour exécuter le job de calcul du progrank chaque jour à 4 heures du matin. Pour l'instant ça donne juste un progrank de 0 et on stocke la date de dernière mise à jour.
J'ai cherché les options pour les jobs comme ça ; la réponse générale est "utilisez crontab", et l'avantage de ce module par rapport à le faire directement c'est que les données sont sur le dépôt et pas dans la config système.
Le module génère une crontab quand on exécute
flask crontab add
(ce qui sert aussi à mettre à jour après une modification) et la supprime quand on exécuteflask crontab remove
. On peut aussi lancer les jobs à la main avecflask crontab run <hash>
.Le commit ci-dessus ajoute la plupart des métadonnées, en plus d'une nouvelle table
Event
pour noter les événements dans le futur, ce qui devrait nous permettre tout u tas de petits trucs sympas pour chaque événement :