diff --git a/src/haps/admin.py b/src/haps/admin.py index c828bf5..70dc045 100644 --- a/src/haps/admin.py +++ b/src/haps/admin.py @@ -30,5 +30,5 @@ class EventAdmin(admin.ModelAdmin): @admin.register(EventRegistration) class EventRegistrationAdmin(admin.ModelAdmin): search_fields = ["event", "user"] - list_display = ["user", "event"] + list_display = ["event", "user_name", "user_whatsapp", "user", "user_profile_link"] list_filter = ["event__name"] diff --git a/src/haps/models.py b/src/haps/models.py index 53722be..455c851 100644 --- a/src/haps/models.py +++ b/src/haps/models.py @@ -4,6 +4,8 @@ from utils.images import upload_image_to from utils.slugs import generate_unique_slug from ckeditor_uploader.fields import RichTextUploadingField +from users.models import UserProfile +from django.utils.html import format_html User = get_user_model() @@ -43,5 +45,14 @@ class EventRegistration(models.Model): datetime = models.DateTimeField(auto_now_add=True, null=True, blank=True) # regno = models.CharField(unique=True) + def user_name(self): + return self.user.full_name() + + def user_whatsapp(self): + return UserProfile.objects.get(user=self.user).whatsapp_number + + def user_profile_link(self): + return self.user.profile_link() + def __str__(self) -> str: return self.user.__str__() + "%" + self.event.__str__() diff --git a/src/users/admin.py b/src/users/admin.py index a97ed12..6904ce1 100644 --- a/src/users/admin.py +++ b/src/users/admin.py @@ -28,7 +28,7 @@ class TempleWebUserAdmin(UserAdmin): form = TempleWebAdminUserChangeForm add_form = TempleWebUserCreationForm - list_display = ["full_name", "email", "date_joined", "is_staff"] + list_display = ["full_name", "email", "date_joined", "is_staff", "profile_link"] list_filter = ["is_staff"] fieldsets = [ diff --git a/src/users/models.py b/src/users/models.py index 19a1daf..1818e1a 100644 --- a/src/users/models.py +++ b/src/users/models.py @@ -1,7 +1,7 @@ from django.contrib.auth.models import AbstractUser from django.db import models from utils.images import upload_image_to - +from django.utils.html import format_html from .managers import TempleWebUserManager @@ -20,6 +20,11 @@ def __str__(self): def full_name(self): return self.get_full_name() + def profile_link(self): + return format_html( + f'View User Profile' + ) + class UserProfile(models.Model): user = models.OneToOneField(TempleWebUser, on_delete=models.CASCADE) diff --git a/src/users/templates/users/profile.html b/src/users/templates/users/profile.html index 8c79942..ca858e6 100644 --- a/src/users/templates/users/profile.html +++ b/src/users/templates/users/profile.html @@ -1,7 +1,7 @@ {% extends "commons.html" %} -{% block title %} Profile {% endblock title %} +{% block title %} {{user.full_name}} {% endblock title %} @@ -14,7 +14,7 @@ User Profile Image
- {{user.first_name}} {{user.last_name}} + {{user.full_name}}
{{user.email}}
diff --git a/src/users/urls.py b/src/users/urls.py index 33fe802..c23fa8f 100644 --- a/src/users/urls.py +++ b/src/users/urls.py @@ -9,5 +9,6 @@ path("me/", views.me_view, name="me_view"), path("register/", views.register, name="register"), path("login/", views.login_view, name="login"), + path("profile/", views.user_profile, name="profile"), path("logout", views.logout_view, name="logout"), ] diff --git a/src/users/views.py b/src/users/views.py index 937ce56..e0a2502 100644 --- a/src/users/views.py +++ b/src/users/views.py @@ -8,6 +8,8 @@ from django.core.exceptions import ValidationError from django.contrib.auth.decorators import login_required +from django.contrib.auth.decorators import permission_required +from utils.adirect import adirect User = get_user_model() @@ -53,7 +55,7 @@ def me_view(request: HttpRequest, edit: str = "view"): form.save() return redirect("users:me_view") else: - user_profile, truth = UserProfile.objects.get_or_create(user=request.user) + # user_profile, truth = UserProfile.objects.get_or_create(user=request.user) form = UserProfileForm(instance=user_profile) return render( request, @@ -95,3 +97,22 @@ def register(request: HttpRequest): def forgot_password(request: HttpRequest): pass + + +@permission_required("is_superuser", login_url="/users/login") +def user_profile(request: HttpRequest, email: str): + user = User.objects.get(email=email) + user_profile, t = UserProfile.objects.get_or_create(user=user) + + if request.method == "POST": + form = UserProfileForm(request.POST, request.FILES, instance=user_profile) + if form.is_valid(): + form.save() + return redirect("users:profile", email=email) + else: + form = UserProfileForm(instance=user_profile) + return render( + request, + "users/profile.html", + {"form": form, "user": user, "user_profile": user_profile}, + )