[ADD] OUTLOOK: Add outlook mail integration to Horilla
This commit is contained in:
101
outlook_auth/cbv/views.py
Normal file
101
outlook_auth/cbv/views.py
Normal file
@@ -0,0 +1,101 @@
|
||||
"""
|
||||
outlook_auth/cbv.py
|
||||
|
||||
"""
|
||||
|
||||
from django.http import HttpResponse
|
||||
from django.contrib import messages
|
||||
from django.urls import reverse_lazy
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
from django.utils.decorators import method_decorator
|
||||
from horilla_views.generic.cbv import views
|
||||
from horilla_views.cbv_methods import login_required, permission_required
|
||||
from outlook_auth import models, filters, forms
|
||||
|
||||
|
||||
@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)
|
||||
Reference in New Issue
Block a user