views.py 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. # Imports
  2. import os
  3. from django.conf import settings
  4. from django.contrib.auth.decorators import user_passes_test
  5. from django.http import HttpResponseForbidden
  6. from django.shortcuts import render, get_object_or_404
  7. from django.utils import timezone
  8. from datetime import date
  9. from rest_framework import status
  10. from rest_framework.decorators import api_view
  11. from rest_framework.response import Response
  12. from eventos.models import Noticia, Evento
  13. from .serializers import AyudaSerializer
  14. from .models import Ayuda
  15. import markdown # Importa la biblioteca de markdown
  16. @user_passes_test(lambda u: u.is_staff)
  17. def ver_variables_entorno(request):
  18. if not settings.DEBUG:
  19. return HttpResponseForbidden("Acceso prohibido")
  20. # Variables a excluir por motivos de seguridad
  21. variables_excluidas = {'SECRET_KEY', 'DATABASES', 'EMAIL_HOST_PASSWORD', 'API_KEY'}
  22. # Obtiene todas las variables de entorno
  23. entorno = {key: os.getenv(key) for key in os.environ.keys() if key not in variables_excluidas}
  24. # Obtiene todas las variables de settings excluyendo las confidenciales
  25. configuracion = {
  26. key: getattr(settings, key) for key in dir(settings)
  27. if key.isupper() and key not in variables_excluidas
  28. }
  29. # Combina ambas en un solo diccionario
  30. contexto = {
  31. 'entorno': entorno,
  32. 'configuracion': configuracion
  33. }
  34. return render(request, 'ver_entorno.html', contexto)
  35. def principal(request):
  36. # Filtra solo las noticias publicadas
  37. noticias = Noticia.objects.filter(publicado=True)
  38. for noticia in noticias:
  39. print("Principal en gestion_reservas: ", noticia.titulo)
  40. return render(request, 'index.html', {'noticias': noticias})
  41. def ayuda(request):
  42. elementos_ayuda = Ayuda.objects.all().order_by('apartado')
  43. apartados = Ayuda.APARTADOS
  44. # Convierte la descripción de cada item a HTML usando Markdown
  45. for item in elementos_ayuda:
  46. item.descripcion = markdown.markdown(item.descripcion)
  47. return render(request, 'ayuda.html', {'elementos': elementos_ayuda, 'apartados': apartados})
  48. def acerca_de(request):
  49. context = {
  50. "app_name": settings.APP_NAME,
  51. "app_version": settings.APP_VERSION,
  52. "img_version": settings.IMG_VERSION
  53. }
  54. return render(request, "acerca_de.html", context)
  55. #
  56. # API
  57. #
  58. @api_view(['GET'])
  59. def api_lista_ayuda(request):
  60. """Devuelve la lista de toda la ayuda."""
  61. ayuda = Ayuda.objects.all()
  62. serializer = AyudaSerializer(ayuda, many=True)
  63. return Response(serializer.data)