overwrite unique constraints as old are bind to table
This commit is contained in:
@ -583,7 +583,9 @@ def update_attrs_and_fields(
|
||||
model_fields.update(new_model_fields)
|
||||
|
||||
|
||||
def update_attrs_from_base_meta(base_class: "Model", attrs: Dict, ) -> None:
|
||||
def update_attrs_from_base_meta( # noqa: CCR001
|
||||
base_class: "Model", attrs: Dict,
|
||||
) -> None:
|
||||
"""
|
||||
Updates Meta parameters in child from parent if needed.
|
||||
|
||||
@ -594,16 +596,22 @@ def update_attrs_from_base_meta(base_class: "Model", attrs: Dict, ) -> None:
|
||||
"""
|
||||
params_to_update = ["metadata", "database", "constraints"]
|
||||
for param in params_to_update:
|
||||
current_value = attrs.get('Meta', {}).__dict__.get(param, ormar.Undefined)
|
||||
parent_value = base_class.Meta.__dict__.get(param) if hasattr(base_class, 'Meta') else None
|
||||
current_value = attrs.get("Meta", {}).__dict__.get(param, ormar.Undefined)
|
||||
parent_value = (
|
||||
base_class.Meta.__dict__.get(param) if hasattr(base_class, "Meta") else None
|
||||
)
|
||||
if parent_value:
|
||||
if param == "constraints":
|
||||
parent_value = [
|
||||
ormar.UniqueColumns(*x._pending_colargs) for x in parent_value
|
||||
]
|
||||
if isinstance(current_value, list):
|
||||
current_value.extend(parent_value)
|
||||
else:
|
||||
setattr(attrs["Meta"], param, parent_value)
|
||||
|
||||
|
||||
def extract_from_parents_definition(
|
||||
def extract_from_parents_definition( # noqa: CCR001
|
||||
base_class: type,
|
||||
curr_class: type,
|
||||
attrs: Dict,
|
||||
|
||||
@ -92,6 +92,7 @@ def test_init_of_abstract_model():
|
||||
|
||||
def test_field_redefining_raises_error():
|
||||
with pytest.raises(ModelDefinitionError):
|
||||
|
||||
class WrongField(DateFieldsModel): # pragma: no cover
|
||||
class Meta(ormar.ModelMeta):
|
||||
tablename = "wrongs"
|
||||
@ -104,6 +105,7 @@ def test_field_redefining_raises_error():
|
||||
|
||||
def test_model_subclassing_non_abstract_raises_error():
|
||||
with pytest.raises(ModelDefinitionError):
|
||||
|
||||
class WrongField2(DateFieldsModelNoSubclass): # pragma: no cover
|
||||
class Meta(ormar.ModelMeta):
|
||||
tablename = "wrongs"
|
||||
|
||||
Reference in New Issue
Block a user