X-Git-Url: http://git.ithinksw.org/philo.git/blobdiff_plain/f69e27528218f5db3e4fafd536be49f473e3b8fd..ad61c0ead793098e8c9cbec326cdd3a4163f25ba:/contrib/gilbert/plugins/models.py?ds=sidebyside diff --git a/contrib/gilbert/plugins/models.py b/contrib/gilbert/plugins/models.py index 5217df3..cf871d5 100644 --- a/contrib/gilbert/plugins/models.py +++ b/contrib/gilbert/plugins/models.py @@ -1,15 +1,16 @@ -import operator -from django.forms.models import ModelForm, modelform_factory +from django.conf import settings +from django.contrib.admin.util import lookup_field, label_for_field, display_for_field, NestedObjects +from django.core.exceptions import PermissionDenied from django.db.models import Q from django.db.models.fields.related import ManyToOneRel from django.db.models.fields.files import FieldFile, ImageFieldFile, FileField -from django.contrib.admin.util import lookup_field, label_for_field, display_for_field, NestedObjects +from django.forms.models import ModelForm, modelform_factory +from django.template.defaultfilters import capfirst +from django.utils import simplejson as json from django.utils.encoding import smart_unicode -import staticmedia from .base import Plugin from ..extdirect import ext_action, ext_method -from django.core.exceptions import PermissionDenied -from django.utils import simplejson as json +import operator @ext_action(name='models') @@ -23,8 +24,8 @@ class Models(Plugin): @property def index_js_urls(self): return super(Models, self).index_js_urls + [ - staticmedia.url('gilbert/extjs/examples/ux/SearchField.js'), - staticmedia.url('gilbert/plugins/models.js'), + settings.STATIC_URL + 'gilbert/extjs/examples/ux/SearchField.js', + settings.STATIC_URL + 'gilbert/plugins/models.js', ] @property @@ -64,7 +65,7 @@ class ModelAdmin(Plugin): def data_serialize_model_instance(cls, obj): return { 'app_label': obj._meta.app_label, - 'name': obj._meta.object_name, + 'name': obj._meta.module_name, 'pk': obj.pk, '__unicode__': unicode(obj), } @@ -119,6 +120,7 @@ class ModelAdmin(Plugin): @property def data_columns_spec(self): spec = [] + for field_name in self.data_columns: column = { 'dataIndex': field_name, @@ -126,11 +128,13 @@ class ModelAdmin(Plugin): 'editable': False, } header, attr = label_for_field(field_name, self.model, model_admin=self, return_attr=True) - column['header'] = header + column['header'] = capfirst(header) if (field_name in self.sortable_fields) or (getattr(attr, 'admin_order_field', None) in self.sortable_fields): column['sortable'] = True if field_name in self.data_editable_columns: column['editable'] = True + if field_name in [field.name for field in self.model_meta.fields if isinstance(field.rel, ManyToOneRel)]: + column['xtype'] = 'foreignkeycolumn' spec.append(column) return spec @@ -170,17 +174,20 @@ class ModelAdmin(Plugin): raise PermissionDenied return self.model._default_manager.all() + def queryset(self, request): + return self.model._default_manager.get_query_set() + @ext_method def filter(self, request, **kwargs): if not self.has_read_permission(request): raise PermissionDenied - return self.model._default_manager.all().filter(**kwargs) + return self.queryset(request).filter(**kwargs) @ext_method def get(self, request, **kwargs): if not self.has_read_permission(request): raise PermissionDenied - return self.model._default_manager.all().values().get(**kwargs) + return self.queryset(request).values().get(**kwargs) @property def form_class(self):