refactor datatables
This commit is contained in:
@@ -18,7 +18,6 @@ class LoginForm(forms.Form):
|
||||
)
|
||||
|
||||
|
||||
|
||||
class UserForm(forms.ModelForm):
|
||||
password = forms.CharField(
|
||||
widget=forms.PasswordInput(attrs={"autocomplete": "off"}),
|
||||
@@ -44,11 +43,26 @@ class UserForm(forms.ModelForm):
|
||||
"first_name": "Name",
|
||||
}
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super().__init__(*args, **kwargs)
|
||||
instance = kwargs.get("instance")
|
||||
if instance and instance.pk:
|
||||
# Remove password and confirm_password fields if instance exists (update action)
|
||||
self.fields.pop("password")
|
||||
self.fields.pop("confirm_password")
|
||||
# Make email field readonly
|
||||
self.fields["email"].widget.attrs["readonly"] = True
|
||||
|
||||
def clean_email(self):
|
||||
email = self.cleaned_data.get('email')
|
||||
if IAmPrincipal.objects.filter(email=email).exists():
|
||||
raise forms.ValidationError("This email address is already in use.")
|
||||
return email
|
||||
# Prevent email from being updated
|
||||
instance = self.instance
|
||||
if instance and instance.pk:
|
||||
return instance.email
|
||||
else:
|
||||
email = self.cleaned_data.get("email")
|
||||
if IAmPrincipal.objects.filter(email=email).exclude(pk=instance.pk).exists():
|
||||
raise forms.ValidationError("This email address is already in use.")
|
||||
return email
|
||||
|
||||
def clean(self):
|
||||
cleaned_data = super().clean()
|
||||
|
||||
@@ -160,19 +160,17 @@ class UserListJson(BaseDatatableView):
|
||||
print(f"request is {self.request.GET}")
|
||||
search_value = self.request.GET.get("search[value]", None)
|
||||
if search_value:
|
||||
qs = qs.filter(
|
||||
Q(id__icontains=search_value)
|
||||
| Q(first_name__icontains=search_value)
|
||||
| Q(email__icontains=search_value)
|
||||
| Q(date_of_birth__icontains=search_value)
|
||||
| Q(phone_no__icontains=search_value)
|
||||
)
|
||||
qs = super().filter_queryset(qs) # Call the built-in filtering first
|
||||
|
||||
for column in self.columns:
|
||||
# print(f"columen index pattern {}")
|
||||
print(f" columen index pattern {self.request.GET.get(f'columns[{self.columns.index(column)+1}][search][value]', None)}")
|
||||
search_value = self.request.GET.get(f'columns[{self.columns.index(column)+1}][search][value]', None)
|
||||
if search_value:
|
||||
qs = qs.filter(**{f"{column}__icontains": search_value})
|
||||
column_data = self.request.GET.get(f'columns[{self.columns.index(column)+1}][data]')
|
||||
if column_data == "is_active":
|
||||
qs = qs.filter(**{f"{column}": search_value})
|
||||
else:
|
||||
qs = qs.filter(**{f"{column}__icontains": search_value})
|
||||
|
||||
return qs
|
||||
|
||||
|
||||
Reference in New Issue
Block a user