from django.contrib.auth.decorators import login_required from django.contrib.auth.mixins import LoginRequiredMixin from django.shortcuts import render, redirect from django.views.generic import TemplateView, UpdateView from django.contrib import messages from django.urls import reverse_lazy from .models import User, UserProfile class ProfileView(LoginRequiredMixin, TemplateView): template_name = 'account/profile.html' def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) context['user'] = self.request.user return context class ProfileUpdateView(LoginRequiredMixin, UpdateView): model = UserProfile template_name = 'account/profile_edit.html' fields = ['bio', 'location', 'birth_date', 'avatar', 'phone_number'] success_url = reverse_lazy('accounts:profile') def get_object(self): profile, created = UserProfile.objects.get_or_create(user=self.request.user) return profile def form_valid(self, form): messages.success(self.request, 'Your profile has been updated successfully!') return super().form_valid(form) @login_required def dashboard(request): context = { 'user': request.user, 'user_groups': request.user.groups.all(), } return render(request, 'account/dashboard.html', context)