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_lang/', self.run_mautic), path('mautic_trial/', self.run_mautic_trial), 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("../") def run_mautic_trial(self, request): mautic = Mautic() mautic.syncTrial() return HttpResponseRedirect("../") admin.site.register(Customer, CustomerAdmin) admin.autodiscover()