workouttest_backoffice/aitrainer_backoffice/controlling/admin/customer.py
2021-10-19 08:23:52 +02:00

97 lines
3.1 KiB
Python

import os
from abc import ABC
from datetime import datetime
from django.contrib.admin import SimpleListFilter
from django.http import HttpResponseRedirect
from django.utils.translation import ugettext_lazy as _
from django.contrib import admin
from rangefilter.filters import DateRangeFilter, DateTimeRangeFilter
from django.urls import path
from ..automation.mautic import Mautic
SETTING = os.environ['WORKOUTTEST_SETTING']
if SETTING == "PROD" :
from aitrainer_backoffice.aitrainer_backoffice.models.sports import Sport
from aitrainer_backoffice.aitrainer_backoffice.models.customer import Customer
else:
from aitrainer_backoffice.models.sports import Sport
from aitrainer_backoffice.models.customer import Customer
from ..automation.notification import NotificationExec
class SportFilter(SimpleListFilter, ABC):
title = "Sport"
parameter_name = 'sport_id'
def lookups(self, request, model_admin):
data = []
for s in Sport.objects.filter():
data.append([s.sport_id, s.name])
return data
def queryset(self, request, queryset):
if self.value():
return Customer.objects.filter(sport__sport_id=self.value())
else:
return queryset
class CustomerAdmin(admin.ModelAdmin):
notif = NotificationExec()
change_list_template = "controlling/mautic.html"
list_display = ('customer_id', 'name','firstname', 'email', 'date_add', 'get_sport')
list_filter = (
('date_add', DateRangeFilter),
SportFilter
)
def get_sport(self, obj):
return obj.sport.name
get_sport.short_description = 'Sport'
get_sport.admin_order_field = 'sport__name'
# If you would like to add a default range filter
# method pattern "get_rangefilter_{field_name}_default"
def get_rangefilter_date_add_default(self, request):
return (datetime.today(), datetime.today())
# If you would like to change a title range filter
# method pattern "get_rangefilter_{field_name}_title"
def get_rangefilter_date_add_title(self, request, field_path):
return _('Registered')
def changelist_view(self, request, extra_context=None):
if not request.GET.__contains__('date_add__range__gte'):
q = request.GET.copy()
q['date_add__range__gte'] = datetime.today()
q['date_add__range__lte'] = datetime.today()
request.GET = q
request.META['QUERY_STRING'] = request.GET.urlencode()
return super(CustomerAdmin, self).changelist_view(
request, extra_context=extra_context)
def get_urls(self):
urls = super().get_urls()
my_urls = [
path('mautic/', self.run_mautic),
path('notif/', self.run_notif),
]
return my_urls + urls
def run_notif(self, request):
self.notif.run()
return HttpResponseRedirect("../")
def run_mautic(self, request):
mautic = Mautic()
mautic.syncLang()
return HttpResponseRedirect("../")
admin.site.register(Customer, CustomerAdmin)
admin.autodiscover()