Author: floguy
Date: Wed Oct 15 22:24:22 2008
New Revision: 45

Modified:
    trunk/things/__init__.py
    trunk/things/fields.py
    trunk/things/options.py

Log:
Added support for a default sort field.

Modified: trunk/things/__init__.py
==============================================================================
--- trunk/things/__init__.py    (original)
+++ trunk/things/__init__.py    Wed Oct 15 22:24:22 2008
@@ -7,7 +7,8 @@
      return [
          Thing, ModelThing, ThingGroup, OrderField, ForeignKeyAggregate,
          GenericForeignKeyAggregate, OrderSumField, OrderCountField,
-        OrderGenericCountField, OrderGenericSumField, ThingSite, site
+        OrderGenericCountField, OrderGenericSumField, ThingSite, site,
+        ASCENDING, DESCENDING
      ]

  def autodiscover():

Modified: trunk/things/fields.py
==============================================================================
--- trunk/things/fields.py      (original)
+++ trunk/things/fields.py      Wed Oct 15 22:24:22 2008
@@ -6,7 +6,10 @@

  __all__ =  
('OrderField', 'ForeignKeyAggregate', 'GenericForeignKeyAggregate',
      'OrderSumField', 'OrderCountField', 'OrderGenericCountField',
-    'OrderGenericSumField')
+    'OrderGenericSumField', 'ASCENDING', 'DESCENDING')
+
+ASCENDING = 1
+DESCENDING = 2

  qn = connection.ops.quote_name

@@ -23,7 +26,8 @@
      def __init__(self, verbose_name_asc=None, verbose_name_desc=None,
                   url_asc=None, url_desc=None, field_url=None,
                   custom_aggregate_function=None,  
default_sort_descending=True,
-                 reverse=False, custom_aggregate_dict_function=None):
+                 reverse=False, custom_aggregate_dict_function=None,
+                 default_order_field=None):
          self._verbose_name_asc = verbose_name_asc
          self._verbose_name_desc = verbose_name_desc
          self._url_asc = url_asc
@@ -33,6 +37,7 @@
          self.default_sort_descending = default_sort_descending
          self.custom_aggregate_function = custom_aggregate_function
          self.custom_aggregate_dict_function =  
custom_aggregate_dict_function
+        self.default_order_field = default_order_field

      def _get_verbose_name_asc(self):
          if self._verbose_name_asc:

Modified: trunk/things/options.py
==============================================================================
--- trunk/things/options.py     (original)
+++ trunk/things/options.py     Wed Oct 15 22:24:22 2008
@@ -6,10 +6,13 @@
  from django.template.loader import select_template
  from django.core.urlresolvers import reverse
  from django.db.models import Q
-from things.fields import BaseField, AggregateBase
+from things.fields import BaseField, AggregateBase, DESCENDING

  __all__ = ('Thing', 'ModelThing', 'ThingGroup')

+class MultipleDefaultOrderFields(Exception):
+    pass
+
  class BaseThingMetaclass(type):
      def __new__(cls, name, bases, attrs):
          fields = {}
@@ -34,11 +37,18 @@
          self.qs = qs
          self.model = qs.model
          self.opts = self.model._meta
+        self.default_order_field = None
          fields = copy.deepcopy(self.fields)
          for (name, field) in fields.iteritems():
              assert isinstance(field, BaseField) == True
              field.parent = self
              field.field_name = name
+            if getattr(field, 'default_order_field', None) is not None:
+                if self.default_order_field is None:
+                    self.default_order_field = field
+                else:
+                    raise  
MultipleDefaultOrderFields([self.default_order_field,
+                        field])
          self.fields = fields
          if not self.detail_template_name:
              self.detail_template_name = '%s_detail.html' %  
self.opts.module_name
@@ -59,6 +69,9 @@
              else:
                  q_list = [Q(**{'%s__icontains' % s: terms}) for s in  
self.search]
                  items = items.filter(reduce(or_, q_list))
+        if field is None:
+            field = self.default_order_field
+            descending = getattr(field, 'default_order_field', None) ==  
DESCENDING
          if field is not None:
              reverse = descending ^ field.reverse
              pre = ''

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"pinax-updates" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/pinax-updates?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to