Django

Code

Changeset 3895

Show
Ignore:
Timestamp:
10/03/06 13:11:02 (2 years ago)
Author:
clong
Message:

[per-object-permissions] Sets the row level permisisons on objects created inline if the inline objects have row level permissions enabled. This has not been tested indepth, and might not work 100%

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • django/branches/per-object-permissions/django/contrib/admin/views/main.py

    r3810 r3895  
    265265                                                                          delete=admin_opts.grant_delete_row_level_perm) 
    266266             
     267            for rel_obj in manipulator.new_rel_objs: 
     268                if rel_obj._meta.row_level_permissions: 
     269                    from django.contrib.auth.models import RowLevelPermission 
     270                    admin_opts = rel_obj._meta.admin 
     271                    RowLevelPermission.objects.create_default_row_permissions(rel_obj, request.user,  
     272                                                                              change=admin_opts.grant_change_row_level_perm, 
     273                                                                              delete=admin_opts.grant_delete_row_level_perm) 
    267274            # Here, we distinguish between different save types by checking for 
    268275            # the presence of keys in request.POST. 
     
    353360                change_message = _('No fields changed.') 
    354361            LogEntry.objects.log_action(request.user.id, ContentType.objects.get_for_model(model).id, pk_value, str(new_object), CHANGE, change_message) 
     362 
     363            for rel_obj in manipulator.new_rel_objs: 
     364                if rel_obj._meta.row_level_permissions: 
     365                    from django.contrib.auth.models import RowLevelPermission 
     366                    admin_opts = rel_obj._meta.admin 
     367                    RowLevelPermission.objects.create_default_row_permissions(rel_obj, request.user,  
     368                                                                              change=admin_opts.grant_change_row_level_perm, 
     369                                                                              delete=admin_opts.grant_delete_row_level_perm) 
    355370 
    356371            msg = _('The %(name)s "%(obj)s" was changed successfully.') % {'name': opts.verbose_name, 'obj': new_object} 
  • django/branches/per-object-permissions/django/db/models/manipulators.py

    r3583 r3895  
    130130 
    131131        expanded_data = DotExpandedDict(dict(new_data)) 
     132        self.new_rel_objs = [] 
    132133        # Save many-to-one objects. Example: Add the Choice objects for a Poll. 
    133134        for related in self.opts.get_all_related_objects(): 
     
    208209                            if not old_rel_obj: # This object didn't exist before. 
    209210                                self.fields_added.append('%s "%s"' % (related.opts.verbose_name, new_rel_obj)) 
     211                                self.new_rel_objs.append(new_rel_obj) 
    210212                            else: 
    211213                                for f in related.opts.fields: 
     
    225227                        new_rel_obj.delete() 
    226228                        self.fields_deleted.append('%s "%s"' % (related.opts.verbose_name, old_rel_obj)) 
     229 
    227230 
    228231        # Save the order, if applicable.