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