add exclude_parent_fields param and first test

This commit is contained in:
collerek
2021-06-01 18:51:06 +02:00
parent 7a84577613
commit 3b9c8b323b
6 changed files with 96 additions and 12 deletions

View File

@ -0,0 +1,67 @@
import datetime
from typing import List, Optional
import databases
import pytest
import sqlalchemy as sa
from sqlalchemy import create_engine
import ormar
from ormar import ModelDefinitionError, property_field
from ormar.exceptions import ModelError
from tests.settings import DATABASE_URL
metadata = sa.MetaData()
db = databases.Database(DATABASE_URL)
engine = create_engine(DATABASE_URL)
class AuditModel(ormar.Model):
class Meta:
abstract = True
created_by: str = ormar.String(max_length=100)
updated_by: str = ormar.String(max_length=100, default="Sam")
class DateFieldsModel(ormar.Model):
class Meta(ormar.ModelMeta):
abstract = True
metadata = metadata
database = db
created_date: datetime.datetime = ormar.DateTime(
default=datetime.datetime.now, name="creation_date"
)
updated_date: datetime.datetime = ormar.DateTime(
default=datetime.datetime.now, name="modification_date"
)
class Category(DateFieldsModel, AuditModel):
class Meta(ormar.ModelMeta):
tablename = "categories"
exclude_parent_fields = ["updated_by", "updated_date"]
id: int = ormar.Integer(primary_key=True)
name: str = ormar.String(max_length=50, unique=True, index=True)
code: int = ormar.Integer()
@pytest.fixture(autouse=True, scope="module")
def create_test_database():
metadata.create_all(engine)
yield
metadata.drop_all(engine)
def test_model_definition():
model_fields = Category.Meta.model_fields
sqlalchemy_columns = Category.Meta.table.c
pydantic_columns = Category.__fields__
assert "updated_by" not in model_fields
assert "updated_by" not in sqlalchemy_columns
assert "updated_by" not in pydantic_columns
assert "updated_date" not in model_fields
assert "updated_date" not in sqlalchemy_columns
assert "updated_date" not in pydantic_columns

View File

@ -121,13 +121,6 @@ class Bus(Car):
max_persons: int = ormar.Integer()
# class PersonsCar(ormar.Model):
# class Meta:
# tablename = "cars_x_persons"
# metadata = metadata
# database = db
class Car2(ormar.Model):
class Meta:
abstract = True
@ -138,9 +131,7 @@ class Car2(ormar.Model):
name: str = ormar.String(max_length=50)
owner: Person = ormar.ForeignKey(Person, related_name="owned")
co_owners: List[Person] = ormar.ManyToMany(
Person,
# through=PersonsCar,
related_name="coowned",
Person, related_name="coowned",
)
created_date: datetime.datetime = ormar.DateTime(default=datetime.datetime.now)