147 lines
4.5 KiB
Markdown
147 lines
4.5 KiB
Markdown
# Exo 4.1 "Projet Django" - BOICHÉ Gauvain
|
|
|
|
Je déclare n'avoir pas utilisé l'IA sur ce projet au profit de la [documentation du cours](https://github.com/Laudroid/Live-Python-Web/blob/main/4-1-5-Cr%C3%A9ation-de-pages-web-simples-et-ge.md) et [celle de Django](https://docs.djangoproject.com/fr/3.1/ref/contrib/auth/).
|
|
|
|
# Exo 4.2 "Lister des équipements" - BOICHÉ Gauvain
|
|
|
|
Je déclare avoir utilisé l'IA dans ces cadres :
|
|
|
|
## Raison 1
|
|
|
|
Génération de "list.html"
|
|
|
|
### Pourquoi ?
|
|
|
|
Je n'aime pas l'HTML.
|
|
|
|
### Ce que j'en ai retenu
|
|
|
|
Tout le contenu donné semble correct.
|
|
|
|
## Raison 2
|
|
|
|
Pour déboguer la raison pour laquelle mon fichier "list.html" n'était pas trouvé par le projet.
|
|
|
|
### Ce que l'IA m'a répondu
|
|
|
|
> The template parc/list.html exists at templates/parc/list.html, but Django's app_directories loader is searching inside each app's own templates/ folder — not the project-level one.
|
|
|
|
> Fix: declare the project-level templates directory in TEMPLATES settings.
|
|
|
|
### Ce que j'ai rajouté
|
|
|
|
De :
|
|
|
|
```
|
|
TEMPLATES = [
|
|
{
|
|
'BACKEND': 'django.template.backends.django.DjangoTemplates',
|
|
'DIRS': [],
|
|
'APP_DIRS': True,
|
|
'OPTIONS': {
|
|
'context_processors': [
|
|
'django.template.context_processors.request',
|
|
'django.contrib.auth.context_processors.auth',
|
|
'django.contrib.messages.context_processors.messages',
|
|
],
|
|
},
|
|
},
|
|
]
|
|
```
|
|
|
|
à :
|
|
|
|
```
|
|
TEMPLATES = [
|
|
{
|
|
"BACKEND": "django.template.backends.django.DjangoTemplates",
|
|
"DIRS": [BASE_DIR / "templates"],
|
|
"APP_DIRS": True,
|
|
"OPTIONS": {
|
|
"context_processors": [
|
|
"django.template.context_processors.request",
|
|
"django.contrib.auth.context_processors.auth",
|
|
"django.contrib.messages.context_processors.messages",
|
|
],
|
|
},
|
|
},
|
|
]
|
|
```
|
|
|
|
### Conséquences
|
|
|
|
Ca ne marchait toujours pas, et l'IA m'a mis sur une piste à la noix qui n'est pas évidente : j'ai réorganisé un peu mon arborescence, et dans `settings.py` je devais faire ça :
|
|
|
|
```
|
|
# BASE_DIR = Path(__file__).resolve().parent.parent # old
|
|
BASE_DIR = Path(__file__).resolve().parent.parent.parent # new: 4_1/
|
|
```
|
|
|
|
# Exo 5.1 "Exiger Auth" - BOICHÉ Gauvain
|
|
|
|
Je déclare n'avoir pas usé d'IA au profit [de la documentation officielle](https://www.django-rest-framework.org/api-guide/authentication/#tokenauthentication).
|
|
|
|
Par contre je déclare l'avoir utilisé hier soir pour mettre tout d'a-plomb pour faire marcher l'application, en générant les patrons HTML notamment.
|
|
|
|
# Exo 5.2 "Cloisonner" - BOICHÉ Gauvain
|
|
|
|
J'allais l'utiliser, mais j'ai décidé de relire le cours pour `perform_create`. Des fois je pense que tout est trop compliqué.
|
|
|
|
# Exo 5.3 "Propiétés sensibles"
|
|
|
|
Je n'ai pas utilisé d'IA... en fait j'avais déjà fait ça :
|
|
|
|
```
|
|
from rest_framework import serializers
|
|
from .models import Equipment
|
|
|
|
class EquipmentSerializer(serializers.ModelSerializer):
|
|
class Meta:
|
|
model = Equipment
|
|
fields = ["id", "hostname", "ip", "is_active"]
|
|
# fields = ["id", "hostname", "description", "date_ajout", "is_active"]
|
|
```
|
|
|
|
Pris d'un cours précédent. Sécurité béton accidentelle.
|
|
|
|
### Si, j'en ai usé : Raison 1
|
|
|
|
Je voulais un script qui génère des utilisateurs, les jetons et tout directement après un gros HARD-RESET du projet (restructuration des dossiers)
|
|
|
|
### Raison 2
|
|
|
|
En voulant créer, depuis le compte "Bob" un équipement avec "owner": "Alice", j'obtiens malgré tout une réponse 201. Maintenant, la sécurité "marche" en soit parce que le "owner" passe à "Bob". Autant il ne peut PAS créer de réponse en tant qu'Alice, autant... et bien ce n'est pas ce que j'ai demandé.
|
|
|
|
J'ai passé l'info à une IA et elle a voulu tout ré-écrire pour... permettre à Bob de le faire pour Alice. J'ai reprécisé 4 fois le périmètre, pas moyen de lui faire comprendre.
|
|
|
|
J'ai fini par lui insulter ses grands morts et j'ai laissé comme ça.
|
|
|
|
# Eco 5.4 "Limiter conso"
|
|
|
|
Pas d'IA.
|
|
|
|
# Exo 5.5 "Durcir config"
|
|
|
|
## Raison 1
|
|
|
|
Usage pour bien définir les CORS et les hôtes.
|
|
|
|
### Avant
|
|
|
|
ALLOWED_HOSTS = ["127.0.0.1", "http://127.0.0.1", "localhost"]
|
|
CORS_ALLOWED_ORIGINS = ["127.0.0.1", "http://127.0.0.1", "localhost"]
|
|
|
|
### Après
|
|
|
|
```
|
|
ALLOWED_HOSTS = ["127.0.0.1", "localhost"]
|
|
CORS_ALLOWED_ORIGINS = ["http://127.0.0.1:8000", "http://localhost:8000"]
|
|
```
|
|
|
|
## Raison 2
|
|
|
|
Pour la journalisation, parce que c'était chaud comme bloc.
|
|
|
|
# Exo 5.6
|
|
|
|
Pas eu le temps. |