From e1311fc6f5f0e9ccdfd841fb809a220d7219818c Mon Sep 17 00:00:00 2001 From: Brandon Taylor Date: Sat, 17 Sep 2011 16:48:14 -0500 Subject: [PATCH] Added support for non-numeric primary keys --- adminsortable/admin.py | 12 +++++++----- .../shared/javascript_includes.html | 3 ++- .../templatetags/adminsortable_tags.py | 1 - sample_project/adminsortable.sqlite | Bin 54272 -> 54272 bytes 4 files changed, 9 insertions(+), 7 deletions(-) diff --git a/adminsortable/admin.py b/adminsortable/admin.py index 897c91a..4f6c2b0 100644 --- a/adminsortable/admin.py +++ b/adminsortable/admin.py @@ -113,16 +113,18 @@ class SortableAdmin(ModelAdmin): if request.is_ajax() and request.method == 'POST': try: - indexes = request.POST.get('indexes', []).split(',') + indexes = map(str, request.POST.get('indexes', []).split(',')) klass = ContentType.objects.get(id=model_type_id).model_class() - objects_dict = dict([(obj.pk, obj) for obj in klass.objects.filter(pk__in=indexes)]) - min_index = min(objects_dict.values(), key=lambda x: getattr(x, 'order')) - min_index = getattr(min_index, 'order') or 0 + objects_dict = dict([(str(obj.pk), obj) for obj in klass.objects.filter(pk__in=indexes)]) + lowest_ordered_object = min(objects_dict.values(), key=lambda x: getattr(x, 'order')) + min_index = getattr(lowest_ordered_object, 'order') or 0 + for index in indexes: - obj = objects_dict[int(index)] + obj = objects_dict.get(index) setattr(obj, 'order', min_index) obj.save() min_index += 1 + response = {'objects_sorted' : True} except (IndexError, klass.DoesNotExist, AttributeError): pass diff --git a/adminsortable/templates/adminsortable/shared/javascript_includes.html b/adminsortable/templates/adminsortable/shared/javascript_includes.html index fb347bd..e1b058d 100644 --- a/adminsortable/templates/adminsortable/shared/javascript_includes.html +++ b/adminsortable/templates/adminsortable/shared/javascript_includes.html @@ -1,4 +1,5 @@ - + + diff --git a/adminsortable/templatetags/adminsortable_tags.py b/adminsortable/templatetags/adminsortable_tags.py index 0f6ebd2..ca53798 100644 --- a/adminsortable/templatetags/adminsortable_tags.py +++ b/adminsortable/templatetags/adminsortable_tags.py @@ -24,5 +24,4 @@ def render_list_items(context, list_objects): @register.inclusion_tag('adminsortable/shared/object_rep.html', takes_context=True) def render_object_rep(context, object): - print object return {'object' : object} diff --git a/sample_project/adminsortable.sqlite b/sample_project/adminsortable.sqlite index a3ce8f993476c87960de14d33447774c0c568d29..76183e1fd528437c5953f3226fed3dd3ac6fcdfb 100644 GIT binary patch delta 409 zcmZoz!Q8Ndd4e?K*Nrke%!Lfi6%0+SOiZl|%=C;5O$`hTHa|0$li*`vC}dz}XG&(w z0y5MlI*QdZy7)GFI+|D*q!_1~o2D38SQwfnrkPk;B%7P0r5Yxg8Cxc&m_!=6n)te; zQ9}b=14ASS8ykWgoE12WiI0WZoq^e%c^mU><{ajn&4N6p%&IEPzKnz%%sx3M zTvIhAHQCU_$UMb7IWg79GR557#2o0EBnu;B%d`}WL<2UEQIq+D6*k`r*D?TF*22L2 vkogevV&)d+RG?*H%+_{B28M>Z=q?1h&%l6Pj@gkBt2EdH?3)*N$9ez&)`w}p delta 132 zcmV-~0DJ#{r~`ng1CSd5@Ua}YHxe*2ATlvJGBr9fHZC?ZG%+zUv*tG*7z_geY5)TV z0%HMc0UNUs3=IJS0Z5Z!2urhSQJMk-0|RUTvkFu_1CwwFCzEVfDU(42Ap|4?O#zb+ mQy{b2S1K?J0|TP~1K|V01ET|kvk?q;0|7pfK^wE9i(N?IEF%2?