diff --git a/django/contrib/admin/row_level_perm_manipulator.py b/django/contrib/admin/row_level_perm_manipulator.py index 8101ee260c..7c2e577da9 100644 --- a/django/contrib/admin/row_level_perm_manipulator.py +++ b/django/contrib/admin/row_level_perm_manipulator.py @@ -56,7 +56,7 @@ class AddRLPManipulator(ChangeRLPManipulator): obj_list.extend([('group', Group.objects.order_by("name"))]) perm_list = [(o.id, o.name) for o in self.ct.permission_set.order_by("name")] self.fields = ( - MultipleObjSelectField(field_name="owner", obj_list=obj_list), + MultipleObjSelectField(field_name="owner", obj_list=obj_list, default_text=_("Select an option")), forms.SelectMultipleField(field_name="perm", choices=perm_list, size=3), forms.CheckboxField(field_name="negative"), ) @@ -109,25 +109,51 @@ class MultipleObjSelectField(forms.SelectField): def __init__(self, field_name, obj_list=None, default_text=None, size=1, is_required=False, validator_list=None, member_name=None): - if default_text is None: - default_text = "Select an option" - choice_list = [('', default_text)] + choice_list = [] + self.default_text = default_text for obj, obj_choices in obj_list: ct = ContentType.objects.get(model__exact=obj) - choice_list.extend([(MultipleObjSelectField.returnKey(o), str(o)+" ("+ct.name.title()+")") for o in obj_choices]) - + object_choice = [(MultipleObjSelectField.returnKey(o, ct=ct), str(o)) for o in obj_choices] + choice_list.extend([(ct.name.title(), object_choice)]) + #choice_list.extend([(MultipleObjSelectField.returnKey(o, ct=ct), str(o)+" ("+ct.name.title()+")") for o in obj_choices]) + print choice_list super(MultipleObjSelectField, self).__init__(field_name, choices=choice_list, size=size, is_required=is_required, validator_list=validator_list, member_name=member_name) + def render(self, data): + from django.utils.html import escape + output = ['') + return '\n'.join(output) + def returnObject(data): data = data.split('-') ct = ContentType.objects.get(model__exact=data[0]) obj = ct.get_object_for_this_type(pk=data[1]) return obj - def returnKey(obj): - ct = ContentType.objects.get_for_model(obj.__class__) + def returnKey(obj, ct=None): + if not ct: + ct = ContentType.objects.get_for_model(obj.__class__) return ct.model+"-"+str(obj.id) returnObject = staticmethod(returnObject)