Add soc.views.simple containing (initially) two simple template views.
templateWithLinkName() is a view that can replace most public() read-only
views. errorResponse() is a view that renders an error page for
out_of_band.ErrorResponse exceptions. Also, change response_helpers.respond()
to accept keyword arguments to pass to http.HttpResponse(). (errorResponse()
makes use of this new respond() feature.)
Patch by: Todd Larsen
Review by: to-be-reviewed
"""
Various data structures used in query construction.
Factored out from django.db.models.query so that they can also be used by other
modules without getting into circular import difficulties.
"""
from copy import deepcopy
from django.utils import tree
class QueryWrapper(object):
"""
A type that indicates the contents are an SQL fragment and the associate
parameters. Can be used to pass opaque data to a where-clause, for example.
"""
def __init__(self, sql, params):
self.data = sql, params
class Q(tree.Node):
"""
Encapsulates filters as objects that can then be combined logically (using
& and |).
"""
# Connection types
AND = 'AND'
OR = 'OR'
default = AND
def __init__(self, *args, **kwargs):
super(Q, self).__init__(children=list(args) + kwargs.items())
def _combine(self, other, conn):
if not isinstance(other, Q):
raise TypeError(other)
obj = deepcopy(self)
obj.add(other, conn)
return obj
def __or__(self, other):
return self._combine(other, self.OR)
def __and__(self, other):
return self._combine(other, self.AND)
def __invert__(self):
obj = deepcopy(self)
obj.negate()
return obj