104 lines
2.9 KiB
Python
104 lines
2.9 KiB
Python
"""
|
|
outlook_auth/cbv.py
|
|
|
|
"""
|
|
|
|
from django.contrib import messages
|
|
from django.http import HttpResponse
|
|
from django.urls import reverse_lazy
|
|
from django.utils.decorators import method_decorator
|
|
from django.utils.translation import gettext_lazy as _
|
|
|
|
from horilla_views.cbv_methods import login_required, permission_required
|
|
from horilla_views.generic.cbv import views
|
|
from outlook_auth import filters, forms, models
|
|
|
|
|
|
@method_decorator(login_required, name="dispatch")
|
|
@method_decorator(
|
|
permission_required(perm="outlook_auth.view_azureapi"), name="dispatch"
|
|
)
|
|
class ServerNav(views.HorillaNavView):
|
|
"""
|
|
ServerList
|
|
"""
|
|
|
|
model = models.AzureApi
|
|
search_url = reverse_lazy("outlook_server_list")
|
|
|
|
def __init__(self, **kwargs):
|
|
self.create_attrs = f"""
|
|
onclick = "event.stopPropagation();"
|
|
data-toggle="oh-modal-toggle"
|
|
data-target="#genericModal"
|
|
hx-target="#genericModalBody"
|
|
hx-get="{reverse_lazy('outlook_server_create')}"
|
|
"""
|
|
super().__init__(**kwargs)
|
|
|
|
nav_title = _("Mail Servers")
|
|
filter_instance = filters.AzureApiFilter()
|
|
search_swap_target = "#listContainer"
|
|
|
|
|
|
@method_decorator(login_required, name="dispatch")
|
|
@method_decorator(
|
|
permission_required(perm="outlook_auth.view_azureapi"), name="dispatch"
|
|
)
|
|
class ServerList(views.HorillaListView):
|
|
"""
|
|
ServerList
|
|
"""
|
|
|
|
model = models.AzureApi
|
|
view_id = "listContainer"
|
|
columns = [
|
|
(_("Name"), "outlook_display_name"),
|
|
(_("Email"), "outlook_email"),
|
|
(_("Company"), "company"),
|
|
(_("Token Expire"), "token_expire"),
|
|
(_("Primary"), "is_primary"),
|
|
]
|
|
show_filter_tags = False
|
|
filter_class = filters.AzureApiFilter
|
|
search_url = reverse_lazy("outlook_server_list")
|
|
action_method = "actions"
|
|
selected_instances_key_id = "selectedRecords"
|
|
header_attrs = {
|
|
"action": """
|
|
style = "width:298px !important"
|
|
""",
|
|
}
|
|
|
|
|
|
@method_decorator(login_required, name="dispatch")
|
|
@method_decorator(
|
|
permission_required(perm="outlook_auth.add_azureapi"), name="dispatch"
|
|
)
|
|
class ServerForm(views.HorillaFormView):
|
|
"""
|
|
ServerForm
|
|
"""
|
|
|
|
model = models.AzureApi
|
|
form_class = forms.OutlookServerForm
|
|
new_display_title = _("Create Mail Server")
|
|
|
|
def get_context_data(self, **kwargs):
|
|
context = super().get_context_data(**kwargs)
|
|
if self.form.instance.pk:
|
|
self.form_class.verbose_name = _("Update Mail Server")
|
|
return context
|
|
|
|
def form_valid(self, form: forms.OutlookServerForm) -> HttpResponse:
|
|
|
|
if form.is_valid():
|
|
if form.instance.pk:
|
|
message = _("Mail server updated successfully.")
|
|
else:
|
|
message = _("Mail server created successfully.")
|
|
form.save()
|
|
messages.success(self.request, _(message))
|
|
return self.HttpResponse()
|
|
return super().form_valid(form)
|