Created
December 5, 2017 00:26
-
-
Save henriquebastos/e340e1388dab24798f405bf0df6345a9 to your computer and use it in GitHub Desktop.
Esboço para o Antonio
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# models.py | |
CREDIT = 'C' | |
DEBIT = 'D' | |
class CategoryStatementQuerySet(QuerySet): | |
def credit(): | |
return self.filter(operacao__exact=CREDIT) | |
def debit(): | |
return self.filter(operacao__exact=DEBIT) | |
def by_category(category): | |
return self.filter(nome__nome__contains=category).order_by('-datapgto') | |
def total(): | |
return self.aggregate(Sum('valor')) | |
class Pagamento(models.Model): | |
... | |
objects = models.Manager.from_queryset(CategoryStatementQuerySet)() | |
# relatorios.py | |
class RelatorioCategoria: | |
def __init__(category): | |
self.category = category | |
self.pagamentos = Pagamento.by_category(category) | |
self.receita = self.pagamentos.credit().total() | |
self.despesa = self.pagamentos.debit().total() | |
@property | |
def total(self): | |
r = self.receita.get('valor__sum') or 0 | |
d = self.despesa.get('valor__sum') or 0 | |
return = r - d | |
# views.py | |
# /lancamentos/category/?nome=cachaca | |
def nomes(request): | |
category = request.GET.get('nome', '') | |
context = { | |
'relatorio': RelatorioCategoria(category), | |
} | |
return render(request, 'lancamentos/relatorio_n_form.html', context) | |
# Como usa no template | |
# {{ relatorio.receita }} | |
# {{ relatorio.despesa }} | |
# {{ relatorio.category }} | |
# {{ relatorio.total }} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment