mirror of
https://github.com/ae-utbm/sith.git
synced 2025-11-10 05:53:06 +00:00
@@ -182,29 +182,19 @@ ainsi même que de l'héritage de templates.
|
|||||||
si on souhaite faire des modifications côté client,
|
si on souhaite faire des modifications côté client,
|
||||||
il faut utiliser du Javascript, rien ne change à ce niveau-là.
|
il faut utiliser du Javascript, rien ne change à ce niveau-là.
|
||||||
|
|
||||||
### jQuery
|
### Typescript
|
||||||
|
|
||||||
[Site officiel](https://jquery.com/)
|
[Site officiel](https://www.typescriptlang.org/)
|
||||||
|
|
||||||
jQuery est une bibliothèque JavaScript
|
Pour rendre le site interactif, nous n'utilisons
|
||||||
libre et multiplateforme créée pour faciliter
|
pas directement Javascript, mais Typescript.
|
||||||
l'écriture de scripts côté client
|
Il s'agit d'un langage construit par-dessus Javascript,
|
||||||
dans le code HTML des pages web.
|
en ajoutant un typage statique et des éléments de sucre syntaxique.
|
||||||
La première version est lancée en janvier 2006 par John Resig.
|
Grâce au système de type, le code est plus lisible,
|
||||||
|
à la fois par les humains et par l'IDE, et plus fiable.
|
||||||
|
|
||||||
C'est une vieille technologie et certains
|
Il faut parfois se battre un peu contre le système de types de Typescript,
|
||||||
feront remarquer à juste titre que le Javascript
|
mais globalement Typescript est une alternative largement préférable à Javascript.
|
||||||
moderne permet d'utiliser assez simplement
|
|
||||||
la majorité de ce que fournit jQuery
|
|
||||||
sans rien avoir à installer.
|
|
||||||
Cependant, de nombreuses dépendances du projet
|
|
||||||
utilisent encore jQuery qui est toujours
|
|
||||||
très implanté aujourd'hui.
|
|
||||||
Le sucre syntaxique qu'offre cette librairie
|
|
||||||
reste très agréable à utiliser et économise
|
|
||||||
parfois beaucoup de temps.
|
|
||||||
Ça fonctionne et ça fonctionne très bien.
|
|
||||||
C'est maintenu et pratique.
|
|
||||||
|
|
||||||
|
|
||||||
### AlpineJS
|
### AlpineJS
|
||||||
@@ -270,17 +260,6 @@ sur tous les navigateurs contrairement
|
|||||||
à un simple icône unicode qui s'affiche
|
à un simple icône unicode qui s'affiche
|
||||||
lui différemment selon la plate-forme.
|
lui différemment selon la plate-forme.
|
||||||
|
|
||||||
!!!note
|
|
||||||
|
|
||||||
C'est une dépendance capricieuse qui évolue très vite
|
|
||||||
et qu'il faut très souvent mettre à jour.
|
|
||||||
|
|
||||||
!!!warning
|
|
||||||
|
|
||||||
Il a été décidé de **ne pas utiliser**
|
|
||||||
de CDN puisque le site ralentissait régulièrement.
|
|
||||||
Il est préférable de fournir cette dépendance avec le site.
|
|
||||||
|
|
||||||
## Workflow
|
## Workflow
|
||||||
|
|
||||||
### Git
|
### Git
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
L'ORM de Django est puissant, très puissant, non par parce qu'il
|
L'ORM de Django est puissant, très puissant, non pas parce qu'il
|
||||||
est performant (après tout, ce n'est qu'une interface, le gros du boulot,
|
est performant (après tout, ce n'est qu'une interface, le gros du boulot,
|
||||||
c'est la db qui le fait), mais parce qu'il permet d'écrire
|
c'est la db qui le fait), mais parce qu'il permet d'écrire
|
||||||
de manière relativement simple un grand panel de requêtes.
|
de manière relativement simple un grand panel de requêtes.
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ Pour accéder au fichier, il faut utiliser `static` comme pour le reste mais en
|
|||||||
Le bundler ne génère que des modules javascript.
|
Le bundler ne génère que des modules javascript.
|
||||||
Ajouter `type="module"` n'est pas optionnel !
|
Ajouter `type="module"` n'est pas optionnel !
|
||||||
|
|
||||||
### Les imports au sein des fichiers des fichiers javascript bundlés
|
### Les imports au sein des fichiers javascript bundlés
|
||||||
|
|
||||||
Pour importer au sein d'un fichier js bundlé, il faut préfixer ses imports de `#app:`.
|
Pour importer au sein d'un fichier js bundlé, il faut préfixer ses imports de `#app:`.
|
||||||
|
|
||||||
|
|||||||
@@ -36,11 +36,4 @@ SITH_SUBSCRIPTIONS = {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
Une fois ceci fait, il faut créer une nouvelle migration :
|
Après ça, n'oubliez pas de gérer les traductions (cf. [ici](./translation.md))
|
||||||
|
|
||||||
```bash
|
|
||||||
python ./manage.py makemigrations subscription
|
|
||||||
python ./manage.py migrate
|
|
||||||
```
|
|
||||||
|
|
||||||
N'oubliez pas non plus les traductions (cf. [ici](./translation.md))
|
|
||||||
|
|||||||
@@ -157,16 +157,18 @@ que sont VsCode et Sublime Text.
|
|||||||
Si vous avez réussi à terminer l'installation, vous n'avez donc pas de configuration
|
Si vous avez réussi à terminer l'installation, vous n'avez donc pas de configuration
|
||||||
supplémentaire à effectuer.
|
supplémentaire à effectuer.
|
||||||
|
|
||||||
Pour utiliser Biome, placez-vous à la racine du projet et lancer la commande suivante:
|
Pour utiliser Biome, placez-vous à la racine du projet et lancez la commande suivante:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
npx @biomejs/biome check # Pour checker le code avec le linter et le formater
|
npx @biomejs/biome check # Pour checker le code avec le linter et le formater
|
||||||
npx @biomejs/biome check --write # Pour appliquer les changemnts
|
npx @biomejs/biome check --write # Pour appliquer les changements
|
||||||
```
|
```
|
||||||
|
|
||||||
Biome va alors faire son travail sur l'ensemble du projet puis vous dire
|
Biome va alors faire son travail sur l'ensemble du projet puis vous dire
|
||||||
si des documents ont été reformatés (si vous avez fait `npx @biomejs/biome format --write`)
|
si des documents ont été reformatés (si vous avez fait `npx @biomejs/biome format --write`)
|
||||||
ou bien s'il y a des erreurs à réparer (si vous avez faire `npx @biomejs/biome lint`) ou les deux (si vous avez fait `npx @biomejs/biome check --write`).
|
ou bien s'il y a des erreurs à réparer
|
||||||
|
(si vous avez fait `npx @biomejs/biome lint`)
|
||||||
|
ou les deux (si vous avez fait `npx @biomejs/biome check --write`).
|
||||||
|
|
||||||
Appeler Biome en ligne de commandes avant de pousser votre code sur Github
|
Appeler Biome en ligne de commandes avant de pousser votre code sur Github
|
||||||
est une technique qui marche très bien.
|
est une technique qui marche très bien.
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ opérations, telles que la validation de formulaire.
|
|||||||
En effet, valider un formulaire demande beaucoup
|
En effet, valider un formulaire demande beaucoup
|
||||||
de travail de nettoyage des données et d'affichage
|
de travail de nettoyage des données et d'affichage
|
||||||
des messages d'erreur appropriés.
|
des messages d'erreur appropriés.
|
||||||
Or, tout ce travail existe déjà dans django.
|
Or, tout ce travail existe déjà dans Django.
|
||||||
|
|
||||||
On veut donc, dans ces cas-là, ne pas demander
|
On veut donc, dans ces cas-là, ne pas demander
|
||||||
toute une page HTML au serveur, mais uniquement
|
toute une page HTML au serveur, mais uniquement
|
||||||
@@ -84,7 +84,7 @@ Grâce à ça, on peut écrire des vues qui
|
|||||||
fonctionnent dans les deux contextes.
|
fonctionnent dans les deux contextes.
|
||||||
|
|
||||||
Par exemple, supposons que nous avons
|
Par exemple, supposons que nous avons
|
||||||
une `EditView` très simple, contenant
|
une `UpdateView` très simple, contenant
|
||||||
uniquement un formulaire.
|
uniquement un formulaire.
|
||||||
On peut écrire la vue et le template de la manière
|
On peut écrire la vue et le template de la manière
|
||||||
suivante :
|
suivante :
|
||||||
@@ -94,8 +94,10 @@ suivante :
|
|||||||
```python
|
```python
|
||||||
from django.views.generic import UpdateView
|
from django.views.generic import UpdateView
|
||||||
|
|
||||||
|
from core.views import AllowFragment
|
||||||
|
|
||||||
class FooUpdateView(UpdateView):
|
|
||||||
|
class FooUpdateView(AllowFragment, UpdateView):
|
||||||
model = Foo
|
model = Foo
|
||||||
fields = ["foo", "bar"]
|
fields = ["foo", "bar"]
|
||||||
pk_url_kwarg = "foo_id"
|
pk_url_kwarg = "foo_id"
|
||||||
@@ -132,7 +134,7 @@ Dans ces situations, pouvoir décomposer une vue
|
|||||||
en plusieurs vues de fragment permet de ne plus
|
en plusieurs vues de fragment permet de ne plus
|
||||||
raisonner en termes de condition, mais en termes
|
raisonner en termes de condition, mais en termes
|
||||||
de composition : on n'a pas un seul template
|
de composition : on n'a pas un seul template
|
||||||
qui peut changer les situations, on a plusieurs
|
qui peut changer selon les situations, on a plusieurs
|
||||||
templates que l'on injecte dans un template principal.
|
templates que l'on injecte dans un template principal.
|
||||||
|
|
||||||
Supposons, par exemple, que nous n'avons plus un,
|
Supposons, par exemple, que nous n'avons plus un,
|
||||||
@@ -238,10 +240,10 @@ qui se comportera alors comme une vue normale.
|
|||||||
|
|
||||||
#### La méthode `as_fragment`
|
#### La méthode `as_fragment`
|
||||||
|
|
||||||
Il est à noter que l'instantiation d'un fragment
|
Il est à noter que l'instanciation d'un fragment
|
||||||
se fait en deux étapes :
|
se fait en deux étapes :
|
||||||
|
|
||||||
- on commence par instantier la vue en tant que renderer.
|
- on commence par instancier la vue en tant que renderer.
|
||||||
- on appelle le renderer en lui-même
|
- on appelle le renderer en lui-même
|
||||||
|
|
||||||
Ce qui donne la syntaxe `Fragment.as_fragment()()`.
|
Ce qui donne la syntaxe `Fragment.as_fragment()()`.
|
||||||
|
|||||||
@@ -76,7 +76,7 @@ cd /mnt/<la_lettre_du_disque>/vos/fichiers/comme/dhab
|
|||||||
```bash
|
```bash
|
||||||
sudo pacman -Syu # on s'assure que les dépôts et le système sont à jour
|
sudo pacman -Syu # on s'assure que les dépôts et le système sont à jour
|
||||||
|
|
||||||
sudo pacman -S uv gcc git gettext pkgconf npm redis
|
sudo pacman -S uv gcc git gettext pkgconf npm valkey
|
||||||
```
|
```
|
||||||
|
|
||||||
=== "macOS"
|
=== "macOS"
|
||||||
|
|||||||
Reference in New Issue
Block a user