-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')
@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
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),
}
@property
def data_columns_spec(self):
spec = []
+
for field_name in self.data_columns:
column = {
'dataIndex': field_name,
'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
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):
form = self.form_class(request.POST, request.FILES, instance=instance)
- try:
+ if form.is_valid():
saved = form.save()
return True, None, saved.pk
- except ValueError:
+ else:
return False, form.errors
def data_serialize_object(self, obj):