From 4fb014786e749a607ee7656adbc1905177d58042 Mon Sep 17 00:00:00 2001 From: devfzn Date: Thu, 12 Oct 2023 14:14:02 -0300 Subject: [PATCH] =?UTF-8?q?reorganizaci=C3=B3n=20docs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 28 ++++----- 01_user_api.md => docs/01_user_api.md | 58 +++++++++--------- 02_recipe_api.md => docs/02_recipe_api.md | 32 +++++----- 03_tag_api.md => docs/03_tag_api.md | 30 ++++----- .../04_ingredient_api.md | 34 +++++----- 05_image_api.md => docs/05_image_api.md | 28 ++++----- 06_filters.md => docs/06_filters.md | 12 ++-- .../imgs_readme}/api_swagger_00.png | Bin .../imgs_readme}/api_swagger_01.png | Bin .../imgs_readme}/api_swagger_02.png | Bin .../imgs_readme}/api_swagger_03.png | Bin .../imgs_readme}/api_swagger_04.png | Bin .../imgs_readme}/django_admin_00.png | Bin .../imgs_readme}/django_admin_01.png | Bin .../imgs_readme}/django_admin_02.png | Bin .../imgs_readme}/django_admin_03.png | Bin .../imgs_readme}/django_admin_04.png | Bin .../imgs_readme}/django_admin_05.png | Bin .../imgs_readme}/django_admin_06.png | Bin .../imgs_readme}/django_admin_07.png | Bin .../imgs_readme}/django_admin_08.png | Bin .../imgs_readme}/django_admin_09.png | Bin .../imgs_readme}/django_admin_10.png | Bin .../imgs_readme}/django_admin_11.png | Bin .../imgs_readme}/django_admin_12.png | Bin .../imgs_readme}/django_admin_13.png | Bin .../imgs_readme}/django_admin_14.png | Bin .../imgs_readme}/django_admin_15.png | Bin .../imgs_readme}/django_admin_16.png | Bin .../docker_services_timeline1.png | Bin .../docker_services_timeline2.png | Bin 31 files changed, 111 insertions(+), 111 deletions(-) rename 01_user_api.md => docs/01_user_api.md (94%) rename 02_recipe_api.md => docs/02_recipe_api.md (94%) rename 03_tag_api.md => docs/03_tag_api.md (94%) rename 04_ingredient_api.md => docs/04_ingredient_api.md (94%) rename 05_image_api.md => docs/05_image_api.md (94%) rename 06_filters.md => docs/06_filters.md (96%) rename {imgs_readme => docs/imgs_readme}/api_swagger_00.png (100%) rename {imgs_readme => docs/imgs_readme}/api_swagger_01.png (100%) rename {imgs_readme => docs/imgs_readme}/api_swagger_02.png (100%) rename {imgs_readme => docs/imgs_readme}/api_swagger_03.png (100%) rename {imgs_readme => docs/imgs_readme}/api_swagger_04.png (100%) rename {imgs_readme => docs/imgs_readme}/django_admin_00.png (100%) rename {imgs_readme => docs/imgs_readme}/django_admin_01.png (100%) rename {imgs_readme => docs/imgs_readme}/django_admin_02.png (100%) rename {imgs_readme => docs/imgs_readme}/django_admin_03.png (100%) rename {imgs_readme => docs/imgs_readme}/django_admin_04.png (100%) rename {imgs_readme => docs/imgs_readme}/django_admin_05.png (100%) rename {imgs_readme => docs/imgs_readme}/django_admin_06.png (100%) rename {imgs_readme => docs/imgs_readme}/django_admin_07.png (100%) rename {imgs_readme => docs/imgs_readme}/django_admin_08.png (100%) rename {imgs_readme => docs/imgs_readme}/django_admin_09.png (100%) rename {imgs_readme => docs/imgs_readme}/django_admin_10.png (100%) rename {imgs_readme => docs/imgs_readme}/django_admin_11.png (100%) rename {imgs_readme => docs/imgs_readme}/django_admin_12.png (100%) rename {imgs_readme => docs/imgs_readme}/django_admin_13.png (100%) rename {imgs_readme => docs/imgs_readme}/django_admin_14.png (100%) rename {imgs_readme => docs/imgs_readme}/django_admin_15.png (100%) rename {imgs_readme => docs/imgs_readme}/django_admin_16.png (100%) rename {imgs_readme => docs/imgs_readme}/docker_services_timeline1.png (100%) rename {imgs_readme => docs/imgs_readme}/docker_services_timeline2.png (100%) diff --git a/README.md b/README.md index 4208481..c989111 100644 --- a/README.md +++ b/README.md @@ -3,12 +3,12 @@ ## Contenido - [**Inicio**](./README.md) -- [User API](./01_user_api.md) -- [Recipe API](./02_recipe_api.md) -- [Tag API](./03_tag_api.md) -- [Ingredient API](./04_ingredient_api.md) -- [Image API](./05_image_api.md) -- [Filters](./06_filters.md) +- [User API](./docs/01_user_api.md) +- [Recipe API](./docs/02_recipe_api.md) +- [Tag API](./docs/03_tag_api.md) +- [Ingredient API](./docs/04_ingredient_api.md) +- [Image API](./docs/05_image_api.md) +- [Filters](./docs/06_filters.md) @@ -643,12 +643,12 @@ este corriendo)* ### Docker services timeline -![img](./imgs_readme/docker_services_timeline1.png) +![img](./docs/imgs_readme/docker_services_timeline1.png) La **solución** es hace que Django espere a la base de datos `db`. Este chequea la disponibilidad de la base de datos y continua cuando esta disponible -![img](./imgs_readme/docker_services_timeline2.png) +![img](./docs/imgs_readme/docker_services_timeline2.png) Comando personalizado de administración de Django en app **core** @@ -818,9 +818,9 @@ class Ingredient(models.Model): ---- - [**Inicio**](./README.md) -- [User API](./01_user_api.md) -- [Recipe API](./02_recipe_api.md) -- [Tag API](./03_tag_api.md) -- [Ingredient API](./04_ingredient_api.md) -- [Image API](./05_image_api.md) -- [Filters](./06_filters.md) +- [User API](./docs/01_user_api.md) +- [Recipe API](./docs/02_recipe_api.md) +- [Tag API](./docs/03_tag_api.md) +- [Ingredient API](./docs/04_ingredient_api.md) +- [Image API](./docs/05_image_api.md) +- [Filters](./docs/06_filters.md) diff --git a/01_user_api.md b/docs/01_user_api.md similarity index 94% rename from 01_user_api.md rename to docs/01_user_api.md index 6661efc..15a6c67 100644 --- a/01_user_api.md +++ b/docs/01_user_api.md @@ -72,7 +72,7 @@ ### Agregando Unitetst para el modelo usuario personalizado -[test_models.py](./app/core/tests/tests_models.py) +[test_models.py](../app/core/tests/tests_models.py) ```py from django.test import TestCase @@ -93,7 +93,7 @@ class ModelTests(TestCase): ## Agregar usuario personalizado al proyecto -[models.py](./app/core/models.py) +[models.py](../app/core/models.py) ```py from django.db import models @@ -149,7 +149,7 @@ Migrations for 'core': - Create model User ``` -Codigo autogenerado [0001_initial.py](./app/core/migrations/0001_initial.py) +Codigo autogenerado [0001_initial.py](../app/core/migrations/0001_initial.py) para app `core` Aplicar migraciones @@ -221,7 +221,7 @@ Destroying test database for alias 'default'... ### Test normalize email addresses -[test_models.py](./app/core/tests/test_models.py) +[test_models.py](../app/core/tests/test_models.py) ```py def test_new_user_email_normalized(self): @@ -237,7 +237,7 @@ Destroying test database for alias 'default'... self.assertEqual(user.email, expected) ``` -Modificar el `ceate_user` de [app/core/models.py](./app/core/models.py) +Modificar el `ceate_user` de [app/core/models.py](../app/core/models.py) para utilizar el método `normalize_email` que provee la clase **BaseUserManager** ```diff @@ -249,7 +249,7 @@ para utilizar el método `normalize_email` que provee la clase **BaseUserManager ### Test requerir email -[test_models.py](./app/core/tests/test_models.py) +[test_models.py](../app/core/tests/test_models.py) ```py def test_new_user_withouth_email_raises_error(self): @@ -258,7 +258,7 @@ para utilizar el método `normalize_email` que provee la clase **BaseUserManager get_user_model().objects.create_user('', 'test123') ``` -Modificar el `ceate_user` de [app/core/models.py](./app/core/models.py) +Modificar el `ceate_user` de [app/core/models.py](../app/core/models.py) y levantar excepción `ValueError` si usuario no ingresa un email ```py @@ -275,7 +275,7 @@ y levantar excepción `ValueError` si usuario no ingresa un email ### Test creación de super usuario -[test_models.py](./app/core/tests/test_models.py) +[test_models.py](../app/core/tests/test_models.py) ```py def test_create_superuser(self): @@ -289,7 +289,7 @@ y levantar excepción `ValueError` si usuario no ingresa un email ``` Creación del método `create_superuser` para la clase `UserManager` en -[app/core/models.py](./app/core/models.py) +[app/core/models.py](../app/core/models.py) ```py def create_superuser(self, email, password): @@ -324,7 +324,7 @@ Requiere muy poco cóidgo para ser usado ![img](./imgs_readme/django_admin_00.png) -Se activa por modelo, en [`admin.py`](./app/core/admin.py) +Se activa por modelo, en [`admin.py`](../app/core/admin.py) ### Personalización del administrador @@ -360,7 +360,7 @@ class UserAdmin(BaseUserAdmin): ### Creando test para el administrador -[`app/core/tests/test_models.py`](./app/core/tests/test_admin.py) +[`app/core/tests/test_models.py`](../app/core/tests/test_admin.py) ```py class AdminSiteTests(TestCase): @@ -398,7 +398,7 @@ Correr test `docker compose run --rm app sh -c "python manage.py test"` ### Activar admin para core app -En [`admin.py`](./app/core/admin.py) +En [`admin.py`](../app/core/admin.py) ```py from django.contrib import admin @@ -473,7 +473,7 @@ admin.site.register(models.User, UserAdmin) ### Actualizar clase `UserAdmin` para que use los campos personalizados -[app/core/admin.py](./app/core/admin.py) +[app/core/admin.py](../app/core/admin.py) ```py class UserAdmin(BaseUserAdmin): @@ -644,7 +644,7 @@ Activar `user` app en `settings.py` ### Test User API -[`app/user/tests/test_user_api.py`](./app/user/tests/test_user_api.py) +[`app/user/tests/test_user_api.py`](../app/user/tests/test_user_api.py) ```py CREATE_USER_URL = reverse('user:create') @@ -704,7 +704,7 @@ class PublicUserApiTest(TestCase): ### Creando funcionalidad de User API -- [serializers.py](./app/user/serializers.py) +- [serializers.py](../app/user/serializers.py) ```py from django.contrib.auth import get_user_model @@ -723,7 +723,7 @@ class PublicUserApiTest(TestCase): return get_user_model().objects.create_user(**validated_data) ``` -- [views.py](./app/user/views.py) +- [views.py](../app/user/views.py) ```py from rest_framework import generics @@ -734,7 +734,7 @@ class PublicUserApiTest(TestCase): serializer_class = UserSerializer ``` -- [urls.py](./app/user/urls.py) +- [urls.py](../app/user/urls.py) ```py from django.urls import path @@ -746,7 +746,7 @@ class PublicUserApiTest(TestCase): ] ``` -- [app/urls.py](./app/app/urls.py) +- [app/urls.py](../app/app/urls.py) ```py ... @@ -808,7 +808,7 @@ end ### Test token API Agregar tests en -[`app/user/tests/test_user_api.py`](./app/user/tests/test_user_api.py) +[`app/user/tests/test_user_api.py`](../app/user/tests/test_user_api.py) ```py ... @@ -860,7 +860,7 @@ class PublicUserApiTest(TestCase): ## Implementación Token API -- Añadir app `rest_framework.authtoken` en [settings.py](./app/app/settings.py) +- Añadir app `rest_framework.authtoken` en [settings.py](../app/app/settings.py) ```py INSTALLED_APPS = [ @@ -874,7 +874,7 @@ class PublicUserApiTest(TestCase): ### Creación del serlizador para token api -- [user/serializer.py](./app/user/serializers.py) +- [user/serializer.py](../app/user/serializers.py) ```py ... @@ -904,7 +904,7 @@ class PublicUserApiTest(TestCase): return attrs ``` -- vista [user/views.py](./app/user/views.py) +- vista [user/views.py](../app/user/views.py) ```py ... @@ -914,7 +914,7 @@ class PublicUserApiTest(TestCase): renderer_classes = api_settings.DEFAULT_RENDERER_CLASSES ``` -- urls [user/urls.py](./app/user/urls.py) +- urls [user/urls.py](../app/user/urls.py) ```py urlpatterns = [ @@ -925,7 +925,7 @@ class PublicUserApiTest(TestCase): ### Test administrar usuario -- [test_user_api.py](./app/user/tests/test_user_api.py) +- [test_user_api.py](../app/user/tests/test_user_api.py) ```py ... @@ -982,7 +982,7 @@ class PublicUserApiTest(TestCase): `me` endpoint - creación (sobrescritura) del método update -[serializer.py](./app/user/serializers.py) +[serializer.py](../app/user/serializers.py) ```py ... @@ -1009,7 +1009,7 @@ class PublicUserApiTest(TestCase): ... ``` -- vistas [views.py](./app/user/views.py) +- vistas [views.py](../app/user/views.py) ```py from rest_framework import generics, authentication, permissions @@ -1026,7 +1026,7 @@ class PublicUserApiTest(TestCase): return self.request.user ``` -- urls [urls.py](./app/user/urls.py) +- urls [urls.py](../app/user/urls.py) ```py urlpatterns = [ @@ -1043,9 +1043,9 @@ Ruta `localhost:8000/api/docs` ---- -- [Inicio](./README.md) +- [Inicio](../README.md) - [**User API**](./01_user_api.md) -- [Recipe API](./02_recipe_api) +- [Recipe API](./02_recipe_api.md) - [Tag API](./03_tag_api.md) - [Ingredient API](./04_ingredient_api.md) - [Image API](./05_image_api.md) diff --git a/02_recipe_api.md b/docs/02_recipe_api.md similarity index 94% rename from 02_recipe_api.md rename to docs/02_recipe_api.md index cbabe2f..dd3cf2c 100644 --- a/02_recipe_api.md +++ b/docs/02_recipe_api.md @@ -43,7 +43,7 @@ procesar estas peticiones ## Test Create Recipe -[core/tests/test_models.py](./app/core/tests/test_models.py) +[core/tests/test_models.py](../app/core/tests/test_models.py) ```py from decimal import Decimal @@ -74,7 +74,7 @@ class ModelTests(TestCase): ## Creación del modelo -[`core/models.py`](./app/core/models.py) +[`core/models.py`](../app/core/models.py) ```py ... @@ -97,7 +97,7 @@ class Recipe(models.Model): ### Agregar al panel de administración -[`core/admin.py`](./app/core/admin.py) +[`core/admin.py`](../app/core/admin.py) ```py ... @@ -129,7 +129,7 @@ Migrations for 'core': - Se crean directorio `reicpes/tests/` y su respecto `__init__.py` -- Añadir app `recipe` en [settings.py](./app/app/settings.py) +- Añadir app `recipe` en [settings.py](../app/app/settings.py) ```py INSTALLED_APPS = [ @@ -140,7 +140,7 @@ Migrations for 'core': ### Tests recipe API -[`recipe/tests/test_recipe_api.py`](./app/recipe/tests/test_recipe_api.py) +[`recipe/tests/test_recipe_api.py`](../app/recipe/tests/test_recipe_api.py) ```py ... @@ -216,7 +216,7 @@ class PrivateRecipeApiTests(TestCase): ### Serializador para Recetas -[`recipe/serializer.py`](./app/recipe/serializers.py) +[`recipe/serializer.py`](../app/recipe/serializers.py) ```py from rest_framework import serializers @@ -233,7 +233,7 @@ class RecipeSerializer(serializers.ModelSerializer): ### Vista Recetas -[`recipe/views.py`](./app/recipe/views.py) +[`recipe/views.py`](../app/recipe/views.py) ```py from rest_framework import viewsets @@ -256,7 +256,7 @@ class RecipeViewSet(viewsets.ModelViewSet): ### URLs Recetas -[`recipe/urls.py`](./app/recipe/urls.py) +[`recipe/urls.py`](../app/recipe/urls.py) ```py from django.urls import path, include @@ -273,7 +273,7 @@ urlpatterns = [ ] ``` -[`app/urls.py`](./app/app/urls.py) +[`app/urls.py`](../app/app/urls.py) ```py ... @@ -286,7 +286,7 @@ urlpatterns = [ ### Test detalles receta API -[`recipe/tests/test_recipe_api`](./app/recipe/tests/test_recipe_api.py) +[`recipe/tests/test_recipe_api`](../app/recipe/tests/test_recipe_api.py) ```py ... @@ -321,7 +321,7 @@ class PrivateRecipeApiTests(TestCase): ### Serializador para APIs detalles receta -['recipe/serializer.py'](./app/recipe/serializers.py) +['recipe/serializer.py'](../app/recipe/serializers.py) ```py ... @@ -340,7 +340,7 @@ Sobrescribiendo para usar `RecipeDetailSerializer`. Se añade la lógica para que al listar se utilice `RecipeSerializer` -[`recipe/views.py`](./app/recipe/views.py) +[`recipe/views.py`](../app/recipe/views.py) ```py ... @@ -358,7 +358,7 @@ class RecipeViewSet(viewsets.ModelViewSet): ### Test creación de receta a travez de la API -[`test_recipe_api.py`](./app/recipe/tests/test_recipe_api.py) +[`test_recipe_api.py`](../app/recipe/tests/test_recipe_api.py) ```py class PrivateRecipeApiTests(TestCase): @@ -385,7 +385,7 @@ Se hace la Comparación utilizando el método ### Implementación de vista para creación de receta -[`recipe/views.py`](./app/recipe/views.py) +[`recipe/views.py`](../app/recipe/views.py) ```py ... @@ -399,7 +399,7 @@ Se hace la Comparación utilizando el método ### Refactorizando test_recipe_api -[`test_recipe_api.py`](./app/recipe/tests/test_recipe_api.py) +[`test_recipe_api.py`](../app/recipe/tests/test_recipe_api.py) ```diff ... @@ -539,7 +539,7 @@ URL `localhost:8000/api/docs/` ---- -- [Inicio](./README.md) +- [Inicio](../README.md) - [User API](./01_user_api.md) - [**Recipe API**](./02_recipe_api.md) - [Tag API](./03_tag_api.md) diff --git a/03_tag_api.md b/docs/03_tag_api.md similarity index 94% rename from 03_tag_api.md rename to docs/03_tag_api.md index effb009..fe7bd0f 100644 --- a/03_tag_api.md +++ b/docs/03_tag_api.md @@ -19,7 +19,7 @@ ## Test Tag Model -[`core/tests/test_models.py`](./app/core/tests/test_models.py) +[`core/tests/test_models.py`](../app/core/tests/test_models.py) ```py ... @@ -42,7 +42,7 @@ def create_user(email='user@example.com', password='testpass123'): - `name` Nombre del tag a crear - `user` Usuario creador/dueño del tag -[`core/models.py`](./app/core/models.py) +[`core/models.py`](../app/core/models.py) ```py ... @@ -99,7 +99,7 @@ admin.site.register(models.Tag) ## Test tags API -[`recipe/tests/test_tags_api.py`](./app/recipe/tests/test_tags_api.py) +[`recipe/tests/test_tags_api.py`](../app/recipe/tests/test_tags_api.py) ```py ... @@ -159,7 +159,7 @@ class PrivateTagsApiTests(TestCase): ### Serializador Tag API -[`recipe/serializers.py`](./app/recipe/serializers.py) +[`recipe/serializers.py`](../app/recipe/serializers.py) ```py ... @@ -175,7 +175,7 @@ class TagSerializer(serializers.ModelSerializer): ### Views tags APIs -[`recipe/views.py`](./app/recipe/views.py) +[`recipe/views.py`](../app/recipe/views.py) ```py ... @@ -194,7 +194,7 @@ class TagViewSet(mixins.ListModelMixin, viewsets.GenericViewSet): ### URLS tags APIs -[`recipe/urls.py`](./app/recipe/urls.py) +[`recipe/urls.py`](../app/recipe/urls.py) ```py ... @@ -207,7 +207,7 @@ router.register('tags', views.TagViewSet) ### Test Update Tags -[`test_tags_api.py`](./app/recipe/tests/test_tags_api.py) +[`test_tags_api.py`](../app/recipe/tests/test_tags_api.py) ```py ... @@ -235,7 +235,7 @@ class PrivateTagsApiTests(TestCase): ### Implementación update tag -[`recipe/views.py`](./app/recipe/views.py) +[`recipe/views.py`](../app/recipe/views.py) ```py -class TagViewSet(mixins.ListModelMixin, viewsets.GenericViewSet): @@ -251,7 +251,7 @@ class PrivateTagsApiTests(TestCase): ### Test Deleting tags -[`test_tags_api.py`](./app/recipe/tests/test_tags_api.py) +[`test_tags_api.py`](../app/recipe/tests/test_tags_api.py) ```py def test_delete_tag(self): @@ -268,7 +268,7 @@ def test_delete_tag(self): ### Implementación borrar tag -[`recipe/views.py`](./app/recipe/views.py) +[`recipe/views.py`](../app/recipe/views.py) ```py -class TagViewSet(mixins.UpdateModelMixin, @@ -316,7 +316,7 @@ class RecipeSerializer(serializers.Serializer): ### Test crear tags a travez de la API recetas -[`tests/test_recipe_api.py`](./app/recipe/tests/test_recipe_api.py) +[`tests/test_recipe_api.py`](../app/recipe/tests/test_recipe_api.py) ```py from core.models import Tag @@ -372,7 +372,7 @@ from core.models import Tag ### Implementación creación de Tags al crear recetas -[recipe/serializers.py](./app/recipe/serializers.py) +[recipe/serializers.py](../app/recipe/serializers.py) ```py ... @@ -415,7 +415,7 @@ class RecipeSerializer(serializers.ModelSerializer): ### Test modificar tag asignado a receta -[`recipe/tests/test_recipe_api.py`](./app/recipe/tests/test_recipe_api.py) +[`recipe/tests/test_recipe_api.py`](../app/recipe/tests/test_recipe_api.py) ```py ... @@ -463,7 +463,7 @@ class RecipeSerializer(serializers.ModelSerializer): ### Implementación modificar tag asignado a receta -[`recipe/serializer.py`](./app/recipe/serializers.py) +[`recipe/serializer.py`](../app/recipe/serializers.py) ```py ... @@ -517,7 +517,7 @@ URL `localhost:8000/api/docs` ---- -- [Inicio](./README.md) +- [Inicio](../README.md) - [User API](./01_user_api.md) - [Recipe API](./02_recipe_api.md) - [**Tag API**](./03_tag_api.md) diff --git a/04_ingredient_api.md b/docs/04_ingredient_api.md similarity index 94% rename from 04_ingredient_api.md rename to docs/04_ingredient_api.md index 54dfab5..f71f23b 100644 --- a/04_ingredient_api.md +++ b/docs/04_ingredient_api.md @@ -35,7 +35,7 @@ ## Test Tag Model -[`tests/test_models.py`](./app/core/tests/test_models.py) +[`tests/test_models.py`](../app/core/tests/test_models.py) ```py ... @@ -56,7 +56,7 @@ - `name` Nombre del ingrediente a crear - `user` Usuario creador/dueño del ingrediente -[`core/models.py`](./app/core/models.py) +[`core/models.py`](../app/core/models.py) ```py ... @@ -93,7 +93,7 @@ Migrations for 'core': ### Agregar al administrador de django -[`app/core/admin.py`](./app/core/admin.py) +[`app/core/admin.py`](../app/core/admin.py) ```py admin.site.register(models.Ingredient) @@ -101,7 +101,7 @@ admin.site.register(models.Ingredient) ## Test para listar ingredientes -[`tests/test_ingredients_api.py`](./app/core/tests/test_ingredients_api.py) +[`tests/test_ingredients_api.py`](../app/core/tests/test_ingredients_api.py) ```py ... @@ -160,7 +160,7 @@ class PrivateIngredientsApiTests(TestCase): ### Serializador Ingredientes -[`recipe/serializers.py`](./app/recipe/serializers.py) +[`recipe/serializers.py`](../app/recipe/serializers.py) ```py ... @@ -179,7 +179,7 @@ class RecipeSerializer(serializers.ModelSerializer): ### Vistas Ingredients -[`recipe/views.py`](./app/recipe/views.py) +[`recipe/views.py`](../app/recipe/views.py) ```py class IngredientViewSet(mixin.ListModelMixin, viewsets.GenericViewSet): @@ -196,7 +196,7 @@ class IngredientViewSet(mixin.ListModelMixin, viewsets.GenericViewSet): ### URls Ingredientes -[recipe/urls.py](./app/recipe/urls.py) +[recipe/urls.py](../app/recipe/urls.py) ```py ... @@ -209,7 +209,7 @@ router.register('ingredients', views.IngredientViewSet) ### Test actualizar ingredientes -[`recipe/tests/test_ingredients_api.py`](./app/recipe/tests/test_ingredients_api.py) +[`recipe/tests/test_ingredients_api.py`](../app/recipe/tests/test_ingredients_api.py) ```py ... @@ -234,7 +234,7 @@ def detail_url(ingredient_id): ### Implementar funcionalidad actualizar ingredientes -[`recipe/views.py`](./app/recipe/views.py) +[`recipe/views.py`](../app/recipe/views.py) ```diff -class IngredientViewSet(mixins.ListModelMixin, viewsets.GenericViewSet): @@ -247,7 +247,7 @@ def detail_url(ingredient_id): ### Test eliminar ingredientes -[`test_ingredients_api.py`](./app/recipe/tests/test_ingredients_api.py) +[`test_ingredients_api.py`](../app/recipe/tests/test_ingredients_api.py) ```py def test_delete_ingredient(self): @@ -264,7 +264,7 @@ def detail_url(ingredient_id): ### Implementar funcionalidad actualizar ingredientes -[`recipe/views.py`](./app/recipe/views.py) +[`recipe/views.py`](../app/recipe/views.py) ```diff -class IngredientViewSet( @@ -278,7 +278,7 @@ def detail_url(ingredient_id): ### Test crear ingrediente -[`test_recipe_api.py`](./app/recipe/tests/test_recipe_api.py) +[`test_recipe_api.py`](../app/recipe/tests/test_recipe_api.py) ```py def test_create_recipe_with_new_ingredients(self): @@ -328,7 +328,7 @@ def detail_url(ingredient_id): ### Implementación funcionalidad crear ingredientes con receta -[`recipe/serializers.py`](./app/recipe/serializers.py) +[`recipe/serializers.py`](../app/recipe/serializers.py) ```diff ... @@ -371,7 +371,7 @@ class RecipeSerializer(serializers.ModelSerializer): ### Test actaulizar ingredientes -[`recipe/tests/test_ingredients_api.py`](./app/recipe/tests/test_ingredients_api.py) +[`recipe/tests/test_ingredients_api.py`](../app/recipe/tests/test_ingredients_api.py) ```py def test_create_ingredient_on_update(self): @@ -417,7 +417,7 @@ class RecipeSerializer(serializers.ModelSerializer): ### Implementación actualizar ingredientes -[`recipe/serializers.py`](./app/recipe/serializers.py) +[`recipe/serializers.py`](../app/recipe/serializers.py) ```diff def create(self, validated_data): @@ -454,7 +454,7 @@ TDD facilita esta labor, corriendo los tests para evaluar `TagViewSet/IngredientViewSet` Código muy similar, refactorización usando herencia -[`recipe/views.py`](./app/recipe/views.py) +[`recipe/views.py`](../app/recipe/views.py) ```diff + class BaseRecipeAtrrViewSet(mixins.DestroyModelMixin, @@ -509,7 +509,7 @@ herencia ---- -- [Inicio](./README.md) +- [Inicio](../README.md) - [User API](./01_user_api.md) - [Recipe API](./02_recipe_api.md) - [Tag API](./03_tag_api.md) diff --git a/05_image_api.md b/docs/05_image_api.md similarity index 94% rename from 05_image_api.md rename to docs/05_image_api.md index 7343496..16eaa78 100644 --- a/05_image_api.md +++ b/docs/05_image_api.md @@ -19,7 +19,7 @@ - zlib1g, zlib1g-dev - libjpeg-dev -[Dockerfile](./Dockerfile) +[Dockerfile](../Dockerfile) ```diff ... @@ -35,7 +35,7 @@ ... ``` -[`requirements.txt`](./requirements.txt) +[`requirements.txt`](../requirements.txt) ```txt Django==4.2.5 @@ -161,7 +161,7 @@ directorio `STATIC_ROOT` especificado en `settings.py` Subdirectorio para manejar archivos -[`Dockerfile`](./Dockerfile) +[`Dockerfile`](../Dockerfile) ```diff ... @@ -178,7 +178,7 @@ Subdirectorio para manejar archivos ... ``` -[`docker-compose`](./docker-compose.yml) +[`docker-compose`](../docker-compose.yml) ```diff ... @@ -198,7 +198,7 @@ EOF ### Actualizar `setttings.py` -[`settings.py`](./app/app/settings.py) +[`settings.py`](../app/app/settings.py) ```diff - STATIC_URL = 'static/' @@ -211,7 +211,7 @@ EOF ### Actualizar `app/urls.py` -[`app/urls.py`](./app/app/urls.py) +[`app/urls.py`](../app/app/urls.py) ```diff ... @@ -229,7 +229,7 @@ EOF ## Test agregar campo imagen en el modelo de receta -[`test_models.py`](./app/core/tests/test_models.py) +[`test_models.py`](../app/core/tests/test_models.py) ```py from unittest.mock import patch @@ -249,7 +249,7 @@ from unittest.mock import patch ## Implementación imagen en el modelo -[`models.py`](./app/core/models.py) +[`models.py`](../app/core/models.py) ```py import uuid @@ -292,7 +292,7 @@ Migrations for 'core': ### Test cargar/subir imagen -[`test_recipe_api.py`](./app/recipe/tests/test_recipe_api.py) +[`test_recipe_api.py`](../app/recipe/tests/test_recipe_api.py) ```py import tempfile @@ -353,7 +353,7 @@ Implementación de la funcionalidad para subir imagenes a travez de ### Serializador imagen receta -[`serializers.py`](./app/recipe/serializers.py) +[`serializers.py`](../app/recipe/serializers.py) ```py class RecipeImageSerializer(serializers.ModelSerializer): @@ -368,7 +368,7 @@ class RecipeImageSerializer(serializers.ModelSerializer): ### Vista imagen receta -[`recipe/views.py`](./app/recipe/views.py) +[`recipe/views.py`](../app/recipe/views.py) ```diff from rest_framework import ( @@ -406,7 +406,7 @@ class RecipeImageSerializer(serializers.ModelSerializer): ``` Para subir imagenes a travez de la interfaz web establecer la sgte. -configuración en [`settings.py`](./app/app/settings.py) +configuración en [`settings.py`](../app/app/settings.py) ```py SPECTACULAR_SETTINGS = { @@ -416,7 +416,7 @@ SPECTACULAR_SETTINGS = { ### Incluir imagen en detalle receta -[`serializers.py`](./app/recipe/serializers.py) +[`serializers.py`](../app/recipe/serializers.py) ```py class RecipeDetailSerializer(RecipeSerializer): @@ -440,7 +440,7 @@ Levantar aplicación `docker compose up` y visitar `locahost:8000/api/docs` ---- -- [Inicio](./README.md) +- [Inicio](../README.md) - [User API](./01_user_api.md) - [Recipe API](./02_recipe_api.md) - [Tag API](./03_tag_api.md) diff --git a/06_filters.md b/docs/06_filters.md similarity index 96% rename from 06_filters.md rename to docs/06_filters.md index 5cf0973..b95b77e 100644 --- a/06_filters.md +++ b/docs/06_filters.md @@ -48,7 +48,7 @@ elegir ## Test filtros -[`test_recipe_api.py`](./app/recipe/tests/test_recipe_api.py) +[`test_recipe_api.py`](../app/recipe/tests/test_recipe_api.py) ```py class PrivateRecipeApiTests(TestCase): @@ -99,7 +99,7 @@ class PrivateRecipeApiTests(TestCase): ## Implementación filtros -[`recipe/views.py`](./app/recipe/views.py) +[`recipe/views.py`](../app/recipe/views.py) ```py from drf_spectacular.types import OpenApiTypes @@ -153,7 +153,7 @@ class RecipeViewSet(viewsets.ModelViewSet): ## Test para filtrar por tags e ingredientes -[`test_ingredients_api.py`](./app/recipe/tests/test_ingredients_api.py) +[`test_ingredients_api.py`](../app/recipe/tests/test_ingredients_api.py) ```py from decimal import Decimal @@ -203,7 +203,7 @@ from core.model import Recipe self.assertEqual(len(res.data), 1) ``` -[`test_tags_api.py`](./app/recipe/tests/test_tags_api.py) +[`test_tags_api.py`](../app/recipe/tests/test_tags_api.py) ```py from decimal import Decimal @@ -255,7 +255,7 @@ from core.model import Recipe ## Implementación filtrado por tags e ingredientes -[`recipe/views.py`](./app/recipe/views.py) +[`recipe/views.py`](../app/recipe/views.py) ```py @extend_schema_view( @@ -293,7 +293,7 @@ class BaseRecipeAtrrViewSet(mixins.DestroyModelMixin, ---- -- [**Inicio**](./README.md) +- [**Inicio**](../README.md) - [User API](./01_user_api.md) - [Recipe API](./02_recipe_api.md) - [Tag API](./03_tag_api.md) diff --git a/imgs_readme/api_swagger_00.png b/docs/imgs_readme/api_swagger_00.png similarity index 100% rename from imgs_readme/api_swagger_00.png rename to docs/imgs_readme/api_swagger_00.png diff --git a/imgs_readme/api_swagger_01.png b/docs/imgs_readme/api_swagger_01.png similarity index 100% rename from imgs_readme/api_swagger_01.png rename to docs/imgs_readme/api_swagger_01.png diff --git a/imgs_readme/api_swagger_02.png b/docs/imgs_readme/api_swagger_02.png similarity index 100% rename from imgs_readme/api_swagger_02.png rename to docs/imgs_readme/api_swagger_02.png diff --git a/imgs_readme/api_swagger_03.png b/docs/imgs_readme/api_swagger_03.png similarity index 100% rename from imgs_readme/api_swagger_03.png rename to docs/imgs_readme/api_swagger_03.png diff --git a/imgs_readme/api_swagger_04.png b/docs/imgs_readme/api_swagger_04.png similarity index 100% rename from imgs_readme/api_swagger_04.png rename to docs/imgs_readme/api_swagger_04.png diff --git a/imgs_readme/django_admin_00.png b/docs/imgs_readme/django_admin_00.png similarity index 100% rename from imgs_readme/django_admin_00.png rename to docs/imgs_readme/django_admin_00.png diff --git a/imgs_readme/django_admin_01.png b/docs/imgs_readme/django_admin_01.png similarity index 100% rename from imgs_readme/django_admin_01.png rename to docs/imgs_readme/django_admin_01.png diff --git a/imgs_readme/django_admin_02.png b/docs/imgs_readme/django_admin_02.png similarity index 100% rename from imgs_readme/django_admin_02.png rename to docs/imgs_readme/django_admin_02.png diff --git a/imgs_readme/django_admin_03.png b/docs/imgs_readme/django_admin_03.png similarity index 100% rename from imgs_readme/django_admin_03.png rename to docs/imgs_readme/django_admin_03.png diff --git a/imgs_readme/django_admin_04.png b/docs/imgs_readme/django_admin_04.png similarity index 100% rename from imgs_readme/django_admin_04.png rename to docs/imgs_readme/django_admin_04.png diff --git a/imgs_readme/django_admin_05.png b/docs/imgs_readme/django_admin_05.png similarity index 100% rename from imgs_readme/django_admin_05.png rename to docs/imgs_readme/django_admin_05.png diff --git a/imgs_readme/django_admin_06.png b/docs/imgs_readme/django_admin_06.png similarity index 100% rename from imgs_readme/django_admin_06.png rename to docs/imgs_readme/django_admin_06.png diff --git a/imgs_readme/django_admin_07.png b/docs/imgs_readme/django_admin_07.png similarity index 100% rename from imgs_readme/django_admin_07.png rename to docs/imgs_readme/django_admin_07.png diff --git a/imgs_readme/django_admin_08.png b/docs/imgs_readme/django_admin_08.png similarity index 100% rename from imgs_readme/django_admin_08.png rename to docs/imgs_readme/django_admin_08.png diff --git a/imgs_readme/django_admin_09.png b/docs/imgs_readme/django_admin_09.png similarity index 100% rename from imgs_readme/django_admin_09.png rename to docs/imgs_readme/django_admin_09.png diff --git a/imgs_readme/django_admin_10.png b/docs/imgs_readme/django_admin_10.png similarity index 100% rename from imgs_readme/django_admin_10.png rename to docs/imgs_readme/django_admin_10.png diff --git a/imgs_readme/django_admin_11.png b/docs/imgs_readme/django_admin_11.png similarity index 100% rename from imgs_readme/django_admin_11.png rename to docs/imgs_readme/django_admin_11.png diff --git a/imgs_readme/django_admin_12.png b/docs/imgs_readme/django_admin_12.png similarity index 100% rename from imgs_readme/django_admin_12.png rename to docs/imgs_readme/django_admin_12.png diff --git a/imgs_readme/django_admin_13.png b/docs/imgs_readme/django_admin_13.png similarity index 100% rename from imgs_readme/django_admin_13.png rename to docs/imgs_readme/django_admin_13.png diff --git a/imgs_readme/django_admin_14.png b/docs/imgs_readme/django_admin_14.png similarity index 100% rename from imgs_readme/django_admin_14.png rename to docs/imgs_readme/django_admin_14.png diff --git a/imgs_readme/django_admin_15.png b/docs/imgs_readme/django_admin_15.png similarity index 100% rename from imgs_readme/django_admin_15.png rename to docs/imgs_readme/django_admin_15.png diff --git a/imgs_readme/django_admin_16.png b/docs/imgs_readme/django_admin_16.png similarity index 100% rename from imgs_readme/django_admin_16.png rename to docs/imgs_readme/django_admin_16.png diff --git a/imgs_readme/docker_services_timeline1.png b/docs/imgs_readme/docker_services_timeline1.png similarity index 100% rename from imgs_readme/docker_services_timeline1.png rename to docs/imgs_readme/docker_services_timeline1.png diff --git a/imgs_readme/docker_services_timeline2.png b/docs/imgs_readme/docker_services_timeline2.png similarity index 100% rename from imgs_readme/docker_services_timeline2.png rename to docs/imgs_readme/docker_services_timeline2.png