97 lines
3.1 KiB
Python
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()
|