Django

Code

root/django/branches/gis/django/shortcuts/__init__.py

Revision 6920, 2.2 kB (checked in by jbronn, 1 year ago)

gis: Merged revisions 6672,6686-6688,6690,6693,6707-6708,6726,6730,6753,6755-6762,6764,6776-6777,6779,6782-6919 via svnmerge from trunk; reverted oracle backend base.py due to ikelly's patch in r6905.

  • Property svn:eol-style set to native
  • Property svn:keywords set to LastChangedRevision
Line 
1 """
2 This module collects helper functions and classes that "span" multiple levels
3 of MVC. In other words, these functions/classes introduce controlled coupling
4 for convenience's sake.
5 """
6
7 from django.template import loader
8 from django.http import HttpResponse, Http404
9 from django.db.models.manager import Manager
10 from django.db.models.query import QuerySet
11
12 def render_to_response(*args, **kwargs):
13     """
14     Returns a HttpResponse whose content is filled with the result of calling
15     django.template.loader.render_to_string() with the passed arguments.
16     """
17     httpresponse_kwargs = {'mimetype': kwargs.pop('mimetype', None)}
18     return HttpResponse(loader.render_to_string(*args, **kwargs), **httpresponse_kwargs)
19
20 def _get_queryset(klass):
21     """
22     Returns a QuerySet from a Model, Manager, or QuerySet. Created to make
23     get_object_or_404 and get_list_or_404 more DRY.
24     """
25     if isinstance(klass, QuerySet):
26         return klass
27     elif isinstance(klass, Manager):
28         manager = klass
29     else:
30         manager = klass._default_manager
31     return manager.all()
32
33 def get_object_or_404(klass, *args, **kwargs):
34     """
35     Uses get() to return an object, or raises a Http404 exception if the object
36     does not exist.
37
38     klass may be a Model, Manager, or QuerySet object. All other passed
39     arguments and keyword arguments are used in the get() query.
40
41     Note: Like with get(), an MultipleObjectsReturned will be raised if more than one
42     object is found.
43     """
44     queryset = _get_queryset(klass)
45     try:
46         return queryset.get(*args, **kwargs)
47     except queryset.model.DoesNotExist:
48         raise Http404('No %s matches the given query.' % queryset.model._meta.object_name)
49
50 def get_list_or_404(klass, *args, **kwargs):
51     """
52     Uses filter() to return a list of objects, or raise a Http404 exception if
53     the list is empty.
54
55     klass may be a Model, Manager, or QuerySet object. All other passed
56     arguments and keyword arguments are used in the filter() query.
57     """
58     queryset = _get_queryset(klass)
59     obj_list = list(queryset.filter(*args, **kwargs))
60     if not obj_list:
61         raise Http404('No %s matches the given query.' % queryset.model._meta.object_name)
62     return obj_list
Note: See TracBrowser for help on using the browser.