workouttest_backoffice/aitrainer_backoffice/controlling/admin/customer.py
Tibor Bossanyi (Freelancer) 405fefe7b9 BT 1.29.1 App Texts Translation
2021-09-26 11:25:16 +02:00

84 lines
2.6 KiB
Python

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 ..models.customer import Customer
from ..models.customer import Sport
from ..mautic import MauticHelper
from ..cron import cron
from ..push_notification import messaging
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.sport_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):
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.sport_name
get_sport.short_description = 'Sport'
get_sport.admin_order_field = 'sport__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.set_mautic),
]
return my_urls + urls
def set_mautic(self, request):
messaging.send_to_token()
return HttpResponseRedirect("../")
admin.site.register(Customer, CustomerAdmin)
admin.autodiscover()