V1.30.11 models simplification

This commit is contained in:
Tibor Bossanyi (Freelancer)
2021-10-02 22:55:36 +02:00
parent e29ad46e7b
commit 1a7ce950c8
20 changed files with 159 additions and 140 deletions
@@ -1,3 +1,4 @@
import os
from abc import ABC
from datetime import datetime
@@ -8,8 +9,14 @@ 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
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 Notification
class SportFilter(SimpleListFilter, ABC):
@@ -1,23 +1,41 @@
from django.contrib import admin
import os
from django.utils.translation import ugettext_lazy as _
from ..models.frequent_customers import FrequentCustomers
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)
# 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')
# 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)
@@ -1,15 +1,36 @@
from django.contrib import admin
from django.db.models import Count
import os
from django.utils.translation import ugettext_lazy as _
#from aitrainer_backoffice.models.exercise_type import ExerciseType
SETTING = os.environ['WORKOUTTEST_SETTING']
if SETTING == "PROD" :
from aitrainer_backoffice.aitrainer_backoffice.models.exercise_type import ExerciseType
from aitrainer_backoffice.aitrainer_backoffice.models.exercises import Exercises
else:
from aitrainer_backoffice.models.exercise_type import ExerciseType
from aitrainer_backoffice.models.exercises import Exercises
class FrequentExerciseType(ExerciseType):
@property
def exercise_count(self):
count = Exercises.objects.filter(exercise_type_id=self.exercise_type_id).count()
return count
class Meta:
proxy = True
verbose_name = _("Frequent Exercise")
verbose_name_plural = _("Frequent Exercises")
class FrequentExerciseTypeAdmin(admin.ModelAdmin):
list_display = ('exercise_type_id', 'name', 'exercise_count')
def get_queryset(self, request):
qs = super(FrequentExerciseTypeAdmin, self).get_queryset(request)
qs = super(FrequentExerciseTypeAdmin, self).get_queryset(request) #.annotate(_exercise_count=Count("exercise_count",distinct=True ))
return qs.filter(active=True)
#exercise_count.admin_order_field = '_exercise_count'
#admin.site.register(FrequentExerciseTypeAdmin)
#admin.autodiscover()
admin.site.register(FrequentExerciseType, FrequentExerciseTypeAdmin)
admin.autodiscover()