Changeset 3610
- Timestamp:
- 08/18/06 09:23:57 (2 years ago)
- Files:
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
django/branches/per-object-permissions/django/contrib/admin/row_level_perm_manipulator.py
r3586 r3610 57 57 perm_list = [(o.id, o.name) for o in self.ct.permission_set.order_by("name")] 58 58 self.fields = ( 59 MultipleObjSelectField(field_name="owner", obj_list=obj_list ),59 MultipleObjSelectField(field_name="owner", obj_list=obj_list, default_text=_("Select an option")), 60 60 forms.SelectMultipleField(field_name="perm", choices=perm_list, size=3), 61 61 forms.CheckboxField(field_name="negative"), … … 110 110 default_text=None, size=1, is_required=False, validator_list=None, 111 111 member_name=None): 112 if default_text is None: 113 default_text = "Select an option" 114 choice_list = [('', default_text)] 112 choice_list = [] 113 self.default_text = default_text 115 114 for obj, obj_choices in obj_list: 116 115 ct = ContentType.objects.get(model__exact=obj) 117 choice_list.extend([(MultipleObjSelectField.returnKey(o), str(o)+" ("+ct.name.title()+")") for o in obj_choices]) 118 116 object_choice = [(MultipleObjSelectField.returnKey(o, ct=ct), str(o)) for o in obj_choices] 117 choice_list.extend([(ct.name.title(), object_choice)]) 118 #choice_list.extend([(MultipleObjSelectField.returnKey(o, ct=ct), str(o)+" ("+ct.name.title()+")") for o in obj_choices]) 119 print choice_list 119 120 super(MultipleObjSelectField, self).__init__(field_name, choices=choice_list, 120 121 size=size, is_required=is_required, 121 122 validator_list=validator_list, 122 123 member_name=member_name) 124 def render(self, data): 125 from django.utils.html import escape 126 output = ['<select id="%s" class="v%s%s" name="%s" size="%s">' % \ 127 (self.get_id(), self.__class__.__name__, 128 self.is_required and ' required' or '', self.field_name, self.size)] 129 str_data = str(data) # normalize to string 130 131 if self.default_text: 132 selected_html = '' 133 if not str_data: 134 selected_html = ' selected="selected"' 135 output.append(' <option %s>%s</option>' % (selected_html, escape(self.default_text))) 136 137 for obj, obj_choices in self.choices: 138 output.append(' <optgroup label="%s">' % (obj,)) 139 for value, display_name in obj_choices: 140 selected_html = '' 141 if str(value) == str_data: 142 selected_html = ' selected="selected"' 143 output.append(' <option value="%s"%s>%s</option>' % (escape(value), selected_html, escape(display_name))) 144 output.append(' </optgroup>') 145 output.append(' </select>') 146 return '\n'.join(output) 147 123 148 def returnObject(data): 124 149 data = data.split('-') … … 127 152 return obj 128 153 129 def returnKey(obj): 130 ct = ContentType.objects.get_for_model(obj.__class__) 154 def returnKey(obj, ct=None): 155 if not ct: 156 ct = ContentType.objects.get_for_model(obj.__class__) 131 157 return ct.model+"-"+str(obj.id) 132 158
