From 4191db75483861fb755dfc5b75a91e6bbb597ff9 Mon Sep 17 00:00:00 2001 From: "Sergio C. Orozco Torres" Date: Fri, 11 Aug 2023 23:31:38 -0500 Subject: [PATCH] Imagen de perfil --- temii/templates/users/user_detail.html | 2 +- temii/templates/users/user_form.html | 2 +- temii/users/admin.py | 2 +- temii/users/forms.py | 2 ++ temii/users/migrations/0003_user_image.py | 20 ++++++++++++++++++++ temii/users/models.py | 7 ++++++- temii/users/views.py | 2 +- 7 files changed, 32 insertions(+), 5 deletions(-) create mode 100644 temii/users/migrations/0003_user_image.py diff --git a/temii/templates/users/user_detail.html b/temii/templates/users/user_detail.html index b477080..b92f62d 100644 --- a/temii/templates/users/user_detail.html +++ b/temii/templates/users/user_detail.html @@ -8,8 +8,8 @@
-

{{ object.username }}

+ {% if object.name %}

{{ object.name }}

{% endif %} diff --git a/temii/templates/users/user_form.html b/temii/templates/users/user_form.html index 49b1576..4932cf8 100644 --- a/temii/templates/users/user_form.html +++ b/temii/templates/users/user_form.html @@ -5,7 +5,7 @@ {% block content %}

{{ user.username }}

-
+ {% csrf_token %} {{ form|crispy }}
diff --git a/temii/users/admin.py b/temii/users/admin.py index ea235c5..5e5c05e 100644 --- a/temii/users/admin.py +++ b/temii/users/admin.py @@ -14,7 +14,7 @@ class UserAdmin(auth_admin.UserAdmin): add_form = UserAdminCreationForm fieldsets = ( (None, {"fields": ("username", "password")}), - (_("Personal info"), {"fields": ("name", "email")}), + (_("Personal info"), {"fields": ("name", "email", "phone", "bio", "image")}), ( _("Permissions"), { diff --git a/temii/users/forms.py b/temii/users/forms.py index fea4972..b3076e2 100644 --- a/temii/users/forms.py +++ b/temii/users/forms.py @@ -35,11 +35,13 @@ class UserSignupForm(SignupForm): phone = forms.CharField(max_length=20, label=_("Phone"), required=False) bio = forms.CharField(max_length=255, label=_("Bio"), required=False) + image = forms.ImageField(label=_("Image"), required=False) def save(self, request): user = super().save(request) user.phone = self.cleaned_data["phone"] user.bio = self.cleaned_data["bio"] + user.image = self.cleaned_data["image"] user.save() return user diff --git a/temii/users/migrations/0003_user_image.py b/temii/users/migrations/0003_user_image.py new file mode 100644 index 0000000..1b91b6d --- /dev/null +++ b/temii/users/migrations/0003_user_image.py @@ -0,0 +1,20 @@ +# Generated by Django 4.1.8 on 2023-08-12 05:01 + +from django.db import migrations, models +import temii.users.models + + +class Migration(migrations.Migration): + dependencies = [ + ("users", "0002_user_bio_user_phone"), + ] + + operations = [ + migrations.AddField( + model_name="user", + name="image", + field=models.ImageField( + default="default.jpg", upload_to=temii.users.models.upload_to, verbose_name="Image" + ), + ), + ] diff --git a/temii/users/models.py b/temii/users/models.py index a006edc..ef58447 100644 --- a/temii/users/models.py +++ b/temii/users/models.py @@ -1,9 +1,13 @@ from django.contrib.auth.models import AbstractUser -from django.db.models import CharField +from django.db.models import CharField, ImageField from django.urls import reverse from django.utils.translation import gettext_lazy as _ +def upload_to(instance, filename): + return f"profile_pics/{instance.username}/{filename}" + + class User(AbstractUser): """ Default custom user model for temii. @@ -17,6 +21,7 @@ class User(AbstractUser): last_name = None # type: ignore phone = CharField(_("Phone"), blank=True, max_length=20) bio = CharField(_("Bio"), blank=True, max_length=255) + image = ImageField(_("Image"), default="default.jpg", upload_to=upload_to) def get_absolute_url(self) -> str: """Get URL for user's detail view. diff --git a/temii/users/views.py b/temii/users/views.py index a649f39..e6cb5af 100644 --- a/temii/users/views.py +++ b/temii/users/views.py @@ -19,7 +19,7 @@ class UserDetailView(LoginRequiredMixin, DetailView): class UserUpdateView(LoginRequiredMixin, SuccessMessageMixin, UpdateView): model = User - fields = ["name", "phone", "bio"] + fields = ["name", "phone", "bio", "image"] success_message = _("Information successfully updated") def get_success_url(self):