Added Person model with ordering_subset and initial data.
parent
2ca19f05c1
commit
e51f7535ca
|
|
@ -35,7 +35,12 @@ class SortableAdminBase(object):
|
||||||
object_tools block to take people to the view to change the sorting.
|
object_tools block to take people to the view to change the sorting.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
if get_is_sortable(self.queryset(request)):
|
if self.model.ordering_subset() is not None:
|
||||||
|
objects = self.model.ordering_subset()
|
||||||
|
else:
|
||||||
|
objects = self.queryset(request)
|
||||||
|
|
||||||
|
if get_is_sortable(objects):
|
||||||
self.change_list_template = \
|
self.change_list_template = \
|
||||||
self.sortable_change_list_with_sort_link_template
|
self.sortable_change_list_with_sort_link_template
|
||||||
self.is_sortable = True
|
self.is_sortable = True
|
||||||
|
|
@ -102,6 +107,9 @@ class SortableAdmin(SortableAdminBase, ModelAdmin):
|
||||||
has_perm = request.user.has_perm('{}.{}'.format(opts.app_label,
|
has_perm = request.user.has_perm('{}.{}'.format(opts.app_label,
|
||||||
opts.get_change_permission()))
|
opts.get_change_permission()))
|
||||||
|
|
||||||
|
if self.model.ordering_subset() is not None:
|
||||||
|
objects = self.model.ordering_subset()
|
||||||
|
else:
|
||||||
objects = self.queryset(request)
|
objects = self.queryset(request)
|
||||||
|
|
||||||
# Determine if we need to regroup objects relative to a
|
# Determine if we need to regroup objects relative to a
|
||||||
|
|
|
||||||
|
|
@ -43,6 +43,10 @@ class Sortable(models.Model):
|
||||||
def model_type_id(cls):
|
def model_type_id(cls):
|
||||||
return ContentType.objects.get_for_model(cls).id
|
return ContentType.objects.get_for_model(cls).id
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def ordering_subset(cls):
|
||||||
|
return None
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
super(Sortable, self).__init__(*args, **kwargs)
|
super(Sortable, self).__init__(*args, **kwargs)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@ from adminsortable.admin import (SortableAdmin, SortableTabularInline,
|
||||||
SortableStackedInline, SortableGenericStackedInline)
|
SortableStackedInline, SortableGenericStackedInline)
|
||||||
from adminsortable.utils import get_is_sortable
|
from adminsortable.utils import get_is_sortable
|
||||||
from app.models import (Category, Widget, Project, Credit, Note, GenericNote,
|
from app.models import (Category, Widget, Project, Credit, Note, GenericNote,
|
||||||
Component)
|
Component, Person)
|
||||||
|
|
||||||
|
|
||||||
admin.site.register(Category, SortableAdmin)
|
admin.site.register(Category, SortableAdmin)
|
||||||
|
|
@ -58,3 +58,6 @@ class ProjectAdmin(SortableAdmin):
|
||||||
list_display = ['__unicode__', 'category']
|
list_display = ['__unicode__', 'category']
|
||||||
|
|
||||||
admin.site.register(Project, ProjectAdmin)
|
admin.site.register(Project, ProjectAdmin)
|
||||||
|
|
||||||
|
|
||||||
|
admin.site.register(Person, SortableAdmin)
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,37 @@
|
||||||
|
[{
|
||||||
|
"pk": 1,
|
||||||
|
"model": "app.person",
|
||||||
|
"fields": {
|
||||||
|
"first_name": "Bob",
|
||||||
|
"last_name": "Smith",
|
||||||
|
"order": 1,
|
||||||
|
"is_board_member": true
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
"pk": 2,
|
||||||
|
"model": "app.person",
|
||||||
|
"fields": {
|
||||||
|
"first_name": "Sally",
|
||||||
|
"last_name": "Sue",
|
||||||
|
"order": 2,
|
||||||
|
"is_board_member": false
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
"pk": 3,
|
||||||
|
"model": "app.person",
|
||||||
|
"fields": {
|
||||||
|
"first_name": "Mike",
|
||||||
|
"last_name": "Wilson",
|
||||||
|
"order": 3,
|
||||||
|
"is_board_member": true
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
"pk": 4,
|
||||||
|
"model": "app.person",
|
||||||
|
"fields": {
|
||||||
|
"first_name": "Robert",
|
||||||
|
"last_name": "Roberts",
|
||||||
|
"order": 2,
|
||||||
|
"is_board_member": true
|
||||||
|
}
|
||||||
|
}]
|
||||||
|
|
@ -0,0 +1,95 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
import datetime
|
||||||
|
from south.db import db
|
||||||
|
from south.v2 import SchemaMigration
|
||||||
|
from django.db import models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(SchemaMigration):
|
||||||
|
|
||||||
|
def forwards(self, orm):
|
||||||
|
# Adding model 'Person'
|
||||||
|
db.create_table(u'app_person', (
|
||||||
|
(u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
||||||
|
('order', self.gf('django.db.models.fields.PositiveIntegerField')(default=1, db_index=True)),
|
||||||
|
('first_name', self.gf('django.db.models.fields.CharField')(max_length=50)),
|
||||||
|
('last_name', self.gf('django.db.models.fields.CharField')(max_length=50)),
|
||||||
|
('is_board_member', self.gf('django.db.models.fields.BooleanField')(default=False)),
|
||||||
|
))
|
||||||
|
db.send_create_signal(u'app', ['Person'])
|
||||||
|
|
||||||
|
|
||||||
|
def backwards(self, orm):
|
||||||
|
# Deleting model 'Person'
|
||||||
|
db.delete_table(u'app_person')
|
||||||
|
|
||||||
|
|
||||||
|
models = {
|
||||||
|
u'app.category': {
|
||||||
|
'Meta': {'ordering': "['order']", 'object_name': 'Category'},
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'order': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1', 'db_index': 'True'}),
|
||||||
|
'title': ('django.db.models.fields.CharField', [], {'max_length': '50'})
|
||||||
|
},
|
||||||
|
u'app.component': {
|
||||||
|
'Meta': {'ordering': "['order']", 'object_name': 'Component'},
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'order': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1', 'db_index': 'True'}),
|
||||||
|
'title': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
|
||||||
|
'widget': ('adminsortable.fields.SortableForeignKey', [], {'to': u"orm['app.Widget']"})
|
||||||
|
},
|
||||||
|
u'app.credit': {
|
||||||
|
'Meta': {'ordering': "['order']", 'object_name': 'Credit'},
|
||||||
|
'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30'}),
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30'}),
|
||||||
|
'order': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1', 'db_index': 'True'}),
|
||||||
|
'project': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['app.Project']"})
|
||||||
|
},
|
||||||
|
u'app.genericnote': {
|
||||||
|
'Meta': {'ordering': "['order']", 'object_name': 'GenericNote'},
|
||||||
|
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'generic_notes'", 'to': u"orm['contenttypes.ContentType']"}),
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
|
||||||
|
'order': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1', 'db_index': 'True'}),
|
||||||
|
'title': ('django.db.models.fields.CharField', [], {'max_length': '50'})
|
||||||
|
},
|
||||||
|
u'app.note': {
|
||||||
|
'Meta': {'ordering': "['order']", 'object_name': 'Note'},
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'order': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1', 'db_index': 'True'}),
|
||||||
|
'project': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['app.Project']"}),
|
||||||
|
'text': ('django.db.models.fields.CharField', [], {'max_length': '100'})
|
||||||
|
},
|
||||||
|
u'app.person': {
|
||||||
|
'Meta': {'ordering': "['order']", 'object_name': 'Person'},
|
||||||
|
'first_name': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'is_board_member': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
|
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
|
||||||
|
'order': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1', 'db_index': 'True'})
|
||||||
|
},
|
||||||
|
u'app.project': {
|
||||||
|
'Meta': {'ordering': "['order']", 'object_name': 'Project'},
|
||||||
|
'category': ('adminsortable.fields.SortableForeignKey', [], {'to': u"orm['app.Category']"}),
|
||||||
|
'description': ('django.db.models.fields.TextField', [], {}),
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'order': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1', 'db_index': 'True'}),
|
||||||
|
'title': ('django.db.models.fields.CharField', [], {'max_length': '50'})
|
||||||
|
},
|
||||||
|
u'app.widget': {
|
||||||
|
'Meta': {'ordering': "['order']", 'object_name': 'Widget'},
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'order': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1', 'db_index': 'True'}),
|
||||||
|
'title': ('django.db.models.fields.CharField', [], {'max_length': '50'})
|
||||||
|
},
|
||||||
|
u'contenttypes.contenttype': {
|
||||||
|
'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
|
||||||
|
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
complete_apps = ['app']
|
||||||
|
|
@ -95,3 +95,19 @@ class Component(SimpleModel, Sortable):
|
||||||
|
|
||||||
def __unicode__(self):
|
def __unicode__(self):
|
||||||
return self.title
|
return self.title
|
||||||
|
|
||||||
|
|
||||||
|
class Person(Sortable):
|
||||||
|
class Meta(Sortable.Meta):
|
||||||
|
verbose_name_plural = 'People'
|
||||||
|
|
||||||
|
first_name = models.CharField(max_length=50)
|
||||||
|
last_name = models.CharField(max_length=50)
|
||||||
|
is_board_member = models.BooleanField(default=False)
|
||||||
|
|
||||||
|
def __unicode__(self):
|
||||||
|
return '{} {}'.format(self.first_name, self.last_name)
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def ordering_subset(cls):
|
||||||
|
return cls.objects.filter(is_board_member=True)
|
||||||
|
|
|
||||||
Binary file not shown.
Loading…
Reference in New Issue