summaryrefslogtreecommitdiff
path: root/django/db/models/sql/datastructures.py
diff options
context:
space:
mode:
authorRussell Keith-Magee <russell@keith-magee.com>2009-01-15 11:06:34 +0000
committerRussell Keith-Magee <russell@keith-magee.com>2009-01-15 11:06:34 +0000
commitcc4e4d9aee0b3ebfb45bee01aec79edc9e144c78 (patch)
tree2cdba846a105d406ecceff2c02e071c50502d487 /django/db/models/sql/datastructures.py
parent50a293a0c31e7325ebd520338f9c8881f951d8a7 (diff)
Fixed #3566 -- Added support for aggregation to the ORM. See the documentation for details on usage.
Many thanks to: * Nicolas Lara, who worked on this feature during the 2008 Google Summer of Code. * Alex Gaynor for his help debugging and fixing a number of issues. * Justin Bronn for his help integrating with contrib.gis. * Karen Tracey for her help with cross-platform testing. * Ian Kelly for his help testing and fixing Oracle support. * Malcolm Tredinnick for his invaluable review notes. git-svn-id: http://code.djangoproject.com/svn/django/trunk@9742 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'django/db/models/sql/datastructures.py')
-rw-r--r--django/db/models/sql/datastructures.py53
1 files changed, 0 insertions, 53 deletions
diff --git a/django/db/models/sql/datastructures.py b/django/db/models/sql/datastructures.py
index 913d8fde25..4d53999c79 100644
--- a/django/db/models/sql/datastructures.py
+++ b/django/db/models/sql/datastructures.py
@@ -25,59 +25,6 @@ class RawValue(object):
def __init__(self, value):
self.value = value
-class Aggregate(object):
- """
- Base class for all aggregate-related classes (min, max, avg, count, sum).
- """
- def relabel_aliases(self, change_map):
- """
- Relabel the column alias, if necessary. Must be implemented by
- subclasses.
- """
- raise NotImplementedError
-
- def as_sql(self, quote_func=None):
- """
- Returns the SQL string fragment for this object.
-
- The quote_func function is used to quote the column components. If
- None, it defaults to doing nothing.
-
- Must be implemented by subclasses.
- """
- raise NotImplementedError
-
-class Count(Aggregate):
- """
- Perform a count on the given column.
- """
- def __init__(self, col='*', distinct=False):
- """
- Set the column to count on (defaults to '*') and set whether the count
- should be distinct or not.
- """
- self.col = col
- self.distinct = distinct
-
- def relabel_aliases(self, change_map):
- c = self.col
- if isinstance(c, (list, tuple)):
- self.col = (change_map.get(c[0], c[0]), c[1])
-
- def as_sql(self, quote_func=None):
- if not quote_func:
- quote_func = lambda x: x
- if isinstance(self.col, (list, tuple)):
- col = ('%s.%s' % tuple([quote_func(c) for c in self.col]))
- elif hasattr(self.col, 'as_sql'):
- col = self.col.as_sql(quote_func)
- else:
- col = self.col
- if self.distinct:
- return 'COUNT(DISTINCT %s)' % col
- else:
- return 'COUNT(%s)' % col
-
class Date(object):
"""
Add a date selection column.