Commit 294887db authored by Ilham Maulana's avatar Ilham Maulana 💻

feat: login history table list page

parent e1faea21
......@@ -5,6 +5,7 @@ from users.views import (
LibrarianCreateView,
LibrarianDeleteView,
LibrarianUpdateView,
LibrarianLoginHistoryView,
MemberListView,
MemberCreateView,
MemberDeleteView,
......@@ -23,6 +24,11 @@ urlpatterns = [
LibrarianDeleteView.as_view(),
name="delete_librarian",
),
path(
"librarians/login-history/",
LibrarianLoginHistoryView.as_view(),
name="librarian_login_history",
),
# members
path("members/", MemberListView.as_view(), name="member_lists"),
path("members/add/", MemberCreateView.as_view(), name="create_member"),
......
......@@ -6,7 +6,7 @@ from django.http import HttpResponseRedirect
from django.contrib.auth.views import LoginView, PasswordResetView
from django.contrib.messages.views import SuccessMessageMixin
from users.models import Librarian, Member
from users.models import Librarian, Member, LibrarianLoginHistory
from users.forms import UserForm, User, LoginForm, SignUpForm, ForgotPasswordForm
......@@ -161,6 +161,10 @@ class LibrarianLoginView(LoginView):
context["error_message"] = "Access Denied, account is not staff"
return self.form_invalid(form)
librarian = Librarian.objects.get(user=user)
LibrarianLoginHistory.objects.create(librarian=librarian)
return self.form_valid(form)
else:
return self.form_invalid(form)
......@@ -226,3 +230,28 @@ class LibrarianResetPassword(SuccessMessageMixin, PasswordResetView):
"please make sure you've entered the address you registered with, and check your spam folder."
)
success_url = "/password-reset-complete/"
class LibrarianLoginHistoryView(generic.ListView):
model = LibrarianLoginHistory
template_name = "librarians/librarian_login_history.html"
paginate_by = 5
def get_queryset(self):
queryset = super().get_queryset()
keyword = self.request.GET.get("q")
order = self.request.GET.get("o")
if keyword:
queryset = queryset.filter(
Q(librarian__user__username__icontains=keyword)
| Q(librarian__user__email__icontains=keyword)
).order_by("-date")
if order:
if order == "new":
queryset = queryset.order_by("-date")
elif order == "old":
queryset = queryset.order_by("date")
return queryset.order_by("-date")
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment