Fixed #12746 -- Updated sorting calls to use 'key' instead of 'cmp'. This will be slightly faster in certain circumstances, but more importantly, is a required step for migration to Python 3. Thanks to Martin van Loewis for the patch.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@13509 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
9e5899f665
commit
c4b6edf3b8
|
@ -501,7 +501,7 @@ class ModelAdmin(BaseModelAdmin):
|
||||||
|
|
||||||
# Convert the actions into a SortedDict keyed by name
|
# Convert the actions into a SortedDict keyed by name
|
||||||
# and sorted by description.
|
# and sorted by description.
|
||||||
actions.sort(lambda a,b: cmp(a[2].lower(), b[2].lower()))
|
actions.sort(key=lambda k: k[2].lower())
|
||||||
actions = SortedDict([
|
actions = SortedDict([
|
||||||
(name, (func, name, desc))
|
(name, (func, name, desc))
|
||||||
for func, name, desc in actions
|
for func, name, desc in actions
|
||||||
|
|
|
@ -379,11 +379,11 @@ class AdminSite(object):
|
||||||
|
|
||||||
# Sort the apps alphabetically.
|
# Sort the apps alphabetically.
|
||||||
app_list = app_dict.values()
|
app_list = app_dict.values()
|
||||||
app_list.sort(lambda x, y: cmp(x['name'], y['name']))
|
app_list.sort(key=lambda x: x['name'])
|
||||||
|
|
||||||
# Sort the models alphabetically within each app.
|
# Sort the models alphabetically within each app.
|
||||||
for app in app_list:
|
for app in app_list:
|
||||||
app['models'].sort(lambda x, y: cmp(x['name'], y['name']))
|
app['models'].sort(key=lambda x: x['name'])
|
||||||
|
|
||||||
context = {
|
context = {
|
||||||
'title': _('Site administration'),
|
'title': _('Site administration'),
|
||||||
|
@ -443,7 +443,7 @@ class AdminSite(object):
|
||||||
if not app_dict:
|
if not app_dict:
|
||||||
raise http.Http404('The requested admin page does not exist.')
|
raise http.Http404('The requested admin page does not exist.')
|
||||||
# Sort the models alphabetically within each app.
|
# Sort the models alphabetically within each app.
|
||||||
app_dict['models'].sort(lambda x, y: cmp(x['name'], y['name']))
|
app_dict['models'].sort(key=lambda x: x['name'])
|
||||||
context = {
|
context = {
|
||||||
'title': _('%s administration') % capfirst(app_label),
|
'title': _('%s administration') % capfirst(app_label),
|
||||||
'app_list': [app_dict],
|
'app_list': [app_dict],
|
||||||
|
|
|
@ -60,7 +60,7 @@ class CalendarPlugin(DatabrowsePlugin):
|
||||||
def homepage_view(self, request):
|
def homepage_view(self, request):
|
||||||
easy_model = EasyModel(self.site, self.model)
|
easy_model = EasyModel(self.site, self.model)
|
||||||
field_list = self.fields.values()
|
field_list = self.fields.values()
|
||||||
field_list.sort(lambda x, y: cmp(x.verbose_name, y.verbose_name))
|
field_list.sort(key=lambda k:k.verbose_name)
|
||||||
return render_to_response('databrowse/calendar_homepage.html', {'root_url': self.site.root_url, 'model': easy_model, 'field_list': field_list})
|
return render_to_response('databrowse/calendar_homepage.html', {'root_url': self.site.root_url, 'model': easy_model, 'field_list': field_list})
|
||||||
|
|
||||||
def calendar_view(self, request, field, year=None, month=None, day=None):
|
def calendar_view(self, request, field, year=None, month=None, day=None):
|
||||||
|
|
|
@ -61,7 +61,7 @@ class FieldChoicePlugin(DatabrowsePlugin):
|
||||||
def homepage_view(self, request):
|
def homepage_view(self, request):
|
||||||
easy_model = EasyModel(self.site, self.model)
|
easy_model = EasyModel(self.site, self.model)
|
||||||
field_list = self.fields.values()
|
field_list = self.fields.values()
|
||||||
field_list.sort(lambda x, y: cmp(x.verbose_name, y.verbose_name))
|
field_list.sort(key=lambda k: k.verbose_name)
|
||||||
return render_to_response('databrowse/fieldchoice_homepage.html', {'root_url': self.site.root_url, 'model': easy_model, 'field_list': field_list})
|
return render_to_response('databrowse/fieldchoice_homepage.html', {'root_url': self.site.root_url, 'model': easy_model, 'field_list': field_list})
|
||||||
|
|
||||||
def field_view(self, request, field, value=None):
|
def field_view(self, request, field, value=None):
|
||||||
|
|
|
@ -35,7 +35,7 @@ def get_declared_fields(bases, attrs, with_base_fields=True):
|
||||||
Also integrates any additional media definitions
|
Also integrates any additional media definitions
|
||||||
"""
|
"""
|
||||||
fields = [(field_name, attrs.pop(field_name)) for field_name, obj in attrs.items() if isinstance(obj, Field)]
|
fields = [(field_name, attrs.pop(field_name)) for field_name, obj in attrs.items() if isinstance(obj, Field)]
|
||||||
fields.sort(lambda x, y: cmp(x[1].creation_counter, y[1].creation_counter))
|
fields.sort(key=lambda x: x[1].creation_counter)
|
||||||
|
|
||||||
# If this class is subclassing another Form, add that Form's fields.
|
# If this class is subclassing another Form, add that Form's fields.
|
||||||
# Note that we loop over the bases in *reverse*. This is necessary in
|
# Note that we loop over the bases in *reverse*. This is necessary in
|
||||||
|
|
|
@ -199,14 +199,12 @@ class BaseFormSet(StrAndUnicode):
|
||||||
# A sort function to order things numerically ascending, but
|
# A sort function to order things numerically ascending, but
|
||||||
# None should be sorted below anything else. Allowing None as
|
# None should be sorted below anything else. Allowing None as
|
||||||
# a comparison value makes it so we can leave ordering fields
|
# a comparison value makes it so we can leave ordering fields
|
||||||
# blamk.
|
# blank.
|
||||||
def compare_ordering_values(x, y):
|
def compare_ordering_key(k):
|
||||||
if x[1] is None:
|
if k[1] is None:
|
||||||
return 1
|
return (1, 0) # +infinity, larger than any number
|
||||||
if y[1] is None:
|
return (0, k[1])
|
||||||
return -1
|
self._ordering.sort(key=compare_ordering_key)
|
||||||
return x[1] - y[1]
|
|
||||||
self._ordering.sort(compare_ordering_values)
|
|
||||||
# Return a list of form.cleaned_data dicts in the order spcified by
|
# Return a list of form.cleaned_data dicts in the order spcified by
|
||||||
# the form data.
|
# the form data.
|
||||||
return [self.forms[i[0]] for i in self._ordering]
|
return [self.forms[i[0]] for i in self._ordering]
|
||||||
|
|
|
@ -496,7 +496,7 @@ def parse_accept_lang_header(lang_string):
|
||||||
return []
|
return []
|
||||||
priority = priority and float(priority) or 1.0
|
priority = priority and float(priority) or 1.0
|
||||||
result.append((lang, priority))
|
result.append((lang, priority))
|
||||||
result.sort(lambda x, y: -cmp(x[1], y[1]))
|
result.sort(key=lambda k: k[1], reverse=True)
|
||||||
return result
|
return result
|
||||||
|
|
||||||
# get_date_formats and get_partial_date_formats aren't used anymore by Django
|
# get_date_formats and get_partial_date_formats aren't used anymore by Django
|
||||||
|
|
Loading…
Reference in New Issue