# 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.