Commit 7004514f authored by impfundev's avatar impfundev

fix: handle password empty and hashed new password on member and librarian

parent ac2c1922
......@@ -9,7 +9,7 @@
</button>
<a
class="w-100 btn btn-outline-primary border-white text-white text-start"
href="/dashboard/librarians/{{ user.id }}/update/"
href="/dashboard/librarians/{{ user.id }}/"
><i class="bi bi-person-fill-gear"></i> profile</a
>
<a
......
......@@ -26,3 +26,7 @@ class LibrarianForm(forms.ModelForm):
}
),
}
def __init__(self, *args, **kwargs):
super(LibrarianForm, self).__init__(*args, **kwargs)
self.fields["password"].required = False
from django.db.models import Q
from django.views import generic
from librarians.models import Librarians
from librarians.forms import LibrarianForm
from authentications.utils import Hasher
class LibrarianListView(generic.ListView):
......@@ -28,24 +30,59 @@ class LibrarianListView(generic.ListView):
return queryset.order_by("-updated_at")
class LibrarianCreateView(generic.edit.CreateView):
class LibrarianCreateView(generic.FormView):
model = Librarians
form_class = LibrarianForm
success_url = "/dashboard/librarians/"
template_name = "form/create_form.html"
success_message = "Librarian created successfully!"
def post(self, request, *args, **kwargs):
form = self.get_form()
if form.is_valid():
formData = form.cleaned_data.copy()
formData["password"] = Hasher.encode(formData["password"])
self.model.objects.create(**formData)
return super().post(request, *args, **kwargs)
class LibrarianUpdateView(generic.edit.UpdateView):
class LibrarianUpdateView(generic.FormView):
model = Librarians
form_class = LibrarianForm
success_url = "/dashboard/librarians"
template_name = "form/update_form.html"
success_message = "Librarian updated successfully!"
def get(self, request, *args, **kwargs):
librarian = self.model.objects.get(pk=kwargs["pk"])
self.initial = {
"name": librarian.name,
"email": librarian.email,
"password": librarian.password,
}
return super().get(request, *args, **kwargs)
def post(self, request, *args, **kwargs):
librarian = self.model.objects.get(pk=kwargs["pk"])
form = self.get_form()
if form.is_valid():
formData = form.cleaned_data.copy()
new_password = form.cleaned_data.get("password")
if new_password:
formData["password"] = Hasher.encode(formData["password"])
else:
formData["password"] = librarian.password
self.model.objects.filter(pk=kwargs["pk"]).update(**formData)
return super().post(request, *args, **kwargs)
return self.form_invalid(form)
class LibrarianDeleteView(generic.edit.DeleteView):
model = Librarians
success_url = "/dashboard/librarians"
template_name = "form/delete_form.html"
success_message = "Librarian deleted successfully!"
......@@ -27,3 +27,7 @@ class MemberForm(forms.ModelForm):
}
),
}
def __init__(self, *args, **kwargs):
super(MemberForm, self).__init__(*args, **kwargs)
self.fields["password"].required = False
from django.db.models import Q
from django.views import generic
from members.models import Members
from members.forms import MemberForm
from authentications.utils import Hasher
class MemberListView(generic.ListView):
......@@ -28,19 +30,57 @@ class MemberListView(generic.ListView):
return queryset.order_by("-updated_at")
class MemberCreateView(generic.edit.CreateView):
class MemberCreateView(generic.FormView):
model = Members
form_class = MemberForm
success_url = "/dashboard/members/"
template_name = "form/create_form.html"
def post(self, request, *args, **kwargs):
form = self.get_form()
if form.is_valid():
formData = form.cleaned_data.copy()
formData["password"] = Hasher.encode(formData["password"])
self.model.objects.create(**formData)
return super().post(request, *args, **kwargs)
class MemberUpdateView(generic.edit.UpdateView):
class MemberUpdateView(generic.FormView):
model = Members
form_class = MemberForm
success_url = "/dashboard/members"
template_name = "form/update_form.html"
def get(self, request, *args, **kwargs):
member = self.model.objects.get(pk=kwargs["pk"])
self.initial = {
"name": member.name,
"email": member.email,
"password": member.password,
}
return super().get(request, *args, **kwargs)
def post(self, request, *args, **kwargs):
member = self.model.objects.get(pk=kwargs["pk"])
form = self.get_form()
if form.is_valid():
formData = form.cleaned_data.copy()
new_password = form.cleaned_data.get("password")
if new_password:
formData["password"] = Hasher.encode(formData["password"])
else:
formData["password"] = member.password
self.model.objects.filter(pk=kwargs["pk"]).update(**formData)
return super().post(request, *args, **kwargs)
return self.form_invalid(form)
class MemberDeleteView(generic.edit.DeleteView):
model = Members
......
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