BO 1.23 controlling, cron: sync customers
This commit is contained in:
@@ -0,0 +1,3 @@
|
||||
from .customer import CustomerAdmin
|
||||
from .frequent_customers import FrequentCustomersAdmin
|
||||
from .frequent_exercises import FrequentExerciseTypeAdmin
|
||||
@@ -0,0 +1,83 @@
|
||||
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
|
||||
|
||||
|
||||
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):
|
||||
cron.sync_customers()
|
||||
self.message_user(request, "All heroes are now synced")
|
||||
return HttpResponseRedirect("../")
|
||||
|
||||
|
||||
admin.site.register(Customer, CustomerAdmin)
|
||||
admin.autodiscover()
|
||||
@@ -0,0 +1,24 @@
|
||||
from django.contrib import admin
|
||||
|
||||
from ..models.frequent_customers import FrequentCustomers
|
||||
|
||||
|
||||
|
||||
class FrequentCustomersAdmin(admin.ModelAdmin):
|
||||
list_display = ('customer_id', 'name', 'firstname', 'email', 'exercise_count')
|
||||
|
||||
#def get_queryset(self, request):
|
||||
# qs = super(FrequentCustomersAdmin, self).get_queryset(request)
|
||||
# return FrequentCustomers.objects.extra(
|
||||
# select=["customer_id, name, firstname, email, ( select count(exercise_id) from exercises where exercises.customer_id = customer_customer.id) as exercise_count "],
|
||||
#group_by=["customer_id"],
|
||||
#having=["exercise_count > 10"],
|
||||
# order_by=["-exercise_count"]
|
||||
#)
|
||||
#return qs.values("exercises").annotate(exercise_count=Count('exercises')).order_by('-exercise_count')
|
||||
#return Exercises.objects.annotate(count=Count("customer__customer_id"))
|
||||
#return qs.values('user').annotate(visit_sum=Count('visit_count')).order_by('-visit_sum')
|
||||
|
||||
|
||||
admin.site.register(FrequentCustomers, FrequentCustomersAdmin)
|
||||
admin.autodiscover()
|
||||
@@ -0,0 +1,15 @@
|
||||
from django.contrib import admin
|
||||
|
||||
from ..models import ExerciseType
|
||||
|
||||
|
||||
class FrequentExerciseTypeAdmin(admin.ModelAdmin):
|
||||
list_display = ('exercise_type_id', 'name', 'exercise_count')
|
||||
|
||||
def get_queryset(self, request):
|
||||
qs = super(FrequentExerciseTypeAdmin, self).get_queryset(request)
|
||||
return qs.filter(active=True)
|
||||
|
||||
|
||||
admin.site.register(ExerciseType, FrequentExerciseTypeAdmin)
|
||||
admin.autodiscover()
|
||||
Reference in New Issue
Block a user