From 9d92b0d3a7578a989b969daa1592cb8eeabda547 Mon Sep 17 00:00:00 2001 From: Corey Oordt Date: Thu, 16 Dec 2010 13:25:49 -0500 Subject: [PATCH] Getting rid of unused code in the treeeditor --- editor/tree_editor.py | 187 +----------------------------------------- 1 file changed, 2 insertions(+), 185 deletions(-) diff --git a/editor/tree_editor.py b/editor/tree_editor.py index f5c0248..e7baa27 100644 --- a/editor/tree_editor.py +++ b/editor/tree_editor.py @@ -15,23 +15,6 @@ class TreeChangeList(ChangeList): return '', '' return super(ChangeList, self).get_ordering() - -def django_boolean_icon(field_val, alt_text=None, title=None): - """ - Return HTML code for a nice representation of true/false. - """ - - # Origin: contrib/admin/templatetags/admin_list.py - BOOLEAN_MAPPING = { True: 'yes', False: 'no', None: 'unknown' } - alt_text = alt_text or BOOLEAN_MAPPING[field_val] - if title is not None: - title = 'title="%s" ' % title - else: - title = '' - return mark_safe(u'%s' % - (django_settings.ADMIN_MEDIA_PREFIX, BOOLEAN_MAPPING[field_val], alt_text, title)) - - def _build_tree_structure(cls): """ Build an in-memory representation of the item tree, trying to keep @@ -58,62 +41,8 @@ def _build_tree_structure(cls): return all_nodes - -# ------------------------------------------------------------------------ -def ajax_editable_boolean_cell(item, attr, text='', override=None): - """ - Generate a html snippet for showing a boolean value on the admin page. - Item is an object, attr is the attribute name we should display. Text - is an optional explanatory text to be included in the output. - - This function will emit code to produce a checkbox input with its state - corresponding to the item.attr attribute if no override value is passed. - This input is wired to run a JS ajax updater to toggle the value. - - If override is passed in, ignores the attr attribute and returns a - static image for the override boolean with no user interaction possible - (useful for "disabled and you can't change it" situations). - """ - if text: - text = ' (%s)' % unicode(text) - - if override is not None: - a = [ django_boolean_icon(override, text), text ] - else: - value = getattr(item, attr) - a = [ - '', - text, - ] - - a.insert(0, '
' % ( attr, item.id )) - a.append('
') - return unicode(''.join(a)) - -# ------------------------------------------------------------------------ -def ajax_editable_boolean(attr, short_description): - """ - Convenience function: Assign the return value of this method to a variable - of your ModelAdmin class and put the variable name into list_display. - - Example: - class MyTreeEditor(TreeEditor): - list_display = ('__unicode__', 'active_toggle') - - active_toggle = ajax_editable_boolean('active', _('is active')) - """ - def _fn(self, item): - return ajax_editable_boolean_cell(item, attr) - _fn.allow_tags = True - _fn.short_description = short_description - _fn.editable_boolean_field = attr - return _fn - - class TreeEditor(admin.ModelAdmin): + list_per_page = 10000 # We can't have pagination class Media: css = {'all':(settings.MEDIA_PATH + "jquery.treeTable.css",)} js = [] @@ -134,83 +63,7 @@ class TreeEditor(admin.ModelAdmin): 'admin/%s/editor/tree_editor.html' % opts.app_label, 'admin/editor/tree_editor.html', ] - - def _collect_editable_booleans(self): - """ - Collect all fields marked as editable booleans. We do not - want the user to be able to edit arbitrary fields by crafting - an AJAX request by hand. - """ - if hasattr(self, '_ajax_editable_booleans'): - return - - self._ajax_editable_booleans = {} - - for field in self.list_display: - # The ajax_editable_boolean return value has to be assigned - # to the ModelAdmin class - item = getattr(self.__class__, field, None) - if not item: - continue - - attr = getattr(item, 'editable_boolean_field', None) - if attr: - def _fn(self, page): - return [ ajax_editable_boolean_cell(page, _fn.attr) ] - _fn.attr = attr - result_func = getattr(item, 'editable_boolean_result', _fn) - self._ajax_editable_booleans[attr] = result_func - - def _refresh_changelist_caches(self): - """ - Refresh information used to show the changelist tree structure such as - inherited active/inactive states etc. - - XXX: This is somewhat hacky, but since it's an internal method, so be it. - """ - - pass - - def _toggle_boolean(self, request): - """ - Handle an AJAX toggle_boolean request - """ - self._collect_editable_booleans() - - item_id = request.POST.get('item_id') - attr = request.POST.get('attr') - - if not self._ajax_editable_booleans.has_key(attr): - return HttpResponseBadRequest("not a valid attribute %s" % attr) - - try: - obj = self.model._default_manager.get(pk=unquote(item_id)) - - attr = str(attr) - - before_data = self._ajax_editable_booleans[attr](self, obj) - - setattr(obj, attr, not getattr(obj, attr)) - obj.save() - - self._refresh_changelist_caches() # ???: Perhaps better a post_save signal? - - # Construct html snippets to send back to client for status update - data = self._ajax_editable_booleans[attr](self, obj) - - except Exception, e: - return HttpResponse("FAILED " + unicode(e), mimetype="text/plain") - - # Weed out unchanged cells to keep the updates small. This assumes - # that the order a possible get_descendents() returns does not change - # before and after toggling this attribute. Unlikely, but still... - d = [] - for a, b in zip(before_data, data): - if a != b: - d.append(b) - - return HttpResponse(simplejson.dumps(d), mimetype="application/json") - # + def get_changelist(self, request, **kwargs): """ Returns the ChangeList class for use on the changelist page. @@ -222,22 +75,6 @@ class TreeEditor(admin.ModelAdmin): Handle the changelist view, the django view for the model instances change list/actions page. """ - - if 'actions_column' not in self.list_display: - self.list_display.append('actions_column') - - # handle common AJAX requests - if request.is_ajax(): - cmd = request.POST.get('__cmd') - if cmd == 'toggle_boolean': - return self._toggle_boolean(request) - elif cmd == 'move_node': - return self._move_node(request) - else: - return HttpResponse('Oops. AJAX request not understood.') - - self._refresh_changelist_caches() - extra_context = extra_context or {} extra_context['EDITOR_MEDIA_PATH'] = settings.MEDIA_PATH extra_context['tree_structure'] = mark_safe(simplejson.dumps( @@ -265,25 +102,5 @@ class TreeEditor(admin.ModelAdmin): Returns a QuerySet of all model instances that can be edited by the admin site. This is used by changelist_view. """ - # Use default ordering, always return self.model._default_manager.get_query_set() - - def _actions_column(self, page): - actions = [] - actions.append(u'%s' % ( - page.pk, _('Add child'), django_settings.ADMIN_MEDIA_PREFIX ,_('Add child'))) - - actions.append(u'' % ( - page.pk, _('Cut'))) - - actions.append(u'' % ( - page.pk, _('Insert as child'))) - actions.append(u'' % ( - page.pk, _('Insert before'))) - return actions - - def actions_column(self, page): - return u' '.join(self._actions_column(page)) - actions_column.allow_tags = True - actions_column.short_description = _('actions')