diff --git a/essenza/essenza/urls.py b/essenza/essenza/urls.py index e08e7df..8ee6270 100644 --- a/essenza/essenza/urls.py +++ b/essenza/essenza/urls.py @@ -1,106 +1,11 @@ from django.contrib import admin from django.urls import path, include -from django.http import HttpResponse from info.views import info_view -from product.views import EscaparateView -import user - -def home(request): - html = """ - - - Essenza - - - - i -

Bienvenidos a Essenza

-

Tu espacio online de cosmética natural, belleza y cuidado personal.

-

Explora nuestros productos, descubre nuevas fragancias y disfruta de la experiencia Essenza 🌸

- -
- Registro - Iniciar sesión - Continuar como invitado -
- - - """ - return HttpResponse(html) +from product.views import DashboardView urlpatterns = [ - path('', home, name='home'), path('info/', info_view, name='info-home'), path("user/", include("user.urls")), path('admin/', admin.site.urls), - path('escaparate/', EscaparateView.as_view(), name='escaparate') + path('', DashboardView.as_view(), name='dashboard') ] \ No newline at end of file diff --git a/essenza/product/views.py b/essenza/product/views.py index a99ceba..181bf31 100644 --- a/essenza/product/views.py +++ b/essenza/product/views.py @@ -1,6 +1,6 @@ from django.shortcuts import render from django.views import View -class EscaparateView(View): +class DashboardView(View): def get(self, request): - return render(request, 'product/escaparate.html') + return render(request, 'product/dashboard.html') diff --git a/essenza/templates/info/info.html b/essenza/templates/info/info.html index f398659..2581f6f 100644 --- a/essenza/templates/info/info.html +++ b/essenza/templates/info/info.html @@ -67,7 +67,7 @@ - Volver + Volver

Información Legal y Condiciones de Venta de Essenza

diff --git a/essenza/templates/product/dashboard.html b/essenza/templates/product/dashboard.html new file mode 100644 index 0000000..9022f47 --- /dev/null +++ b/essenza/templates/product/dashboard.html @@ -0,0 +1,250 @@ +{% load static %} + + + + + Escaparate · Essenza + + + + + + + +
+ i +
ESSENZA
+ + + +
+ +
+ + + +
+ + + + + \ No newline at end of file diff --git a/essenza/templates/product/escaparate.html b/essenza/templates/product/escaparate.html deleted file mode 100644 index 5fbbd77..0000000 --- a/essenza/templates/product/escaparate.html +++ /dev/null @@ -1,130 +0,0 @@ -{% load static %} - - - - - Escaparate · Essenza - - - - - -
-
ESSENZA
- - - - {% if user.is_authenticated %} - -
- {% csrf_token %} - -
- - {% else %} - - - Log in - - - {% endif %} -
- \ No newline at end of file diff --git a/essenza/templates/user/register.html b/essenza/templates/user/register.html index 1ff83b2..0c9d5a5 100644 --- a/essenza/templates/user/register.html +++ b/essenza/templates/user/register.html @@ -135,10 +135,7 @@

ESSENZA

{{ form.last_name }} - - - {{ form.username }} - + {{ form.email }} @@ -148,8 +145,8 @@

ESSENZA

{{ form.password2 }} - - {{ form.foto }} + + {{ form.photo }} {% if form.errors %}
diff --git a/essenza/user/forms.py b/essenza/user/forms.py index 70b77fa..66c8d85 100644 --- a/essenza/user/forms.py +++ b/essenza/user/forms.py @@ -26,7 +26,7 @@ class RegisterForm(UserCreationForm): label="Correo electrónico", required=True ) - foto = forms.ImageField( + photo = forms.ImageField( label="Foto (Opcional)", required=False ) @@ -35,4 +35,11 @@ class Meta(UserCreationForm.Meta): model = Usuario - fields = UserCreationForm.Meta.fields + ('first_name', 'last_name', 'email', 'foto') + fields = ('first_name', 'last_name', 'email', 'photo') + + def save(self, commit=True): + user = super().save(commit=False) + user.username = self.cleaned_data["email"] + if commit: + user.save() + return user diff --git a/essenza/user/tests.py b/essenza/user/tests.py index a65bb48..7948294 100644 --- a/essenza/user/tests.py +++ b/essenza/user/tests.py @@ -22,8 +22,7 @@ def setUp(self): password=self.password ) self.login_url = reverse("login") - self.home_url = reverse("home") - self.escaparate_url = reverse("escaparate") + self.dashboard_url = reverse("dashboard") #1. comprueba que la pagina de login carga correctamente def test_get_login_page_returns_200(self): @@ -32,12 +31,12 @@ def test_get_login_page_returns_200(self): self.assertContains(resp, "Iniciar sesión") self.assertContains(resp, "ESSENZA") - #2. si email y contraseña validas redirige al escaparate - def test_login_with_valid_email_redirects_escaparate(self): + #2. si email y contraseña validas redirige al dashboard + def test_login_with_valid_email_redirects_dashboard(self): data = {"email": self.email, "password": self.password} resp = self.client.post(self.login_url, data, follow=False) self.assertEqual(resp.status_code, 302, resp.content) - self.assertEqual(resp["Location"], self.escaparate_url) + self.assertEqual(resp["Location"], self.dashboard_url) #3. si email y contraseña no validas muestra error def test_login_with_invalid_passwordAndEmail_shows_error(self): @@ -64,7 +63,7 @@ def test_login_with_invalid_password_shows_error(self): class RegisterViewTests(TestCase): def setUp(self): self.register_url = reverse("register") - self.escaparate_url = reverse("escaparate") + self.dashboard_url = reverse("dashboard") self.initial_user_count = User.objects.count() # Datos para un nuevo usuario de prueba @@ -84,13 +83,13 @@ def test_get_register_page_returns_200(self): self.assertContains(resp, "Crear cuenta") self.assertContains(resp, "ESSENZA") - #2. Registro con datos válidos y redirige al escaparate (302) + #2. Registro con datos válidos y redirige al dashboard (302) def test_successful_registration_redirects_and_creates_user(self): data = self.valid_data.copy() resp = self.client.post(self.register_url, data, follow=False) self.assertEqual(resp.status_code, 302) - self.assertEqual(resp["Location"], self.escaparate_url) + self.assertEqual(resp["Location"], self.dashboard_url) self.assertEqual(User.objects.count(), self.initial_user_count + 1) new_user = User.objects.get(email=data['email']) @@ -146,30 +145,30 @@ def test_registration_with_valid_photo(self): ) data = self.valid_data.copy() - data['foto'] = photo + data['photo'] = photo resp = self.client.post(self.register_url, data, follow=False) self.assertEqual(resp.status_code, 302) new_user = User.objects.get(email=data['email']) - self.assertTrue(new_user.foto.name.startswith('images/test_photo')) + self.assertTrue(new_user.photo.name.startswith('images/test_photo')) # Elimina la foto creada - if new_user.foto: - if os.path.exists(new_user.foto.path): - os.remove(new_user.foto.path) + if new_user.photo: + if os.path.exists(new_user.photo.path): + os.remove(new_user.photo.path) #7. Registro sin campo 'foto' (opcional) es exitoso def test_registration_without_photo_is_successful(self): data = self.valid_data.copy() - if 'foto' in data: - del data['foto'] + if 'photo' in data: + del data['photo'] resp = self.client.post(self.register_url, data, follow=False) self.assertEqual(resp.status_code, 302) new_user = User.objects.get(email=data['email']) - self.assertFalse(new_user.foto) + self.assertFalse(new_user.photo) class LogoutViewTests(TestCase): def setUp(self): @@ -181,10 +180,10 @@ def setUp(self): ) self.login_url = reverse('login') self.logout_url = reverse('logout') - self.home_url = reverse('home') + self.dashboard_url = reverse('dashboard') # 1. Comprobar que un usuario logueado se desloguea y redirige correctamente - def test_logout_redirects_to_home_and_clears_session(self): + def test_logout_redirects_to_dashboard_and_clears_session(self): # Iniciar sesión self.client.login(username='logout@example.com', password='testlogout123') @@ -194,8 +193,8 @@ def test_logout_redirects_to_home_and_clears_session(self): # Hacer logout response = self.client.get(self.logout_url) - # Verificar redirección al home - self.assertRedirects(response, self.home_url) + # Verificar redirección al dashboard + self.assertRedirects(response, self.dashboard_url) # Verificar que se ha cerrado la sesión self.assertNotIn('_auth_user_id', self.client.session) @@ -210,9 +209,9 @@ def test_logout_deletes_session_cookie(self): self.assertIn('sessionid', response.cookies) cookie = response.cookies['sessionid'] self.assertTrue(cookie.value == '' or cookie['max-age'] == 0 or cookie['expires']) - self.assertRedirects(response, self.home_url) + self.assertRedirects(response, self.dashboard_url) # 3. Comprobar que un usuario no autenticado también redirige correctamente def test_logout_redirects_even_if_not_authenticated(self): response = self.client.get(self.logout_url) - self.assertRedirects(response, self.home_url) + self.assertRedirects(response, self.dashboard_url) diff --git a/essenza/user/urls.py b/essenza/user/urls.py index 26825a4..6c353e8 100644 --- a/essenza/user/urls.py +++ b/essenza/user/urls.py @@ -1,6 +1,4 @@ -from django.contrib import admin -from django.urls import include, path -from django.http import HttpResponse +from django.urls import path import user.views as views diff --git a/essenza/user/views.py b/essenza/user/views.py index 25774b6..9e4765e 100644 --- a/essenza/user/views.py +++ b/essenza/user/views.py @@ -2,17 +2,16 @@ from django.views import View from django.contrib.auth import authenticate, login, logout from .forms import LoginForm, RegisterForm -from .models import Usuario class LoginView(View): form_class = LoginForm template_name = 'user/login.html' def get(self, request, *args, **kwargs): - # Si el usuario ya está autenticado, lo mandamos a escaparate + # Si el usuario ya está autenticado, lo mandamos a dashboard logout(request) if request.user.is_authenticated: - return redirect('escaparate') + return redirect('dashboard') # Si no está autenticado, renderiza el formulario de login return render(request, self.template_name, {'form': self.form_class()}) @@ -27,8 +26,7 @@ def post(self, request, *args, **kwargs): if user is not None: login(request, user) - # Redirige al escaparate después del login - return redirect('escaparate') + return redirect('dashboard') else: # Si falla el login, muestra error en el formulario form.add_error(None, "Usuario o contraseña incorrectos") @@ -38,13 +36,13 @@ def post(self, request, *args, **kwargs): class LogoutView(View): def get(self, request): logout(request) - response = redirect('home') + response = redirect('dashboard') response.delete_cookie('sessionid') return response def post(self, request): logout(request) - response = redirect('home') + response = redirect('dashboard') response.delete_cookie('sessionid') return response @@ -61,6 +59,7 @@ def post(self, request, *args, **kwargs): if form.is_valid(): user = form.save() - return redirect('escaparate') + login(request, user) + return redirect('dashboard') return render(request, self.template_name, {'form': form}) \ No newline at end of file