From bbc01addda7b7b4319b3894bd4dbee36d76b1f0b Mon Sep 17 00:00:00 2001 From: bobbyvish Date: Thu, 16 May 2024 17:49:59 +0530 Subject: [PATCH] feat(contact us): landing page contact support through email --- module_auth/api/views.py | 2 +- module_project/settings/base.py | 2 +- module_support/urls.py | 4 +- module_support/views.py | 61 ++++++++++++++++ ..._template.html => otp_email_template.html} | 0 .../module_support/contact_us_support.html | 54 ++++++++++++++ .../module_support/thank_you_support.html | 73 +++++++++++++++++++ 7 files changed, 193 insertions(+), 3 deletions(-) rename templates/module_auth/{email_template.html => otp_email_template.html} (100%) create mode 100644 templates/module_support/contact_us_support.html create mode 100644 templates/module_support/thank_you_support.html diff --git a/module_auth/api/views.py b/module_auth/api/views.py index 01bb55b..5d33a00 100644 --- a/module_auth/api/views.py +++ b/module_auth/api/views.py @@ -167,7 +167,7 @@ class OtpRequestView(APIView): # Send the email try: email_service.load_template( - "module_auth/email_template.html", context={"code": otp_code, "name": principal.first_name} + "module_auth/otp_email_template.html", context={"code": otp_code, "name": principal.first_name} ) email_service.send() except Exception as e: diff --git a/module_project/settings/base.py b/module_project/settings/base.py index 1b51a60..1ce27be 100644 --- a/module_project/settings/base.py +++ b/module_project/settings/base.py @@ -261,7 +261,7 @@ LOGGING = { # jwt configuration # https://django-rest-framework-simplejwt.readthedocs.io/en/latest/settings.html#settings SIMPLE_JWT = { - "ACCESS_TOKEN_LIFETIME": datetime.timedelta(minutes=5), + "ACCESS_TOKEN_LIFETIME": datetime.timedelta(days=15), "REFRESH_TOKEN_LIFETIME": datetime.timedelta(days=15), "ROTATE_REFRESH_TOKENS": False, "BLACKLIST_AFTER_ROTATION": True, diff --git a/module_support/urls.py b/module_support/urls.py index dfc77fd..ab2ef9e 100644 --- a/module_support/urls.py +++ b/module_support/urls.py @@ -12,12 +12,14 @@ urlpatterns = [ path('contact_us/action/', views.ContactUsActionView.as_view(), name='contact_us_action'), path('contact_us/archive/list/', views.ContactUsArchiveView.as_view(), name='contact_us_archive'), + path('contact_us/landing/', views.ContactUsLandingView, name="contact_us_landing"), + path('feedback/', views.FeedbackView.as_view(), name="feedback"), path('feedback/list/', views.FeedbackListJson.as_view(), name="feedback_list"), path('feedback/action/', views.FeedbackActionView.as_view(), name='feedback_action'), + # path('feedback/', views.FeedbackListView.as_view(), name='feedback_list'), # path('feedback/delete/', views.FeedbackDeleteView.as_view(), name='feedback_delete'), - ] diff --git a/module_support/views.py b/module_support/views.py index 79468ce..c04f56d 100644 --- a/module_support/views.py +++ b/module_support/views.py @@ -1,3 +1,4 @@ +import datetime from django.conf import settings from django.contrib import messages from django.contrib.auth.mixins import LoginRequiredMixin @@ -127,6 +128,66 @@ class ContactUsReplyView(LoginRequiredMixin, generic.View): else: return JsonResponseUtil.error(message=constants.FAILURE, errors="Missing 'id' or 'message' in the request") +from django.views.decorators.csrf import csrf_exempt + +@csrf_exempt +def ContactUsLandingView(request): + name = request.POST.get('full_name') + email = request.POST.get('email') + subject = request.POST.get('subject') + message = request.POST.get('message') + + if not all([name, email, subject, message]): + return JsonResponseUtil.error(message=constants.FAILURE, errors='Please fill in all the fields.') + + try: + contact_us = ContactUs( + name=name, + email_address=email, + subject=subject, + message=message + ) + contact_us.save() + + context = { + "name": name, + "email": email, + "subject": subject, + "message": message, + "year": datetime.datetime.year + } + print(context) + + # Send the email to support team + support_team_service = EmailService( + subject=f"New contact us - {subject}", + to=email, + from_email=settings.EMAIL_HOST_USER, + ) + + support_team_service.load_template( + "module_support/contact_us_support.html", context=context + ) + support_team_service.send() + + # Send the email to support team + thankyou_service = EmailService( + subject=f"New contact us - {subject}", + to=email, + from_email=settings.EMAIL_HOST_USER, + ) + + thankyou_service.load_template( + "module_support/thank_you_support.html", context=context + ) + thankyou_service.send() + + except Exception as e: + print(f"Error occur in ContactUsLandingView {str(e)}") + return JsonResponseUtil.error(message=constants.FAILURE, errors=constants.SOMETHING_WRONG) + + return JsonResponseUtil.success(message='Thank you for contacting us!') + class FeedbackView(permission.ResourcePermissionRequiredMixin, LoginRequiredMixin, generic.TemplateView): page_name = iam_constant.RESOURCE_MANAGE_FEEDBACK diff --git a/templates/module_auth/email_template.html b/templates/module_auth/otp_email_template.html similarity index 100% rename from templates/module_auth/email_template.html rename to templates/module_auth/otp_email_template.html diff --git a/templates/module_support/contact_us_support.html b/templates/module_support/contact_us_support.html new file mode 100644 index 0000000..469daf8 --- /dev/null +++ b/templates/module_support/contact_us_support.html @@ -0,0 +1,54 @@ + + + + + + Contact Support + + + + + + diff --git a/templates/module_support/thank_you_support.html b/templates/module_support/thank_you_support.html new file mode 100644 index 0000000..faa0143 --- /dev/null +++ b/templates/module_support/thank_you_support.html @@ -0,0 +1,73 @@ + + + + + + Contact Us Email + + {% comment %} {% endcomment %} + + + +
+ + +
+ + + {% comment %} + + {% endcomment %} + +