from django.db.models import Sum from django.utils import timezone from Base.models import Professional from Movement.models import Calendar, Expense def metric(): Professionals = Professional.objects.all() # current_month = timezone.localtime(timezone.now()).month # current_year = timezone.localtime(timezone.now()).year sum_expense_prof = {} for Prof in Professionals: sum_ = Expense.objects.filter( # active=True, firm=False, professional__name=Prof.name, # date__month=current_month, # date__year=current_year ).aggregate(Sum('gross_value'))['gross_value__sum'] or 0 sum_expense_prof[Prof.name] = sum_ sum_serv_prof = {} for Prof in Professionals: sum_ = Calendar.objects.filter( # active=True, professional__name=Prof.name, # date__month=current_month, # date__year=current_year ).aggregate(Sum('prof_money'))['prof_money__sum'] or 0 sum_serv_prof[Prof.name] = sum_ sum_total = {} for total in Professionals: sum1 = sum_serv_prof.get(str(total.name)) sum2 = sum_expense_prof.get(str(total.name)) sum_total[total.name] = ( sum1 - sum2 ) return sum_total