Changeset c968555 for remit/finance_core


Ignore:
Timestamp:
Mar 27, 2010, 5:03:53 PM (15 years ago)
Author:
Alex Dehnert <adehnert@…>
Branches:
master, client
Children:
193dfcd
Parents:
ae83758
git-author:
Alex Dehnert <adehnert@…> (03/27/10 17:03:53)
git-committer:
Alex Dehnert <adehnert@…> (03/27/10 17:03:53)
Message:

Improve filtering by layer and area

File:
1 edited

Legend:

Unmodified
Added
Removed
  • remit/finance_core/views.py

    r8a0d18c rc968555  
    1616    line_items = finance_core.models.LineItem.objects.all()
    1717    compute_method = 'default'
     18    if 'compute_method' in request.REQUEST:
     19        compute_method = request.REQUEST['compute_method']
    1820
    1921    # Main limit to lineitems, relative to primary axis
    20     main_lineitem_limit_primary = Q()
    21     if 'compute_method' in request.REQUEST:
    22         compute_method = request.REQUEST['compute_method']
     22    main_lineitem_limits_primary = []
    2323    if 'term' in request.REQUEST and not request.REQUEST['term'] == 'all':
    2424        term_obj = get_object_or_404(finance_core.models.BudgetTerm, slug=request.REQUEST['term'])
    2525        term_name = term_obj.name
    2626        line_items = line_items.filter(budget_term=term_obj)
    27         main_lineitem_limit_primary = Q(lineitem__budget_term=term_obj)
     27        main_lineitem_limits_primary.append(Q(lineitem__budget_term=term_obj))
    2828    else:
    2929        term_obj = None
     
    3333    else:
    3434        base_area_obj = finance_core.models.BudgetArea.get_by_path(['Accounts'])
    35     line_items = line_items.filter(budget_area__in=base_area_obj.get_descendants())
     35    all_relevant_areas = base_area_obj.get_descendants()
     36    line_items = line_items.filter(budget_area__in=all_relevant_areas)
     37    main_lineitem_limits_primary.append(Q(lineitem__budget_area__in=all_relevant_areas))
     38    if 'layer' in request.REQUEST and request.REQUEST['layer'] != 'all':
     39        try:
     40            layer_id = int(request.REQUEST['layer'])
     41            layer = finance_core.models.get_layer_by_num(layer_id)
     42        except KeyError:
     43            raise Http404("Invalid layer %s request" % request.REQUEST['layer'])
     44        line_items = line_items.filter(layer=layer_id)
     45        main_lineitem_limits_primary.append(Q(lineitem__layer=layer_id))
     46    else:
     47        layer = 'all'
     48    main_lineitem_limit_primary = Q(*main_lineitem_limits_primary)
    3649
    3750    # Initialize the axis
     
    8295
    8396    term_options = finance_core.models.BudgetTerm.objects.all()
     97    area_options = finance_core.models.BudgetArea.objects.filter(always=True)
    8498    context = {
    8599        'pagename':'reporting',
     
    87101        'term_options': term_options,
    88102        'area': base_area_obj,
     103        'area_options': area_options,
     104        'layer': layer,
     105        'layer_options': finance_core.models.layers,
    89106        'axes': finance_core.reporting.axes,
    90107        'primary_name': primary_name,
Note: See TracChangeset for help on using the changeset viewer.