refactor datatables

This commit is contained in:
bobbyvish
2024-03-26 13:22:29 +05:30
parent 64c172ab59
commit 2a4f507a6f
22 changed files with 1191 additions and 391 deletions

View File

@@ -35,8 +35,8 @@ class ContactUsView(LoginRequiredMixin, generic.TemplateView):
class ContactUsListJson(BaseDatatableView):
model = ContactUs
columns = ["id", "email_address", "subject", "message", "active", "deleted"]
order_columns = ["id", "email_address", "subject", "message", "active", "deleted"]
columns = ["id", "email_address", "subject", "message", "reply", "active"]
order_columns = ["id", "email_address", "subject", "message", "reply", "active"]
def get_initial_queryset(self):
deleted_flag = self.request.GET.get('deleted_flag', None)
@@ -44,20 +44,20 @@ class ContactUsListJson(BaseDatatableView):
return self.model.objects.filter(deleted=deleted_flag)
def filter_queryset(self, qs):
# Implement your custom filtering logic here
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(question__icontains=search_value)
| Q(answer__icontains=search_value)
)
qs = super().filter_queryset(qs) # Call the built-in filtering first
for column in self.columns:
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 == "active":
qs = qs.filter(**{f"{column}": search_value})
else:
qs = qs.filter(**{f"{column}__icontains": search_value})
return qs
@@ -98,8 +98,8 @@ class ContactUsReplyView(LoginRequiredMixin, generic.View):
def post(self, request, *args, **kwargs):
id = self.kwargs.get("id")
message = request.POST.get("message")
if id or message:
print(f"id and message is {id} {message}")
if id and message:
try:
instance = self.model.objects.get(id=id)
instance.reply = message
@@ -107,21 +107,20 @@ class ContactUsReplyView(LoginRequiredMixin, generic.View):
email_service = EmailService(
subject=f"Reply of your inquiry - {instance.subject}",
body=message,
to=instance.email,
to=instance.email_address,
from_email=settings.EMAIL_HOST_USER,
)
email_service.set_text_body(message)
email_service.send()
JsonResponseUtil.success(message=self.success_message)
print(f"email service is {email_service}")
return JsonResponseUtil.success(message=self.success_message)
except self.model.DoesNotExist:
JsonResponseUtil.error(message=constants.FAILURE, errors="Invalid contact us ID.")
return JsonResponseUtil.error(message=constants.FAILURE, errors="Invalid contact us ID.")
except Exception as e:
JsonResponseUtil.error(message=constants.FAILURE, errors=str(e))
return JsonResponseUtil.error(message=constants.FAILURE, errors=str(e))
else:
JsonResponseUtil.error(message=constants.FAILURE, errors="Missing 'id' or 'message' in the request")
return JsonResponseUtil.error(message=constants.FAILURE, errors="Missing 'id' or 'message' in the request")
# Redirect to the desired URL after form submission
return JsonResponseUtil.success(message=constants.SUCCESS)
class FeedbackView(LoginRequiredMixin, generic.TemplateView):
@@ -156,6 +155,7 @@ class FeedbackListJson(BaseDatatableView):
qs = qs.filter(
Q(id__icontains=search_value)
| Q(feedback_reaction__icontains=search_value)
| Q(principal__email__icontains=search_value)
| Q(comment__icontains=search_value)
)
return qs