Changeset 8708a86


Ignore:
Timestamp:
Mar 31, 2012, 3:12:55 PM (14 years ago)
Author:
Alex Dehnert <adehnert@…>
Branches:
master, space-access, stable, stage
Children:
747c960
Parents:
d1a4706
git-author:
Alex Dehnert <adehnert@…> (03/31/12 06:06:20)
git-committer:
Alex Dehnert <adehnert@…> (03/31/12 15:12:55)
Message:

Basic reporting functionality

  • Allows picking your filter
  • Allows picking your fields
  • Does not allow displaying signatories
  • Does not allow sorting
  • Does not allow CSV output
Location:
asadb
Files:
1 added
4 edited

Legend:

Unmodified
Added
Removed
  • asadb/groups/models.py

    rfd5cc07 r8708a86  
    9797    def __str__(self, ):
    9898        return self.name
     99
     100    @classmethod
     101    def reporting_fields(cls, ):
     102        fields = cls._meta.fields
     103        return [(f.name, f.verbose_name) for f in fields]
    99104
    100105    class Meta:
  • asadb/groups/urls.py

    raa2aa58 r8708a86  
    1818    url(r'^recognize/nge/$', groups.views.recognize_nge, name='recognize-nge', ),
    1919    url(r'^search/$', groups.views.search_groups, name='search', ),
     20    url(r'^reporting/$', groups.views.reporting, name='reporting', ),
    2021    url(r'^recent_changes/$', groups.views.GroupHistoryView.as_view(), name='manage-history', ),
    2122    url(r'^signatories/$', groups.views.view_signatories, name='signatories', ),
  • asadb/groups/views.py

    rd1a4706 r8708a86  
    782782        return render_to_response('groups/group_search.html', context, context_instance=RequestContext(request), )
    783783
     784class ReportingForm(form_utils.forms.BetterForm):
     785    _basic_fields = groups.models.Group.reporting_fields()
     786    basic_fields_labels = dict(_basic_fields) # name -> verbose_name
     787    basic_fields = forms.fields.MultipleChoiceField(choices=_basic_fields, widget=forms.CheckboxSelectMultiple)
     788
     789    class Meta:
     790        fieldsets = [
     791            ('filter', {
     792                'legend': 'Filter Groups',
     793                'fields': ['name', 'abbreviation', 'activity_category', 'group_class', 'group_status', 'group_funding', ],
     794            }),
     795            ('display', {
     796                'legend': 'Data to display',
     797                'fields': ['basic_fields', ],
     798            }),
     799        ]
     800
     801    def __init__(self, *args, **kwargs):
     802        super(ReportingForm, self).__init__(*args, **kwargs)
     803
     804class GroupReportingFilter(GroupFilter):
     805    class Meta(GroupFilter.Meta):
     806        form = ReportingForm
     807
     808    def __init__(self, data=None, *args, **kwargs):
     809        if data is None: data = {}
     810        else: data = data.copy()
     811        #data.setdefault('basic_fields', ['id', 'name'], )
     812        super(GroupReportingFilter, self).__init__(data, *args, **kwargs)
     813
     814@permission_required('groups.view_group_private_info')
     815def reporting(request, ):
     816    the_groups = groups.models.Group.objects.all()
     817    groups_filterset = GroupReportingFilter(request.GET, the_groups)
     818    form = groups_filterset.form
     819
     820    col_labels = []
     821    report_groups = []
     822    run_report = 'go' in request.GET and form.is_valid()
     823    if run_report:
     824        basic_fields = form.cleaned_data['basic_fields']
     825        col_labels = [form.basic_fields_labels[field] for field in basic_fields]
     826        for group in groups_filterset.qs:
     827            group_data = [getattr(group, field) for field in basic_fields]
     828            report_groups.append(group_data)
     829    else:
     830        pass
     831
     832    context = {
     833        'form': form,
     834        'run_report': run_report,
     835        'column_labels': col_labels,
     836        'report_groups': report_groups,
     837        'pagename': 'groups',
     838    }
     839    return render_to_response('groups/reporting.html', context, context_instance=RequestContext(request), )
     840
    784841
    785842class GroupHistoryView(ListView):
  • asadb/template/index.html

    r9ec48f9 r8708a86  
    3333        <li><a href='{%url groups:list%}'>List of groups</a></li>
    3434        {%if perms.groups.view_signatories %}<li><a href='{% url groups:signatories %}'>View Signatories</a></li>{%endif%}
     35        {%if perms.groups.view_group_private_info %}<li><a href='{%url groups:reporting%}'>Reporting</a></li>{%endif%}
    3536        <li><a href='{%url groups:account-lookup%}'>Account lookup</a></li>
    3637    </ul></li>
Note: See TracChangeset for help on using the changeset viewer.