diff --git a/moku/static/css/moku.css b/moku/static/css/moku.css index 07a90c6..f188f83 100644 --- a/moku/static/css/moku.css +++ b/moku/static/css/moku.css @@ -39,6 +39,25 @@ body { margin-block-end: 1.6rem; } +.messages { + margin-block-end: 1.6rem; + display: grid; + row-gap: .8rem; + font-size: 1.5rem; +} + +.messages li.success::before { + content: "✅ "; +} + +.messages li.error::before { + content: "❌ "; +} + +.messages li.info::before { + content: "â„šī¸ "; +} + button.logout { border: none; outline: none; diff --git a/moku/templates/moku/base.jinja b/moku/templates/moku/base.jinja index e2155a6..f8e7b88 100644 --- a/moku/templates/moku/base.jinja +++ b/moku/templates/moku/base.jinja @@ -29,6 +29,15 @@ + {% if messages %} + + {% endif %} {% block content %}{% endblock content %} \ No newline at end of file diff --git a/moku/views/auth.py b/moku/views/auth.py index 2d6bf4c..737062d 100644 --- a/moku/views/auth.py +++ b/moku/views/auth.py @@ -1,5 +1,7 @@ +from django.contrib import messages from django.contrib.auth.views import LoginView as BaseLoginView, LogoutView as BaseLogoutView from django.shortcuts import redirect +from django.utils.translation import gettext as _ from django.urls import reverse_lazy @@ -12,6 +14,8 @@ class LoginView(BaseLoginView): return super().get(request, *args, **kwargs) def get_success_url(self): + if self.request.user.is_authenticated: + messages.success(self.request, _("welcome back, %(username)s!") % {"username": self.request.user.username}) return self.request.GET.get("next", reverse_lazy("feed")) diff --git a/moku/views/post.py b/moku/views/post.py index d1afb7f..fc8e07e 100644 --- a/moku/views/post.py +++ b/moku/views/post.py @@ -1,5 +1,7 @@ +from django.contrib import messages from django.core.exceptions import PermissionDenied from django.shortcuts import redirect +from django.utils.translation import gettext as _ from django.views.generic import FormView from moku.constants import EMOJI_CATEGORIES, Verbs @@ -15,7 +17,8 @@ class FeedView(FormView): if not self.request.user.is_authenticated: raise PermissionDenied form.instance.created_by = self.request.user - form.instance.save() + form.save() + messages.success(self.request, _("your post was made!")) return redirect("feed") def get_context_data(self, **kwargs): diff --git a/moku/views/user.py b/moku/views/user.py index 17ac367..c0c68aa 100644 --- a/moku/views/user.py +++ b/moku/views/user.py @@ -1,6 +1,7 @@ +from django.contrib import messages from django.shortcuts import redirect +from django.utils.translation import gettext as _ from django.views.generic import FormView, TemplateView -from django.urls import reverse from moku.forms.user import ProfileForm, UserForm from moku.models.user import User @@ -12,6 +13,7 @@ class EditProfileView(FormView): def form_valid(self, form): form.save() + messages.success(self.request, _("profile updated successfully!")) return redirect("profile", username=form.instance.username) def get_form(self): @@ -34,5 +36,7 @@ class SignupView(FormView): template_name = "moku/signup.jinja" form_class = UserForm - def get_success_url(self): - return reverse("feed") + def form_valid(self, form): + form.save() + messages.success(self.request, _("that's it! just log in, and you're ready to go.")) + return redirect("login")