| Author | SHA1 | Message | Date |
|---|---|---|---|
|
|
d8dbfc45be | Nota de cómo quedó la versión | 7 months ago |
|
|
43d17e3e6b | Preparación para hacer tests de la funcionalidad de la política de privacidad | 7 months ago |
|
|
dbbbc9dc42 |
Dejo como estaba lo de ver las variables de entorno.
Había quitado la restricción de ver variables de entorno solo cuando estuviese el DEBUG activado. Lo he vuelto a dejar así, por seguridad. |
7 months ago |
|
|
08a6ba7fd7 | Quito APP_VERSION | 7 months ago |
|
|
2bbbfd1c5f | Estadísticas de usuarios | 7 months ago |
|
|
9396c66d11 | Versión como variable de entorno en settings | 7 months ago |
|
|
c15a9ed2cc | Arreglo en template | 7 months ago |
|
|
ebc3c8a189 | No mostrar botones en eventos pasados | 7 months ago |
|
|
ef8a0b37d0 | Funcionalidad para política de privacidad | 8 months ago |
| @ -0,0 +1,57 @@ | |||
| # Notas de la versión | |||
| Los cambios presentes en esta rama eran, principalmente, para incluir una página con la política de privacidad. | |||
| Además, incluía alguna otra mejora, como las estadísticas de usuario y un Acerca de. | |||
| Estas dos últimas no descarto pasarlas a la rama main. | |||
| Finalmente, después de preparar todo para el lanzamiento, Mónica decidió no incluirlo ya que no merecía la pena. | |||
| ## Correo para probar los cambios sobre política de privacidad. | |||
| ### ¿Qué tengo que hacer? | |||
| - Desactivar usuarios | |||
| - Enviar correo de reactivación | |||
| ### ¿Qué tienen que probar? | |||
| - Que no tienen acceso a la web. | |||
| - Que reciben un correo con las instrucciones | |||
| - Que leen la política de privacidad y envían comentarios o que está correcto. | |||
| - Que una vez seguidas vuelven a tener acceso | |||
| - | |||
| ### Testers: | |||
| melsilgar@hotmail.com | |||
| sergiofer0307@gmail.com | |||
| monvega67@gmail.com | |||
| padelycervezas1974@gmail.com | |||
| Hola, | |||
| Gracias por participar en la prueba de las nuevas funcionalidades de la aplicación de reservas de pozos. | |||
| Vamos a trabajar sobre un entorno de desarrollo cuya direccion es http://jalp.reymota.es | |||
| Hay dos cambios importantes: | |||
| 1. La direccion de correo del administrador ahora es admin@jugaralpadel.es con lo que tienes que asegurarte de que esta direccion no aparece en el buzón de no deseados de tu correo. | |||
| 2. Hemos introducido una página con la política de privacidad. Cuando un usuario nuevo se registre, tendrá que aceptar la política para poder darse de alta. Para los que ya estamos, necesitamos ‘forzar’ la desconexión de vuestra cuenta y volver a activarla. Para ello, vais a recibir un correo de la direccion de arriba (punto 1) con las instrucciones. Básicamente, tenéis que seguir el enlace y aceptar la política. | |||
| ¿Qué tenéis que probar? | |||
| 1. Durante el día de hoy, lunes 21 de abril de 2025, tendréis acceso a la web http://jalp.reymota.es. Vuestras credenciales son las mismas que la página oficial. Simplemente verificad que podéis entrar y ver los pozos que hay. ¡Ojo! Son datos antiguos, no son los reales. | |||
| 2. Mañana día 22 de abril de 2025 tenéis que comprobar que NO tenéis acceso a la página http://jalp.reymota.es | |||
| 3. En la tarde del día 22, deberíais recibir el correo desde la direccion admin@jugaralpadel.es con instrucciones de cómo aceptar la política de privacidad. | |||
| 4. Comprobad que pincháis en el enlace y este os lleva a una página donde tenéis que marcar que aceptáis la política de privacidad. Leedla y enviadnos comentarios o que os parece bien. | |||
| 5. Verificad que, una vez seguido el enlace y aceptado la política, volvéis a tener acceso a la página http://jalp.reymota.es. | |||
| Esto es para probar que todo funciona bien. Cuando esté terminada la prueba, lo haremos desde la página oficial y volveréis a recibir el correo con las instrucciones y tal, pero esta vez desde la direccion https://jugaralpade.es. El correo ya va a ser siempre admin@jugaralpadel.es | |||
| Para cualquier duda, ya sabéis donde estoy. | |||
| @ -1,7 +1,12 @@ | |||
| from django.conf import settings | |||
| from datetime import date | |||
| def app_version(request): | |||
| return { | |||
| 'APP_VERSION': settings.APP_VERSION | |||
| } | |||
| def base_context(request): | |||
| return {'year': date.today().year} | |||
| @ -0,0 +1,11 @@ | |||
| from django.core.management.base import BaseCommand | |||
| from reymotausers.models import ReyMotaUser | |||
| class Command(BaseCommand): | |||
| help = "Desactivar usuarios antiguos antes de la política de privacidad" | |||
| def handle(self, *args, **kwargs): | |||
| usuarios_actualizados = ReyMotaUser.objects.filter(is_active=True, is_staff=False).update(is_active=False) | |||
| self.stdout.write(self.style.SUCCESS(f"Usuarios desactivados: {usuarios_actualizados}")) | |||
| @ -0,0 +1,14 @@ | |||
| from django.core.management.base import BaseCommand | |||
| from reymotausers.models import ReyMotaUser | |||
| from reymotausers.utils import enviar_correo_reactivacion | |||
| class Command(BaseCommand): | |||
| help = "Enviar correos a usuarios desactivados para aceptar la política de privacidad" | |||
| def handle(self, *args, **kwargs): | |||
| usuarios = ReyMotaUser.objects.filter(is_active=False) | |||
| for usuario in usuarios: | |||
| enviar_correo_reactivacion(usuario) | |||
| self.stdout.write(self.style.SUCCESS(f"Correos enviados a {usuarios.count()} usuarios.")) | |||
| @ -0,0 +1,11 @@ | |||
| from django.core.management.base import BaseCommand | |||
| from reymotausers.models import ReyMotaUser | |||
| class Command(BaseCommand): | |||
| help = "Reactivar usuarios" | |||
| def handle(self, *args, **kwargs): | |||
| usuarios_actualizados = ReyMotaUser.objects.filter(is_active=False, is_staff=False).update(is_active=True) | |||
| self.stdout.write(self.style.SUCCESS(f"Usuarios reactivados: {usuarios_actualizados}")) | |||
| @ -0,0 +1,11 @@ | |||
| from django.db.models.signals import post_save | |||
| from django.dispatch import receiver | |||
| from django.conf import settings | |||
| from .models import PerfilUsuario, ReyMotaUser | |||
| @receiver(post_save, sender=settings.AUTH_USER_MODEL) | |||
| def crear_perfil(sender, instance, created, **kwargs): | |||
| if created: | |||
| PerfilUsuario.objects.create(usuario=instance) | |||
| @ -1,9 +1,10 @@ | |||
| from django.urls import path | |||
| from . import views | |||
| from .views import api_lista_usuarios, api_detalle_usuario | |||
| from .views import api_lista_usuarios, api_detalle_usuario, reactivar_cuenta | |||
| urlpatterns = [ | |||
| path('api/usuarios/', api_lista_usuarios, name='api_lista_usuarios'), | |||
| path('api/usuarios/<int:usuario_id>/', api_detalle_usuario, name='api_detalle_usuario'), | |||
| path("reactivar/<uuid:token>/", reactivar_cuenta, name="reactivar_cuenta"), | |||
| ] | |||
| @ -0,0 +1,31 @@ | |||
| from django.core.mail import send_mail | |||
| from django.conf import settings | |||
| from django.urls import reverse | |||
| def enviar_correo_reactivacion(usuario): | |||
| perfil = usuario.perfilusuario | |||
| perfil.generar_nuevo_token() # Generar un nuevo token | |||
| enlace = f"{settings.SITE_URL}{reverse('reactivar_cuenta', args=[perfil.token_activacion])}" | |||
| asunto = "Reactivación de tu cuenta - Política de Privacidad" | |||
| mensaje = f""" | |||
| Hola {usuario.nombre}, | |||
| Para cumplir con la nueva normativa de privacidad, hemos desactivado temporalmente tu cuenta. | |||
| Por favor, acepta la política de privacidad en el siguiente enlace para volver a activarla: | |||
| {enlace} | |||
| Saludos, | |||
| El equipo de soporte | |||
| """ | |||
| send_mail( | |||
| asunto, | |||
| mensaje, | |||
| settings.DEFAULT_FROM_EMAIL, | |||
| [usuario.email] | |||
| ) | |||
| @ -0,0 +1,21 @@ | |||
| {% extends "base.html" %} | |||
| {% block content %} | |||
| <div class="container-xl"> | |||
| <h1 class="app-page-title">Acerca de...</h1> | |||
| <div class="row g-4"> | |||
| <div class="col-12 col-md-6"> | |||
| <div class="app-card app-card-basic d-flex flex-column align-items-start shadow-sm"> | |||
| <div class="app-card-body px-4"> | |||
| <ul class="list-unstyled"> | |||
| <li><strong>Nombre de la aplicación:</strong> {{ app_name }}</li> | |||
| <li><strong>Versión:</strong> {{ app_version }}</li> | |||
| <li><strong>Versión de la imagen:</strong> {{ img_version }}</li> | |||
| </ul> | |||
| </div><!--//app-card-body--> | |||
| </div><!--//app-card--> | |||
| </div><!--//col--> | |||
| </div><!--//row--> | |||
| </div> | |||
| {% endblock %} | |||
| @ -0,0 +1,23 @@ | |||
| {% extends "base.html" %} | |||
| {% block content %} | |||
| <h2>Estadísticas de Inscripciones por Usuario</h2> | |||
| <table class="table table-bordered"> | |||
| <thead> | |||
| <tr> | |||
| <th>Usuario</th> | |||
| <th>Eventos inscritos</th> | |||
| </tr> | |||
| </thead> | |||
| <tbody> | |||
| {% for usuario in usuarios %} | |||
| <tr> | |||
| <td>{{ usuario.get_full_name|default:usuario.nombre }}</td> | |||
| <td>{{ usuario.num_eventos }}</td> | |||
| </tr> | |||
| {% endfor %} | |||
| </tbody> | |||
| </table> | |||
| {% endblock %} | |||
| @ -0,0 +1,57 @@ | |||
| {% extends "base.html" %} | |||
| {% block content %} | |||
| <div class="container mt-4"> | |||
| <h2>Política de Privacidad</h2> | |||
| <p>Última actualización: {{ fecha_actual }}</p> | |||
| <h3>1. Responsable del tratamiento</h3> | |||
| <p>El responsable del tratamiento de los datos personales es <strong>Raúl Fernández Suárez</strong>, con dirección en <strong>Calle Ravena, 7 - 28032 Madrid</strong> y correo electrónico <strong>admin@jugaralpadel.es</strong>.</p> | |||
| <h3>2. Datos que recopilamos</h3> | |||
| <p>Recopilamos los siguientes datos personales cuando te registras en nuestra plataforma y reservas eventos:</p> | |||
| <ul> | |||
| <li>Nombre y apellidos</li> | |||
| <li>Correo electrónico</li> | |||
| <li>Información sobre las reservas realizadas</li> | |||
| </ul> | |||
| <h3>3. Finalidad del tratamiento</h3> | |||
| <p>Utilizamos tus datos personales para:</p> | |||
| <ul> | |||
| <li>Gestionar las reservas en eventos</li> | |||
| <li>Enviarte confirmaciones y actualizaciones sobre los eventos</li> | |||
| <li>Enviar información relevante sobre la plataforma (solo si has dado tu consentimiento)</li> | |||
| </ul> | |||
| <h3>4. Base legal del tratamiento</h3> | |||
| <p>El tratamiento de tus datos se basa en:</p> | |||
| <ul> | |||
| <li>Tu consentimiento, que puedes retirar en cualquier momento</li> | |||
| <li>La necesidad de procesar datos para la ejecución de un contrato (gestión de eventos y reservas)</li> | |||
| <li>Obligaciones legales aplicables</li> | |||
| </ul> | |||
| <h3>5. ¿Cuánto tiempo guardamos los datos?</h3> | |||
| <p>Conservamos tus datos mientras tengas una cuenta en nuestra plataforma o hasta que solicites su eliminación.</p> | |||
| <h3>6. Derechos del usuario</h3> | |||
| <p>De acuerdo con el RGPD, tienes derecho a:</p> | |||
| <ul> | |||
| <li>Acceder a tus datos personales</li> | |||
| <li>Rectificar datos inexactos</li> | |||
| <li>Solicitar la eliminación de tus datos</li> | |||
| <li>Oponerte al tratamiento de datos para ciertos fines</li> | |||
| <li>Solicitar la portabilidad de tus datos</li> | |||
| </ul> | |||
| <p>Para ejercer estos derechos, contacta con nosotros en <strong>admin@jugaralpadel.es</strong>.</p> | |||
| <h3>7. Seguridad de los datos</h3> | |||
| <p>Aplicamos medidas de seguridad para proteger los datos contra accesos no autorizados, pérdidas o alteraciones.</p> | |||
| <h3>8. Contacto</h3> | |||
| <p>Si tienes preguntas sobre esta política, puedes contactarnos en <strong>admin@jugaralpadel.es</strong>.</p> | |||
| </div> | |||
| {% endblock %} | |||
| @ -0,0 +1,19 @@ | |||
| {% extends "base.html" %} | |||
| {% block content %} | |||
| <div class="container"> | |||
| <h2>Reactivar cuenta</h2> | |||
| <p>Hola, {{ usuario.nombre }}. Para continuar usando nuestra plataforma, debes aceptar la política de privacidad.</p> | |||
| <form method="post"> | |||
| {% csrf_token %} | |||
| <label> | |||
| <input type="checkbox" name="aceptar_politica" required> | |||
| Acepto la <a href="{% url 'politica_privacidad' %}" target="_blank">Política de Privacidad</a> | |||
| </label> | |||
| <br><br> | |||
| <button type="submit" class="btn btn-success">Aceptar y Reactivar</button> | |||
| </form> | |||
| </div> | |||
| {% endblock %} | |||