app/django/core/xheaders.py
author Pawel Solyga <Pawel.Solyga@gmail.com>
Mon, 18 May 2009 14:05:38 +0200
changeset 2322 98fe07a5542f
parent 54 03e267d67478
permissions -rw-r--r--
Add acceptedStudentsCSVExport function to stats.py script. This funtion is used to generate CSV with all accepted students. It still needs some work and I left TODOs there. I also added helper function for saving data to CSV, which can be reused for other kinds of reports.

"""
Pages in Django can are served up with custom HTTP headers containing useful
information about those pages -- namely, the content type and object ID.

This module contains utility functions for retrieving and doing interesting
things with these special "X-Headers" (so called because the HTTP spec demands
that custom headers are prefixed with "X-").

Next time you're at slashdot.org, watch out for X-Fry and X-Bender. :)
"""

def populate_xheaders(request, response, model, object_id):
    """
    Adds the "X-Object-Type" and "X-Object-Id" headers to the given
    HttpResponse according to the given model and object_id -- but only if the
    given HttpRequest object has an IP address within the INTERNAL_IPS setting
    or if the request is from a logged in staff member.
    """
    from django.conf import settings
    if (request.META.get('REMOTE_ADDR') in settings.INTERNAL_IPS
            or (hasattr(request, 'user') and request.user.is_authenticated()
                and request.user.is_staff)):
        response['X-Object-Type'] = "%s.%s" % (model._meta.app_label, model._meta.object_name.lower())
        response['X-Object-Id'] = str(object_id)