diff --git a/ReyMotaAppsDj/K8S/Makefile b/ReyMotaAppsDj/K8S/Makefile index d339bf5..5b2b31a 100644 --- a/ReyMotaAppsDj/K8S/Makefile +++ b/ReyMotaAppsDj/K8S/Makefile @@ -1,7 +1,7 @@ export ARQUITECTURA := $(shell lscpu |grep itectur | tr -d ' '| cut -f2 -d':') #export REGISTRY=registry.cube.local export REGISTRY=registry.reymota.es -export IMG_VERSION = 0.49 +export IMG_VERSION = 0.51 export IMG_NGINX_VERSION = 1.0 # limpia todo diff --git a/ReyMotaAppsDj/reymota/reymota/urls.py b/ReyMotaAppsDj/reymota/reymota/urls.py index a8e1cc8..de553ca 100644 --- a/ReyMotaAppsDj/reymota/reymota/urls.py +++ b/ReyMotaAppsDj/reymota/reymota/urls.py @@ -38,4 +38,6 @@ urlpatterns = [ path('entorno/', views.ver_variables_entorno, name='ver_variables_entorno'), + path('usuarios/', include("reymotausers.urls")), + ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) diff --git a/ReyMotaAppsDj/reymota/reymotausers/management/__init__.py b/ReyMotaAppsDj/reymota/reymotausers/management/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/ReyMotaAppsDj/reymota/reymotausers/management/commands/__init__.py b/ReyMotaAppsDj/reymota/reymotausers/management/commands/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/ReyMotaAppsDj/reymota/reymotausers/management/commands/importar_usuarios.py b/ReyMotaAppsDj/reymota/reymotausers/management/commands/importar_usuarios.py new file mode 100644 index 0000000..bfe07ce --- /dev/null +++ b/ReyMotaAppsDj/reymota/reymotausers/management/commands/importar_usuarios.py @@ -0,0 +1,48 @@ +import json +from django.core.management.base import BaseCommand +from reymotausers.models import ReyMotaUser + + +class Command(BaseCommand): + help = "Importa usuarios desde un archivo JSON" + + def add_arguments(self, parser): + parser.add_argument('archivo_json', type=str, help="Ruta del archivo JSON") + + def handle(self, *args, **kwargs): + archivo_json = kwargs['archivo_json'] + + try: + with open(archivo_json, 'r', encoding='utf-8') as file: + datos = json.load(file) + + self.stdout.write(self.style.WARNING(f"\nSe encontraron {len(datos)} usuarios en el archivo '{archivo_json}'.")) + confirmar = input("¿Deseas continuar con la importación? (s/n): ").strip().lower() + + if confirmar != 's': + self.stdout.write(self.style.ERROR("Importación cancelada.")) + return + + usuarios_creados = 0 + for usuario_data in datos: + creado = ReyMotaUser.objects.create( + foto=usuario_data['foto'], + password=usuario_data['password'], + is_superuser=usuario_data['is_superuser'], + is_staff=usuario_data['is_staff'], + is_active=usuario_data['is_active'], + nombre=usuario_data['nombre'], + email=usuario_data['email'], + groups=usuario_data['groups'], + user_permissions=usuario_data['user_permissions'], + last_login=usuario_data['last_login'] + ) + if creado: + usuarios_creados += 1 + + self.stdout.write(self.style.SUCCESS(f'Se importaron {usuarios_creados} usuarios correctamente.')) + + except FileNotFoundError: + self.stderr.write(self.style.ERROR(f"El archivo {archivo_json} no se encontró.")) + except json.JSONDecodeError: + self.stderr.write(self.style.ERROR("Error al leer el archivo JSON. Asegúrate de que el formato sea correcto.")) diff --git a/ReyMotaAppsDj/reymota/reymotausers/serializers.py b/ReyMotaAppsDj/reymota/reymotausers/serializers.py new file mode 100644 index 0000000..5b9c965 --- /dev/null +++ b/ReyMotaAppsDj/reymota/reymotausers/serializers.py @@ -0,0 +1,8 @@ +from rest_framework import serializers +from .models import ReyMotaUser + + +class ReyMotaUserSerializer(serializers.ModelSerializer): + class Meta: + model = ReyMotaUser + fields = '__all__' # Incluir todos los campos del modelo diff --git a/ReyMotaAppsDj/reymota/reymotausers/urls.py b/ReyMotaAppsDj/reymota/reymotausers/urls.py new file mode 100644 index 0000000..3207722 --- /dev/null +++ b/ReyMotaAppsDj/reymota/reymotausers/urls.py @@ -0,0 +1,9 @@ +from django.urls import path + +from . import views +from .views import api_lista_usuarios, api_detalle_usuario + +urlpatterns = [ + path('api/usuarios/', api_lista_usuarios, name='api_lista_usuarios'), + path('api/usuarios//', api_detalle_usuario, name='api_detalle_usuario'), +] diff --git a/ReyMotaAppsDj/reymota/reymotausers/views.py b/ReyMotaAppsDj/reymota/reymotausers/views.py index 91ea44a..0f86359 100644 --- a/ReyMotaAppsDj/reymota/reymotausers/views.py +++ b/ReyMotaAppsDj/reymota/reymotausers/views.py @@ -1,3 +1,29 @@ from django.shortcuts import render +from rest_framework.response import Response +from rest_framework.decorators import api_view + +from .serializers import ReyMotaUserSerializer + +from .models import ReyMotaUser + # Create your views here. + + +@api_view(['GET']) +def api_lista_usuarios(request): + """Devuelve la lista de todos los usuarios.""" + usuarios = ReyMotaUser.objects.all() + serializer = ReyMotaUserSerializer(usuarios, many=True) + return Response(serializer.data) + + +@api_view(['GET']) +def api_detalle_usuario(request, usuario_id): + """Devuelve los detalles de un usuario específico.""" + try: + usuario = ReyMotaUser.objects.get(id=usuario_id) + serializer = ReyMotaUserSerializer(usuario) + return Response(serializer.data) + except ReyMotaUser.DoesNotExist: + return Response({'error': 'Canción no encontrada'}, status=404)