diff --git a/django/db/models/base.py b/django/db/models/base.py index c89033c491..2ea7f65ab2 100644 --- a/django/db/models/base.py +++ b/django/db/models/base.py @@ -62,6 +62,11 @@ class ModelBase(type): except FieldDoesNotExist: field.contribute_to_class(new_class, field.name) + if getattr(new_class._meta, 'row_level_permissions', None): + from django.contrib.auth.models import RowLevelPermission + gen_rel = django.db.models.GenericRelation(RowLevelPermission, object_id_field="type_id", content_type_field="type_ct") + new_class.add_to_class("row_level_permissions", gen_rel) + new_class._prepare() register_models(new_class._meta.app_label, new_class) diff --git a/django/db/models/options.py b/django/db/models/options.py index ff0d112d16..e96afac16a 100644 --- a/django/db/models/options.py +++ b/django/db/models/options.py @@ -13,7 +13,7 @@ get_verbose_name = lambda class_name: re.sub('(((?<=[a-z])[A-Z])|([A-Z](?![A-Z]| DEFAULT_NAMES = ('verbose_name', 'db_table', 'ordering', 'unique_together', 'permissions', 'get_latest_by', - 'order_with_respect_to', 'app_label') + 'order_with_respect_to', 'app_label', 'row_level_permissions') class Options(object): def __init__(self, meta): @@ -33,6 +33,7 @@ class Options(object): self.has_auto_field = False self.one_to_one_field = None self.parents = [] + self.row_level_permissions = False def contribute_to_class(self, cls, name): cls._meta = self