Browse Source

listo para enviar correos recordatorios

politica
Celestino Rey 9 months ago
parent
commit
cbe7e5c5d4
8 changed files with 38 additions and 14 deletions
  1. +8
    -7
      JugarAlPadel/K8S/Makefile
  2. +2
    -2
      JugarAlPadel/K8S/env-prod-configmap.yaml
  3. +0
    -0
      JugarAlPadel/K8S/pvc-jugaralpadel.yaml
  4. +0
    -0
      JugarAlPadel/K8S/pvc-postgresql.yaml
  5. +0
    -0
      JugarAlPadel/K8S/pvc-static.yaml
  6. +2
    -1
      JugarAlPadel/gestion_reservas/eventos/forms.py
  7. +6
    -4
      JugarAlPadel/gestion_reservas/eventos/views.py
  8. +20
    -0
      JugarAlPadel/gestion_reservas/templates/eventos/enviar_correo_inscritos.html

+ 8
- 7
JugarAlPadel/K8S/Makefile View File

@ -2,7 +2,7 @@ export ARQUITECTURA := $(shell lscpu |grep itectur | tr -d ' '| cut -f2 -d':')
#export REGISTRY=localhost:5000 #export REGISTRY=localhost:5000
export REGISTRY=registry.reymota.es export REGISTRY=registry.reymota.es
export IMG_VERSION = 0.63
export IMG_VERSION = 0.70
export IMG_NGINX_VERSION = 2.3 export IMG_NGINX_VERSION = 2.3
# limpia todo # limpia todo
@ -18,9 +18,9 @@ install:
-kubectl create -f env-prod-db-configmap.yaml -kubectl create -f env-prod-db-configmap.yaml
-kubectl create -f pv-local-jugaralpadel.yaml -kubectl create -f pv-local-jugaralpadel.yaml
-kubectl create -f jugaralpadel-prod-persistentvolumeclaim.yaml
-kubectl create -f static-volume-persistentvolumeclaim.yaml
-kubectl create -f postgres-data-persistentvolumeclaim.yaml
-kubectl create -f pvc-jugaralpadel.yaml
-kubectl create -f pvc-static.yaml
-kubectl create -f pvc-postgresql.yaml
-kubectl create -f db-deployment.yaml -kubectl create -f db-deployment.yaml
-kubectl create -f db-service.yaml -kubectl create -f db-service.yaml
@ -30,6 +30,7 @@ install:
-kubectl create -f nginx-service.yaml -kubectl create -f nginx-service.yaml
-kubectl create -f jugaralpadel-ingress.yaml -kubectl create -f jugaralpadel-ingress.yaml
clean: clean:
-envsubst < nginx-deployment.yaml |kubectl delete -f - -envsubst < nginx-deployment.yaml |kubectl delete -f -
-kubectl delete -f nginx-service.yaml -kubectl delete -f nginx-service.yaml
@ -41,9 +42,9 @@ clean:
-kubectl delete -f env-prod-configmap.yaml -kubectl delete -f env-prod-configmap.yaml
-kubectl delete -f env-prod-db-configmap.yaml -kubectl delete -f env-prod-db-configmap.yaml
-kubectl delete -f postgres-data-persistentvolumeclaim.yaml
-kubectl delete -f static-volume-persistentvolumeclaim.yaml
-kubectl delete -f jugaralpadel-prod-persistentvolumeclaim.yaml
-kubectl delete -f pvc-jugaralpadel.yaml
-kubectl delete -f pvc-static.yaml
-kubectl delete -f pvc-postgresql.yaml
-kubectl delete -f pv-local-jugaralpadel.yaml -kubectl delete -f pv-local-jugaralpadel.yaml
-kubectl delete -f reg-secret.yaml -kubectl delete -f reg-secret.yaml
-kubectl delete -f namespace.yaml -kubectl delete -f namespace.yaml


+ 2
- 2
JugarAlPadel/K8S/env-prod-configmap.yaml View File

@ -1,9 +1,9 @@
apiVersion: v1 apiVersion: v1
data: data:
DEBUG: "False"
DEBUG: "True"
ENTORNO: "Producción" ENTORNO: "Producción"
DJANGO_ALLOWED_HOSTS: "jugaralpadel.rancher.reymota.lab jugaralpadel.es jugaralpadel.ddns.net vmcluster k8s-server localhost 127.0.0.1 [::1]" DJANGO_ALLOWED_HOSTS: "jugaralpadel.rancher.reymota.lab jugaralpadel.es jugaralpadel.ddns.net vmcluster k8s-server localhost 127.0.0.1 [::1]"
CSRF_TRUSTED_ORIGINS: "http://jugaralpadel.rancher.reymota.lab https://jugaralpadel.ddns.net https://jugaralpadel.es http://vmcluster"
CSRF_TRUSTED_ORIGINS: "http://jugaralpadel.rancher.reymota.lab https://jugaralpadel.rancher.reymota.lab https://jugaralpadel.es http://vmcluster"
SECRET_KEY: change_me SECRET_KEY: change_me
SQL_DATABASE: jugaralpadel SQL_DATABASE: jugaralpadel
SQL_ENGINE: django.db.backends.postgresql SQL_ENGINE: django.db.backends.postgresql


JugarAlPadel/K8S/jugaralpadel-prod-persistentvolumeclaim.yaml → JugarAlPadel/K8S/pvc-jugaralpadel.yaml View File


JugarAlPadel/K8S/postgres-data-persistentvolumeclaim.yaml → JugarAlPadel/K8S/pvc-postgresql.yaml View File


JugarAlPadel/K8S/static-volume-persistentvolumeclaim.yaml → JugarAlPadel/K8S/pvc-static.yaml View File


+ 2
- 1
JugarAlPadel/gestion_reservas/eventos/forms.py View File

@ -22,4 +22,5 @@ class ListaEsperaForm(forms.ModelForm):
class MensajeCorreoForm(forms.Form): class MensajeCorreoForm(forms.Form):
asunto = forms.CharField(label="Asunto", max_length=200, required=True, widget=forms.TextInput(attrs={'class': 'form-control'})) asunto = forms.CharField(label="Asunto", max_length=200, required=True, widget=forms.TextInput(attrs={'class': 'form-control'}))
mensaje = forms.CharField(label="Mensaje", widget=forms.Textarea(attrs={'class': 'form-control', 'rows': 4}), required=True)
mensaje = forms.CharField(label="Mensaje", widget=forms.Textarea(attrs={'class': 'form-control', 'rows': 4}), required=True)

+ 6
- 4
JugarAlPadel/gestion_reservas/eventos/views.py View File

@ -300,6 +300,7 @@ def api_detalle_noticia(request, noticia_id):
def es_admin(user): def es_admin(user):
return user.is_staff return user.is_staff
@user_passes_test(es_admin) # Solo administradores pueden acceder @user_passes_test(es_admin) # Solo administradores pueden acceder
def enviar_correo_inscritos(request, evento_id): def enviar_correo_inscritos(request, evento_id):
evento = get_object_or_404(Evento, id=evento_id) evento = get_object_or_404(Evento, id=evento_id)
@ -307,13 +308,13 @@ def enviar_correo_inscritos(request, evento_id):
if not inscritos: if not inscritos:
messages.warning(request, "No hay usuarios inscritos en este evento.") messages.warning(request, "No hay usuarios inscritos en este evento.")
return redirect('detalle_evento', evento_id=evento.id)
return redirect('eventos:detalle_evento', evento_id=evento.id)
destinatarios = [reserva.usuario.email for reserva in inscritos if reserva.usuario.email] destinatarios = [reserva.usuario.email for reserva in inscritos if reserva.usuario.email]
if not destinatarios: if not destinatarios:
messages.warning(request, "No hay correos disponibles para los inscritos.") messages.warning(request, "No hay correos disponibles para los inscritos.")
return redirect('detalle_evento', evento_id=evento.id)
return redirect('eventos:detalle_evento', evento_id=evento.id)
if request.method == "POST": if request.method == "POST":
form = MensajeCorreoForm(request.POST) form = MensajeCorreoForm(request.POST)
@ -330,8 +331,9 @@ def enviar_correo_inscritos(request, evento_id):
) )
messages.success(request, f"Correo enviado a {len(destinatarios)} inscritos.") messages.success(request, f"Correo enviado a {len(destinatarios)} inscritos.")
return redirect('detalle_evento', evento_id=evento.id)
return redirect('eventos:detalle_evento', evento_id=evento.id)
else: else:
form = MensajeCorreoForm() form = MensajeCorreoForm()
return redirect('eventos:detalle_evento', evento_id=evento.id)
return render(request, 'eventos/enviar_correo_inscritos.html', {'form': form, 'evento': evento})

+ 20
- 0
JugarAlPadel/gestion_reservas/templates/eventos/enviar_correo_inscritos.html View File

@ -0,0 +1,20 @@
{% extends "base.html" %}
{% block content %}
<div class="container">
<h2>Enviar correo a los inscritos en "{{ evento.titulo }}"</h2>
<form method="post">
{% csrf_token %}
<div class="mb-3">
<label for="{{ form.asunto.id_for_label }}" class="form-label">Asunto</label>
{{ form.asunto }}
</div>
<div class="mb-3">
<label for="{{ form.mensaje.id_for_label }}" class="form-label">Mensaje</label>
{{ form.mensaje }}
</div>
<button type="submit" class="btn btn-primary">📧 Enviar Correo</button>
<a href="{% url 'eventos:lista_eventos' %}">Volver a la lista de eventos</a>
</form>
</div>
{% endblock %}

Loading…
Cancel
Save