Skip to content

Instantly share code, notes, and snippets.

@henriquebastos
Created December 5, 2017 00:26
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save henriquebastos/e340e1388dab24798f405bf0df6345a9 to your computer and use it in GitHub Desktop.
Save henriquebastos/e340e1388dab24798f405bf0df6345a9 to your computer and use it in GitHub Desktop.
Esboço para o Antonio
# 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