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)
|
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.
|
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"]
|
params_to_update = ["metadata", "database", "constraints"]
|
||||||
for param in params_to_update:
|
for param in params_to_update:
|
||||||
current_value = attrs.get('Meta', {}).__dict__.get(param, ormar.Undefined)
|
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
|
parent_value = (
|
||||||
|
base_class.Meta.__dict__.get(param) if hasattr(base_class, "Meta") else None
|
||||||
|
)
|
||||||
if parent_value:
|
if parent_value:
|
||||||
|
if param == "constraints":
|
||||||
|
parent_value = [
|
||||||
|
ormar.UniqueColumns(*x._pending_colargs) for x in parent_value
|
||||||
|
]
|
||||||
if isinstance(current_value, list):
|
if isinstance(current_value, list):
|
||||||
current_value.extend(parent_value)
|
current_value.extend(parent_value)
|
||||||
else:
|
else:
|
||||||
setattr(attrs["Meta"], param, parent_value)
|
setattr(attrs["Meta"], param, parent_value)
|
||||||
|
|
||||||
|
|
||||||
def extract_from_parents_definition(
|
def extract_from_parents_definition( # noqa: CCR001
|
||||||
base_class: type,
|
base_class: type,
|
||||||
curr_class: type,
|
curr_class: type,
|
||||||
attrs: Dict,
|
attrs: Dict,
|
||||||
|
|||||||
@ -92,6 +92,7 @@ def test_init_of_abstract_model():
|
|||||||
|
|
||||||
def test_field_redefining_raises_error():
|
def test_field_redefining_raises_error():
|
||||||
with pytest.raises(ModelDefinitionError):
|
with pytest.raises(ModelDefinitionError):
|
||||||
|
|
||||||
class WrongField(DateFieldsModel): # pragma: no cover
|
class WrongField(DateFieldsModel): # pragma: no cover
|
||||||
class Meta(ormar.ModelMeta):
|
class Meta(ormar.ModelMeta):
|
||||||
tablename = "wrongs"
|
tablename = "wrongs"
|
||||||
@ -104,6 +105,7 @@ def test_field_redefining_raises_error():
|
|||||||
|
|
||||||
def test_model_subclassing_non_abstract_raises_error():
|
def test_model_subclassing_non_abstract_raises_error():
|
||||||
with pytest.raises(ModelDefinitionError):
|
with pytest.raises(ModelDefinitionError):
|
||||||
|
|
||||||
class WrongField2(DateFieldsModelNoSubclass): # pragma: no cover
|
class WrongField2(DateFieldsModelNoSubclass): # pragma: no cover
|
||||||
class Meta(ormar.ModelMeta):
|
class Meta(ormar.ModelMeta):
|
||||||
tablename = "wrongs"
|
tablename = "wrongs"
|
||||||
|
|||||||
Reference in New Issue
Block a user