From d8191caf1b79f1055be22eab1b3ac83e4973d95c Mon Sep 17 00:00:00 2001 From: xgc1564 Date: Fri, 7 Nov 2025 11:53:46 +0100 Subject: [PATCH 1/3] commit --- essenza/db.sqlite3 | Bin 155648 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 essenza/db.sqlite3 diff --git a/essenza/db.sqlite3 b/essenza/db.sqlite3 deleted file mode 100644 index 682e0b4f15fe4efdc30a5b3c7a46ed18a685b9a6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 155648 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 CXAb`W From e1dd8168f7ce67bfb486e44038bbd0fc393aeb5d Mon Sep 17 00:00:00 2001 From: xgc1564 Date: Fri, 7 Nov 2025 13:45:59 +0100 Subject: [PATCH 2/3] Funcionalidad login implementada --- essenza/essenza/settings.py | 5 ++- essenza/essenza/urls.py | 51 ++++++++++++++------- essenza/templates/user/login.html | 73 +++++++++++++++++++++++++++++++ essenza/user/forms.py | 12 +++++ essenza/user/models.py | 8 +++- essenza/user/urls.py | 9 ++++ essenza/user/views.py | 35 ++++++++++++++- 7 files changed, 172 insertions(+), 21 deletions(-) create mode 100644 essenza/templates/user/login.html create mode 100644 essenza/user/forms.py create mode 100644 essenza/user/urls.py diff --git a/essenza/essenza/settings.py b/essenza/essenza/settings.py index 229be2ec..82d2accb 100644 --- a/essenza/essenza/settings.py +++ b/essenza/essenza/settings.py @@ -58,7 +58,7 @@ TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', - 'DIRS': [], + 'DIRS': [ BASE_DIR / 'templates' ], 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ @@ -119,11 +119,12 @@ # https://docs.djangoproject.com/en/5.2/howto/static-files/ STATIC_URL = 'static/' - +STATICFILES_DIRS = [BASE_DIR / 'static'] # Default primary key field type # https://docs.djangoproject.com/en/5.2/ref/settings/#default-auto-field DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField' + # ----------------------------------------------------------------- # SOLUCIÓN AL ERROR E304 # Especifica que nuestro modelo 'Usuario' en la app 'user' diff --git a/essenza/essenza/urls.py b/essenza/essenza/urls.py index 05f4b114..357120b9 100644 --- a/essenza/essenza/urls.py +++ b/essenza/essenza/urls.py @@ -1,5 +1,5 @@ from django.contrib import admin -from django.urls import path +from django.urls import path, include from django.http import HttpResponse from info import views @@ -15,8 +15,7 @@ def home(request): text-align: center; padding-top: 100px; color: #444; - /* Aseguramos que el cuerpo permita posicionamiento absoluto para el botón */ - position: relative; + position: relative; } h1 { color: #c06b3e; @@ -27,36 +26,55 @@ def home(request): font-size: 20px; color: #555; } - /* Estilo para el botón de Información (simulando la 'i' del mockup) */ .info-button { position: absolute; - top: 20px; /* Distancia desde la parte superior */ - left: 20px; /* Distancia desde la izquierda */ + top: 20px; + left: 20px; width: 30px; height: 30px; - background-color: #c06b3e; /* Color corporativo o distintivo */ - border-radius: 50%; /* Forma circular */ + background-color: #c06b3e; + border-radius: 50%; text-align: center; - line-height: 30px; /* Centra verticalmente la 'i' */ + line-height: 30px; font-size: 18px; font-weight: bold; color: white; - text-decoration: none; /* Elimina el subrayado del enlace */ + text-decoration: none; cursor: pointer; - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); + box-shadow: 0 2px 4px rgba(0,0,0,0.2); transition: background-color 0.3s; } - .info-button:hover { - background-color: #a35a34; /* Oscurece al pasar el ratón */ + .info-button:hover { background-color: #a35a34; } + .login-button { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + padding: 15px 35px; + background-color: #c06b3e; + color: white; + font-size: 20px; + font-weight: bold; + border: none; + border-radius: 10px; + cursor: pointer; + box-shadow: 0 4px 8px rgba(0,0,0,0.2); + text-decoration: none; + transition: background-color 0.3s, transform 0.2s; + } + .login-button:hover { + background-color: #a35a34; + transform: translate(-50%, -50%) scale(1.05); } 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 🌸

+ + """ @@ -65,6 +83,9 @@ def home(request): urlpatterns = [ path('', home, name='home'), path('info/', views.info_view, name='info-home'), - path('admin/', admin.site.urls), + path("user/", include("user.urls")), + path('user/login/', include('user.urls')), + path("accounts/", include("django.contrib.auth.urls")), + path('admin/', admin.site.urls) ] diff --git a/essenza/templates/user/login.html b/essenza/templates/user/login.html new file mode 100644 index 00000000..95a77136 --- /dev/null +++ b/essenza/templates/user/login.html @@ -0,0 +1,73 @@ +{% load static %} + + + + + Iniciar sesión · Essenza + + + + + + + +
+
ESSENZA
+ + +
+ + + diff --git a/essenza/user/forms.py b/essenza/user/forms.py new file mode 100644 index 00000000..3943885f --- /dev/null +++ b/essenza/user/forms.py @@ -0,0 +1,12 @@ +# user/forms.py +from django import forms + +class LoginForm(forms.Form): + email = forms.CharField( + label="Correo electrónico o usuario", + widget=forms.TextInput(attrs={"placeholder": "Introduce tu correo o usuario"}) + ) + password = forms.CharField( + label="Contraseña", + widget=forms.PasswordInput(attrs={"placeholder": "Introduce tu contraseña"}) + ) diff --git a/essenza/user/models.py b/essenza/user/models.py index 334e6577..76688e1c 100644 --- a/essenza/user/models.py +++ b/essenza/user/models.py @@ -9,6 +9,10 @@ class Usuario(AbstractUser): foto = models.ImageField(upload_to='images/', null=True, blank=True) role = models.CharField(max_length=10, choices=Role.choices, default=Role.USER) - + email = models.EmailField(unique=True) # <-- aseguramos emails únicos + + USERNAME_FIELD = 'email' # <-- se usará email para login + REQUIRED_FIELDS = ['username'] + def __str__(self): - return self.username \ No newline at end of file + return self.email \ No newline at end of file diff --git a/essenza/user/urls.py b/essenza/user/urls.py new file mode 100644 index 00000000..04aeb230 --- /dev/null +++ b/essenza/user/urls.py @@ -0,0 +1,9 @@ +from django.contrib import admin +from django.urls import include, path +from django.http import HttpResponse +from user import views + +urlpatterns = [ + path('login/', views.LoginView.as_view(), name='login'), +] + diff --git a/essenza/user/views.py b/essenza/user/views.py index 91ea44a2..ed8a9143 100644 --- a/essenza/user/views.py +++ b/essenza/user/views.py @@ -1,3 +1,34 @@ -from django.shortcuts import render +from django.shortcuts import render, redirect +from django.views import View +from django.contrib.auth import authenticate, login + +from essenza.urls import home +from .forms import LoginForm + + +class LoginView(View): + form_class = LoginForm + template_name = 'user/login.html' + + + def get(self, request, *args, **kwargs): + if request.user.is_authenticated: + return redirect('home') + return render(request, self.template_name, {'form': self.form_class()}) + + def post(self, request, *args, **kwargs): + form = self.form_class(request.POST) + if form.is_valid(): + email = form.cleaned_data["email"] + password = form.cleaned_data["password"] + + user = authenticate(request, username=email, password=password) + + if user is not None: + login(request, user) + return redirect('home') + else: + form.add_error(None, "Usuario o contraseña incorrectos") + + return render(request, self.template_name, {'form': form}) -# Create your views here. From 1504a678bb5a2e47d16ce0e3f68670f859bdc285 Mon Sep 17 00:00:00 2001 From: Celia Date: Fri, 7 Nov 2025 14:09:07 +0100 Subject: [PATCH 3/3] =?UTF-8?q?Correcciones=20peque=C3=B1as=20y=20base=20d?= =?UTF-8?q?e=20datos=20actualizada?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- essenza/db.sqlite3 | Bin 0 -> 176128 bytes essenza/essenza/urls.py | 2 +- essenza/templates/user/login.html | 82 +++++++++++++++++++----------- 3 files changed, 54 insertions(+), 30 deletions(-) create mode 100644 essenza/db.sqlite3 diff --git a/essenza/db.sqlite3 b/essenza/db.sqlite3 new file mode 100644 index 0000000000000000000000000000000000000000..a07469daa4de7d124114b580ddfa56080b71ee18 GIT binary patch literal 176128 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 literal 0 HcmV?d00001 diff --git a/essenza/essenza/urls.py b/essenza/essenza/urls.py index 357120b9..d14c13c4 100644 --- a/essenza/essenza/urls.py +++ b/essenza/essenza/urls.py @@ -47,7 +47,7 @@ def home(request): .info-button:hover { background-color: #a35a34; } .login-button { position: absolute; - top: 50%; + top: 60%; left: 50%; transform: translate(-50%, -50%); padding: 15px 35px; diff --git a/essenza/templates/user/login.html b/essenza/templates/user/login.html index 95a77136..f1f47baf 100644 --- a/essenza/templates/user/login.html +++ b/essenza/templates/user/login.html @@ -5,46 +5,70 @@ Iniciar sesión · Essenza - + .form-error{ color:#b00020; } +
-
ESSENZA
+

ESSENZA