Changeset 4b1f99b


Ignore:
Timestamp:
Mar 31, 2012, 7:07:26 PM (14 years ago)
Author:
Alex Dehnert <adehnert@…>
Branches:
master, space-access, stable, stage
Children:
9becc84
Parents:
c409ae1
git-author:
Alex Dehnert <adehnert@…> (03/31/12 19:07:26)
git-committer:
Alex Dehnert <adehnert@…> (03/31/12 19:07:26)
Message:

HTML format as appropriate

File:
1 edited

Legend:

Unmodified
Added
Removed
  • asadb/groups/views.py

    rc409ae1 r4b1f99b  
    1717from django.http import HttpResponse, Http404, HttpResponseRedirect
    1818from django.core.urlresolvers import reverse
     19from django.core.validators import URLValidator, EmailValidator, email_re
    1920from django.core.mail import EmailMessage, mail_admins
    2021from django import forms
     
    2223from django.db import connection
    2324from django.db.models import Q
     25from django.utils import html
    2426from django.utils.safestring import mark_safe
    2527
     
    3133from util.emails import email_from_template
    3234
    33 
     35urlvalidator = URLValidator()
     36emailvalidator = EmailValidator(email_re)
    3437
    3538############
     
    822825        super(GroupReportingFilter, self).__init__(data, *args, **kwargs)
    823826
     827def format_url(url):
     828    try:
     829        urlvalidator(url)
     830    except ValidationError:
     831        return url
     832    else:
     833        escaped = html.escape(url)
     834        return mark_safe("<a href='%s'>%s</a>" % (escaped, escaped))
     835
     836def format_email(email):
     837    try:
     838        emailvalidator(email)
     839    except ValidationError:
     840        return email
     841    else:
     842        escaped = html.escape(email)
     843        return mark_safe("<a href='mailto:%s'>%s</a>" % (escaped, escaped))
     844
     845
     846def format_id(pk):
     847    url = reverse('groups:group-detail', kwargs={'pk':pk})
     848    return mark_safe("<a href='%s'>%d</a>" % (url, pk))
     849
     850reporting_html_formatters = {
     851    'id': format_id,
     852    'website_url': format_url,
     853    'constitution_url': format_url,
     854    'group_email': format_email,
     855    'officer_email': format_email,
     856}
     857
    824858@permission_required('groups.view_group_private_info')
    825859def reporting(request, ):
     
    843877        if prefetch_fields:
    844878            qs = qs.select_related(*list(prefetch_fields))
     879
     880        # Assemble data
     881        if output_format == 'html':
     882            formatters = reporting_html_formatters
     883        else:
     884            formatters = {}
     885        def fetch_item(group, field):
     886            val = getattr(group, field)
     887            if field in formatters:
     888                val = formatters[field](val)
     889            return val
    845890        for group in qs:
    846             group_data = [getattr(group, field) for field in basic_fields]
     891            group_data = [fetch_item(group, field) for field in basic_fields]
    847892            report_groups.append(group_data)
    848893
Note: See TracChangeset for help on using the changeset viewer.