- Timestamp:
- Mar 24, 2010, 5:13:25 AM (15 years ago)
- Branches:
- master, client
- Children:
- 3f1e074
- Parents:
- 86817cf
- git-author:
- Alex Dehnert <adehnert@…> (03/24/10 05:13:25)
- git-committer:
- Alex Dehnert <adehnert@…> (03/24/10 05:13:25)
- Location:
- remit
- Files:
-
- 1 added
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
remit/finance_core/urls.py
r92ca60e red4ccc7 4 4 urlpatterns = patterns('', 5 5 (r'^display_accounts', finance_core.views.display_tree), 6 url(r'reporting/', finance_core.views.reporting, name='reporting', ), 6 7 ) -
remit/finance_core/views.py
r86817cf red4ccc7 1 1 from django.http import HttpResponse 2 2 import finance_core.models 3 from django.contrib.auth.decorators import user_passes_test 4 from django.shortcuts import render_to_response, get_object_or_404 5 from django.template import RequestContext 6 from django.http import Http404, HttpResponseRedirect 7 from django.db.models import Q, Sum 8 from decimal import Decimal 3 9 4 10 def display_tree(request): 5 11 root = finance_core.models.BudgetArea.get_by_path(['Accounts']) 6 12 return HttpResponse(root.dump_to_html()) 13 14 def reporting(request): 15 line_items = finance_core.models.LineItem.objects.all() 16 term_name = 'All' 17 if 'term' in request.REQUEST: 18 term_obj = get_object_or_404(finance_core.models.BudgetTerm, slug=request.REQUEST['term']) 19 term_name = term_obj.name 20 line_items = line_items.filter(budget_term=term_obj) 21 if 'area' in request.REQUEST: 22 base_area_obj = get_object_or_404(finance_core.models.BudgetArea, pk=request.REQUEST['area']) 23 else: 24 base_area_obj = finance_core.models.BudgetArea.get_by_path(['Accounts']) 25 line_items = line_items.filter(budget_area__in=base_area_obj.get_descendants()) 26 base_area_depth = base_area_obj.depth 27 print base_area_obj 28 29 primary_name = 'Budget Areas' 30 primary_axis = [ 31 (area.indented_name(base_area_depth), Q(budget_area=area), ) for area in base_area_obj.get_descendants() 32 ] 33 secondary_name = 'Layers' 34 secondary_axis = [ (finance_core.models.layer_name(layer), Q(layer=finance_core.models.layer_num(layer)), ) for layer in finance_core.models.layers ] 35 36 primary_axis.append(('Total', Q(), )) 37 secondary_axis.append(('Total', Q(), )) 38 39 primary_labels = [ primary[0] for primary in primary_axis ] 40 secondary_labels = [ secondary[0] for secondary in secondary_axis ] 41 42 zero = Decimal('0.00') 43 def total_amount(queryset): 44 amount = queryset.aggregate(Sum('amount'))['amount__sum'] 45 if amount is None: return zero 46 else: return amount 47 table = [ # Primary axis 48 [ # Secondary axis 49 total_amount(line_items.filter(primary[1], secondary[1])) 50 for secondary in secondary_axis] 51 for primary in primary_axis] 52 53 debug = False 54 if debug: 55 from django.db import connection 56 print connection.queries 57 print "Number of queries:\t%d" % (len(connection.queries),) 58 print "Table size:\t%dx%d" % (len(primary_labels), len(secondary_labels), ) 59 60 context = { 61 'pagename':'reporting', 62 'term_name': term_name, 63 'area': base_area_obj, 64 'primary_name': primary_name, 65 'secondary_name': secondary_name, 66 'primary_labels': primary_labels, 67 'secondary_labels': secondary_labels, 68 'table': table, 69 'table_with_row_labels': zip(primary_labels, table), 70 } 71 return render_to_response('finance_core/reporting.html', context, context_instance=RequestContext(request), ) -
remit/media/style/style.css
rf114f8b red4ccc7 78 78 background: #F88; 79 79 } 80 81 table.money-table td 82 { 83 text-align: right; 84 } 85 table.money-table th 86 { 87 white-space: pre-wrap; 88 text-align: left; 89 font-weight: normal; 90 } -
remit/remit_templates/base.html
r3a0c51b red4ccc7 16 16 <li{% ifequal pagename "list_requests" %} class='selected'{% endifequal %}><a href="{% url list_requests %}">List requests</a></li> 17 17 {% endif %} 18 <li{% ifequal pagename "reporting" %} class='selected'{% endifequal %}><a href="{% url reporting %}">Reporting</a></li> 18 19 </ul> 19 20 <div id='content'>
Note: See TracChangeset
for help on using the changeset viewer.