Author: floguy
Date: Sun Sep  7 12:37:37 2008
New Revision: 6

Added:
    trunk/thingsproject/twitter/admin.py
Modified:
    trunk/things/fields.py
    trunk/things/options.py
    trunk/things/sites.py
    trunk/things/templates/things/thing_list.html
    trunk/thingsproject/dev.db
    trunk/thingsproject/twitter/thing.py
    trunk/thingsproject/urls.py

Log:
Updated to newforms-admin, and did quite a lot of refactoring.

Modified: trunk/things/fields.py
==============================================================================
--- trunk/things/fields.py      (original)
+++ trunk/things/fields.py      Sun Sep  7 12:37:37 2008
@@ -16,12 +16,12 @@
      field_name = None

      def __init__(self, verbose_name_asc=None, verbose_name_desc=None,
-                 url_asc=None, url_desc=None, url_prefix=''):
+                 url_asc=None, url_desc=None, field_url=None):
          self._verbose_name_asc = verbose_name_asc
          self._verbose_name_desc = verbose_name_desc
          self._url_asc = url_asc
          self._url_desc = url_desc
-        self.url_prefix = url_prefix
+        self._field_url = field_url

      def _get_verbose_name_asc(self):
          if self._verbose_name_asc:
@@ -43,7 +43,7 @@
          elif self._verbose_name_asc:
              return defaultfilters.slugify(self._verbose_name_asc)
          else:
-            return u'ascending'
+            return 'ascending'
      url_asc = property(_get_url_asc, create_setter('_url_asc'))

      def _get_url_desc(self):
@@ -52,17 +52,28 @@
          elif self._verbose_name_desc:
              return defaultfilters.slugify(self._verbose_name_desc)
          else:
-            return u'descending'
+            return 'descending'
      url_desc = property(_get_url_desc, create_setter('_url_desc'))

+    def _get_field_url(self):
+        if self._field_url:
+            return self._field_url
+        else:
+            return self.field_name
+    field_url = property(_get_field_url, create_setter('_field_url'))
+
      def full_url_asc(self):
-        return reverse('%s_list_asc' % self.parent.name_prefix, kwargs={
-            'app_label': self.parent.model._meta.app_label,
-            'model_name': self.parent.model._meta.module_name,
+        return reverse('%s_%s_list_asc' % (
+            self.parent.name_prefix, self.field_url),
+            kwargs={
+                'app_label': self.parent.model._meta.app_label,
+                'model_name': self.parent.model._meta.module_name,
          })

      def full_url_desc(self):
-        return reverse('%s_list_desc' % self.parent.name_prefix, kwargs={
-            'app_label': self.parent.model._meta.app_label,
-            'model_name': self.parent.model._meta.module_name,
+        return reverse('%s_%s_list_desc' % (
+            self.parent.name_prefix, self.field_url),
+            kwargs={
+                'app_label': self.parent.model._meta.app_label,
+                'model_name': self.parent.model._meta.module_name,
          })

Modified: trunk/things/options.py
==============================================================================
--- trunk/things/options.py     (original)
+++ trunk/things/options.py     Sun Sep  7 12:37:37 2008
@@ -8,15 +8,28 @@

  DETAIL_RE = re.compile('^(\d+)/$')

+class ModelThingMetaclass(type):
+    def __new__(cls, name, bases, attrs):
+        fields = {}
+        for k, v in attrs.iteritems():
+            if isinstance(v, BaseField):
+                fields[k] = v
+        attrs['fields'] = fields
+        new_class = super(ModelThingMetaclass, cls).__new__(cls, name,  
bases,
+            attrs)
+        return new_class
+
  class ModelThing(object):
-    order_fields = []
+    __metaclass__ = ModelThingMetaclass
+
+    fields = {}

      def __init__(self, model, thing_site):
          self.model = model
          self.opts = model._meta
          self.thing_site = thing_site
          super(ModelThing, self).__init__() # TODO: Think about order of  
operations
-        for (name, field) in self.order_fields.iteritems():
+        for (name, field) in self.fields.iteritems():
              assert isinstance(field, BaseField) == True
              field.parent = self
              field.field_name = name
@@ -24,33 +37,34 @@
      def urls(self, prefix, name_prefix):
          self.name_prefix = name_prefix # Is this robust enough? Needs  
testing.
          tmp_urls = [
-            url('%s%s%s/' % (prefix, field.url_prefix, field.url_asc),
+            url('%sorder/%s/%s/' % (prefix,
+                field.field_url, field.url_asc),
                  self.list_view,
-                {'order': field, 'descending': False},
-                name='%s_list_asc' % name_prefix)
-            for (name, field) in self.order_fields.iteritems()
+                {'descending': False, 'field':  
self.fields.get(field.field_name, None)},
+                name='%s_%s_list_asc' % (name_prefix, field.field_url))
+            for (name, field) in self.fields.iteritems()
          ]
          tmp_urls.extend([
-            url('%s%s%s/' % (prefix, field.url_prefix, field.url_desc),
+            url('%sorder/%s/%s/' % (prefix,
+                field.field_url, field.url_desc),
                  self.list_view,
-                {'order': field, 'descending': True},
-                name='%s_list_desc' % name_prefix)
-            for (name, field) in self.order_fields.iteritems()
+                {'descending': True, 'field':  
self.fields.get(field.field_name, None)},
+                name='%s_%s_list_desc' % (name_prefix, field.field_url))
+            for (name, field) in self.fields.iteritems()
          ])
          return patterns('', *tmp_urls)

-    def list_view(self, request, order=None, descending=False,  
app_label=None, model_name=None):
+    def list_view(self, request, descending=False, app_label=None,  
model_name=None, field=None):
          assert app_label is None or app_label == self.model._meta.app_label
          assert model_name is None or model_name ==  
self.model._meta.module_name
-        resp = HttpResponse('<ul>')
          items = self.model._default_manager.all()
-        if order is not None:
+        if field is not None:
              pre = ''
              if descending == True:
                  pre = '-'
-            items = items.order_by('%s%s' % (pre, order.field_name))
-        context = {'items': items, 'order_fields':  
self.order_fields.values(),
-                   'order': order, 'name_prefix': self.name_prefix}
+            items = items.order_by('%s%s' % (pre, field.field_name))
+        context = {'items': items, 'fields': self.fields.values(),
+                   'field': field, 'name_prefix': self.name_prefix}
          return render_to_response('things/thing_list.html', context,
                                    context_instance=RequestContext(request))


Modified: trunk/things/sites.py
==============================================================================
--- trunk/things/sites.py       (original)
+++ trunk/things/sites.py       Sun Sep  7 12:37:37 2008
@@ -56,14 +56,16 @@
          )
          for (model, model_thing) in self._registry.iteritems():
              urlpatterns += patterns('',
-                url(r'%s(?P<app_label>\w+)/(?P<model_name>\w+)/$' % prefix,
+                url(r'%s(?P<app_label>%s)/(?P<model_name>%s)/$' % (prefix,
+                    model._meta.app_label, model._meta.module_name),
                      self.dispatch, {'func': 'list_view'},
                      name='%s_list' % self.name_prefix),
-                 
url(r'%s(?P<app_label>\w+)/(?P<model_name>\w+)/detail/(?P<pk>\d+)/$' %  
prefix,
+                 
url(r'%s(?P<app_label>%s)/(?P<model_name>%s)/detail/(?P<pk>\d+)/$' %  
(prefix,
+                        model._meta.app_label, model._meta.module_name),
                      self.dispatch, {'func': 'detail_view'},
                      name='%s_detail' % self.name_prefix)
              )
-            urlpatterns +=  
model_thing.urls("%s(?P<app_label>\w+)/(?P<model_name>\w+)/" % prefix,  
self.name_prefix)
+            urlpatterns +=  
model_thing.urls("%s(?P<app_label>%s)/(?P<model_name>%s)/" % (prefix,  
model._meta.app_label, model._meta.module_name), self.name_prefix)
          return urlpatterns

      def dispatch(self, request, *args, **kwargs):

Modified: trunk/things/templates/things/thing_list.html
==============================================================================
--- trunk/things/templates/things/thing_list.html       (original)
+++ trunk/things/templates/things/thing_list.html       Sun Sep  7 12:37:37 2008
@@ -4,9 +4,9 @@
  {% block main_content %}
      <p>Order By:</p>
      <ul>
-        {% for order_field in order_fields %}
-            <li><a href="{{ order_field.full_url_asc }}">{{  
order_field.verbose_name_asc }}</a></li>
-            <li><a href="{{ order_field.full_url_desc }}">{{  
order_field.verbose_name_desc }}</a></li>
+        {% for field in fields %}
+            <li><a href="{{ field.full_url_asc }}">{{  
field.verbose_name_asc }}</a></li>
+            <li><a href="{{ field.full_url_desc }}">{{  
field.verbose_name_desc }}</a></li>
          {% endfor %}
      </ul>
      <ul>

Modified: trunk/thingsproject/dev.db
==============================================================================
Binary files. No diff available.

Added: trunk/thingsproject/twitter/admin.py
==============================================================================
--- (empty file)
+++ trunk/thingsproject/twitter/admin.py        Sun Sep  7 12:37:37 2008
@@ -0,0 +1,5 @@
+from django.contrib import admin
+
+from models import Tweet
+
+admin.site.register(Tweet)
\ No newline at end of file

Modified: trunk/thingsproject/twitter/thing.py
==============================================================================
--- trunk/thingsproject/twitter/thing.py        (original)
+++ trunk/thingsproject/twitter/thing.py        Sun Sep  7 12:37:37 2008
@@ -2,13 +2,9 @@
  from models import Tweet

  class TweetThing(ModelThing):
-    order_fields = {
-        'date_posted':
-            fields.OrderField(
-                verbose_name_asc='Newest',
-                verbose_name_desc='Oldest',
-                url_asc='newest',
-                url_desc='oldest'),
-    }
+    date_posted = fields.OrderField(verbose_name_asc='Newest',
+        verbose_name_desc='Oldest', url_asc='newest',
+        url_desc='oldest', field_url='date')
+    message = fields.OrderField()

  thing_site.register(Tweet, TweetThing)

Modified: trunk/thingsproject/urls.py
==============================================================================
--- trunk/thingsproject/urls.py (original)
+++ trunk/thingsproject/urls.py Sun Sep  7 12:37:37 2008
@@ -1,8 +1,11 @@
  from django.conf.urls.defaults import *
+from django.contrib import admin
  from things import thing_site, autodiscover

+admin.autodiscover()
+
  urlpatterns = patterns('',
-     (r'^admin/', include('django.contrib.admin.urls')),
+     (r'^admin/(.*)$', admin.site.root),
  )

  autodiscover()

--~--~---------~--~----~------------~-------~--~----~
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