43 lines
1.7 KiB
Python
43 lines
1.7 KiB
Python
from django.contrib import admin
|
|
import os
|
|
from django.utils.translation import ugettext_lazy as _
|
|
|
|
|
|
SETTING = os.environ['WORKOUTTEST_SETTING']
|
|
if SETTING == "PROD" :
|
|
from aitrainer_backoffice.aitrainer_backoffice.models.customer import Customer
|
|
from aitrainer_backoffice.aitrainer_backoffice.models.exercises import Exercises
|
|
else:
|
|
from aitrainer_backoffice.models.customer import Customer
|
|
from aitrainer_backoffice.models.exercises import Exercises
|
|
|
|
class FrequentCustomers(Customer):
|
|
@property
|
|
def exercise_count(self):
|
|
count = Exercises.objects.filter(customer_id=self.customer_id).count()
|
|
return count
|
|
|
|
class Meta:
|
|
proxy = True
|
|
verbose_name = _("Frequent Customer")
|
|
verbose_name_plural = _("Frequent Customers")
|
|
|
|
|
|
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)
|
|
# 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()
|