Changeset 6325
- Timestamp:
- 09/15/07 15:01:25 (1 year ago)
- Files:
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
django/branches/newforms-admin/django/contrib/admin/options.py
r6322 r6325 628 628 deleted_objects = [u'%s: <a href="../../%s/">%s</a>' % (force_unicode(capfirst(opts.verbose_name)), object_id, escape(str(obj))), []] 629 629 perms_needed = sets.Set() 630 get_deleted_objects(deleted_objects, perms_needed, request.user, obj, opts, 1 )630 get_deleted_objects(deleted_objects, perms_needed, request.user, obj, opts, 1, self.admin_site) 631 631 632 632 if request.POST: # The user has already confirmed the deletion. django/branches/newforms-admin/django/contrib/admin/util.py
r6322 r6325 11 11 current.append(val) 12 12 13 def get_deleted_objects(deleted_objects, perms_needed, user, obj, opts, current_depth ):13 def get_deleted_objects(deleted_objects, perms_needed, user, obj, opts, current_depth, admin_site): 14 14 "Helper function that recursively populates deleted_objects." 15 15 nh = _nest_help # Bind to local variable for performance … … 18 18 opts_seen = [] 19 19 for related in opts.get_all_related_objects(): 20 has_admin = related.__class__ in admin_site._registry 20 21 if related.opts in opts_seen: 21 22 continue … … 28 29 pass 29 30 else: 30 if related.opts.admin:31 if has_admin: 31 32 p = '%s.%s' % (related.opts.app_label, related.opts.get_delete_permission()) 32 33 if not user.has_perm(p): … … 34 35 # We don't care about populating deleted_objects now. 35 36 continue 36 if related.field.rel.edit_inline or not related.opts.admin:37 if related.field.rel.edit_inline or not has_admin: 37 38 # Don't display link to edit, because it either has no 38 39 # admin or is edited inline. … … 43 44 (force_unicode(capfirst(related.opts.verbose_name)), related.opts.app_label, related.opts.object_name.lower(), 44 45 sub_obj._get_pk_val(), sub_obj), []]) 45 get_deleted_objects(deleted_objects, perms_needed, user, sub_obj, related.opts, current_depth+2 )46 get_deleted_objects(deleted_objects, perms_needed, user, sub_obj, related.opts, current_depth+2, admin_site) 46 47 else: 47 48 has_related_objs = False 48 49 for sub_obj in getattr(obj, rel_opts_name).all(): 49 50 has_related_objs = True 50 if related.field.rel.edit_inline or not related.opts.admin:51 if related.field.rel.edit_inline or not has_admin: 51 52 # Don't display link to edit, because it either has no 52 53 # admin or is edited inline. … … 56 57 nh(deleted_objects, current_depth, [u'%s: <a href="../../../../%s/%s/%s/">%s</a>' % \ 57 58 (force_unicode(capfirst(related.opts.verbose_name)), related.opts.app_label, related.opts.object_name.lower(), sub_obj._get_pk_val(), escape(sub_obj)), []]) 58 get_deleted_objects(deleted_objects, perms_needed, user, sub_obj, related.opts, current_depth+2 )59 get_deleted_objects(deleted_objects, perms_needed, user, sub_obj, related.opts, current_depth+2, admin_site) 59 60 # If there were related objects, and the user doesn't have 60 61 # permission to delete them, add the missing perm to perms_needed. 61 if related.opts.admin and has_related_objs:62 if has_admin and has_related_objs: 62 63 p = '%s.%s' % (related.opts.app_label, related.opts.get_delete_permission()) 63 64 if not user.has_perm(p): 64 65 perms_needed.add(related.opts.verbose_name) 65 66 for related in opts.get_all_related_many_to_many_objects(): 67 has_admin = related.__class__ in admin_site._registry 66 68 if related.opts in opts_seen: 67 69 continue … … 78 80 if has_related_objs: 79 81 for sub_obj in rel_objs.all(): 80 if related.field.rel.edit_inline or not related.opts.admin:82 if related.field.rel.edit_inline or not has_admin: 81 83 # Don't display link to edit, because it either has no 82 84 # admin or is edited inline. … … 91 93 # If there were related objects, and the user doesn't have 92 94 # permission to change them, add the missing perm to perms_needed. 93 if related.opts.admin and has_related_objs:95 if has_admin and has_related_objs: 94 96 p = u'%s.%s' % (related.opts.app_label, related.opts.get_change_permission()) 95 97 if not user.has_perm(p):
