kopia lustrzana https://github.com/wagtail/wagtail
Apply duck-typing for model-like classes within ChooserViewset
* allow any class to pass through resolve_model_string, not just models * use BlanketPermissionPolicy if model_class is not a real modelpull/10862/head
rodzic
e40b0b1fd0
commit
2dcfdedc37
|
|
@ -9,6 +9,7 @@ from django.core.exceptions import (
|
|||
PermissionDenied,
|
||||
)
|
||||
from django.core.paginator import InvalidPage, Paginator
|
||||
from django.db.models import Model
|
||||
from django.forms.models import modelform_factory
|
||||
from django.http import Http404
|
||||
from django.template.loader import render_to_string
|
||||
|
|
@ -296,7 +297,7 @@ class CreationFormMixin(ModelLookupMixin, PreserveURLParametersMixin):
|
|||
def get_permission_policy(self):
|
||||
if self.permission_policy:
|
||||
return self.permission_policy
|
||||
elif self.model_class:
|
||||
elif issubclass(self.model_class, Model):
|
||||
return ModelPermissionPolicy(self.model_class)
|
||||
else:
|
||||
return BlanketPermissionPolicy(None)
|
||||
|
|
|
|||
|
|
@ -82,7 +82,7 @@ def resolve_model_string(model_string, default_app=None):
|
|||
|
||||
return apps.get_model(app_label, model_name)
|
||||
|
||||
elif isinstance(model_string, type) and issubclass(model_string, Model):
|
||||
elif isinstance(model_string, type):
|
||||
return model_string
|
||||
|
||||
else:
|
||||
|
|
|
|||
|
|
@ -520,7 +520,8 @@ class TestResolveModelString(TestCase):
|
|||
self.assertRaises(ValueError, resolve_model_string, "Page")
|
||||
|
||||
def test_resolve_from_class_that_isnt_a_model(self):
|
||||
self.assertRaises(ValueError, resolve_model_string, object)
|
||||
model = resolve_model_string(object)
|
||||
self.assertEqual(model, object)
|
||||
|
||||
def test_resolve_from_bad_type(self):
|
||||
self.assertRaises(ValueError, resolve_model_string, resolve_model_string)
|
||||
|
|
|
|||
Ładowanie…
Reference in New Issue