'Returns True if the given request has permission to change the given
Django model instance, the default implementation doesn\'t examine the
`obj` parameter.
Can be overriden by the user in subclasses. In such case it should
return True if the given request has permission to change the `obj`
model instance. If `obj` is None, this should return True if the given
request has permission to change *any* object of the given type.'

def has_change_permission(self, request, obj=None):

    opts = self.opts
    return request.user.has_perm(((opts.app_label + '.') + opts.get_change_permission()))
