Files
goodtimes/manage_communications/views.py
rizwanisready 97255b2a60 transactions
2024-03-10 23:27:22 +05:30

134 lines
4.8 KiB
Python

from django.contrib.auth.mixins import LoginRequiredMixin
from accounts import resource_action
from django.views import generic
from .models import Feedback, ContactUs, Tickets
from goodtimes import constants
from django.shortcuts import get_object_or_404, redirect, render
from django.urls import reverse_lazy
from django.contrib import messages
# Create your views here.
class ContactUsListView(LoginRequiredMixin, generic.ListView):
page_name = resource_action.RESOURCE_MANAGE_CONTACT_US
resource = resource_action.RESOURCE_MANAGE_CONTACT_US
action = resource_action.ACTION_READ
model = ContactUs
template_name = "manage_communications/contact_us_list.html"
context_object_name = "contact_us_obj"
def get_queryset(self):
return super().get_queryset().filter(deleted=False)
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context["page_name"] = self.page_name
return context
class ContactUsReplyView(LoginRequiredMixin, generic.View):
page_name = resource_action.RESOURCE_MANAGE_CONTACT_US
model = ContactUs
success_message = constants.DATA_SAVED
success_url = reverse_lazy("manage_communications:contact_us_list")
def post(self, request):
id = request.POST.get("id")
message = request.POST.get("message")
if id or message:
try:
instance = self.model.objects.get(id=id)
instance.reply = message
instance.save()
messages.success(request, self.success_message)
except self.model.DoesNotExist:
messages.error(request, "Contact Us entry not found")
except Exception as e:
messages.error(request, str(e))
else:
messages.error(request, "Missing 'id' or 'message' in the request")
# Redirect to the desired URL after form submission
return redirect(self.success_url)
class ContactUsCreateOrUpdateView(LoginRequiredMixin, generic.TemplateView):
page_name = resource_action.RESOURCE_MANAGE_CONTACT_US
template_name = "manage_communications/contact_us_list.html"
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context["page_name"] = self.page_name
return context
class TicketsListView(LoginRequiredMixin, generic.ListView):
page_name = resource_action.RESOURCE_MANAGE_TICKET
resource = resource_action.RESOURCE_MANAGE_TICKET
action = resource_action.ACTION_READ
model = ContactUs
template_name = "manage_communications/ticket_list.html"
context_object_name = "objs"
def get_queryset(self):
return super().get_queryset().filter(deleted=False)
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context["page_name"] = self.page_name
return context
class TicketListView(LoginRequiredMixin, generic.ListView):
page_name = resource_action.RESOURCE_MANAGE_CONTACT_US
resource = resource_action.RESOURCE_MANAGE_CONTACT_US
action = resource_action.ACTION_READ
model = ContactUs
template_name = "manage_communications/contact_us_list.html"
context_object_name = "contact_us_obj"
def get_queryset(self):
return super().get_queryset().filter(deleted=False)
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context["page_name"] = self.page_name
return context
class FeedbackListView(LoginRequiredMixin, generic.ListView):
page_name = resource_action.RESOURCE_MANAGE_FEEDBACK
resource = resource_action.RESOURCE_MANAGE_FEEDBACK
action = resource_action.ACTION_READ
model = Feedback
template_name = "manage_communications/feedback_list.html"
context_object_name = "feedback_obj"
def get_queryset(self):
return super().get_queryset().select_related("principal").filter(deleted=False)
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context["page_name"] = self.page_name
return context
class FeedbackDeleteView(LoginRequiredMixin, generic.View):
page_name = resource_action.RESOURCE_MANAGE_FEEDBACK
resource = resource_action.RESOURCE_MANAGE_FEEDBACK
action = resource_action.ACTION_DELETE
model = Feedback
success_url = reverse_lazy("manage_communications:feedback_list")
success_message = constants.RECORD_DELETED
error_message = constants.RECORD_NOT_FOUND
def get(self, request, pk):
try:
type_obj = self.model.objects.get(id=pk)
type_obj.deleted = True
type_obj.active = False
type_obj.save()
messages.success(request, self.success_message)
except self.model.DoesNotExist:
messages.success(request, self.error_message)
return redirect(self.success_url)