Changeset c968555


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

Location:
remit
Files:
3 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,
  • remit/remit_templates/finance_core/reporting.html

    r8a0d18c rc968555  
    1515    <td><select name='term'>
    1616    <option {% ifequal term_name "All" %}selected {% endifequal %}value='all'>All</option>
    17     {% for term_opt in term_options %}<option {% ifequal term_name term_opt.name %}selected {% endifequal %}value={{term_opt.slug}}>{{term_opt.name}}</option>{% endfor %}
     17    {% for term_opt in term_options %}<option {% ifequal term_name term_opt.name %}selected {% endifequal %}value='{{term_opt.slug}}'>{{term_opt.name}}</option>{% endfor %}
    1818    </select></td>
    1919</tr>
    2020<tr>
    2121    <th>Budget Area</th>
    22     <td>{{area}}</td>
     22    <td><select name='area'>
     23    {% for area_opt in area_options %}<option {%ifequal area area_opt %}selected {%endifequal%}value='{{area_opt.pk}}'>{{area_opt.indented_name}}</option>{%endfor%}
     24    </select></td>
     25</tr>
     26<tr>
     27    <th>Layer</th>
     28    <td><select name='layer'>
     29    <option {%ifequal layer "all"%}selected {%endifequal%}value='all'>All</option>
     30    {% for layer_opt in layer_options %}<option {%ifequal layer layer_opt %}selected {%endifequal%}value='{{layer_opt|layer_num}}'>{{layer_opt|layer_name}}</option>{%endfor%}
     31    </select></td>
    2332</tr>
    2433<tr>
  • remit/util/templatetags/misc.py

    rf114f8b rc968555  
    11from django import template
     2import finance_core.models
    23
    34register = template.Library()
     
    2223        if num == value: return name.lower()
    2324    else: return value
     25
     26register.filter('layer_num', finance_core.models.layer_num)
     27register.filter('layer_name', finance_core.models.layer_name)
Note: See TracChangeset for help on using the changeset viewer.