From d0161a81af5c5e83fc1f964bfea36c180779d1c3 Mon Sep 17 00:00:00 2001 From: collerek Date: Thu, 17 Sep 2020 18:10:10 +0200 Subject: [PATCH] add callable excecution and test for default value, update readme with exclude, bump version --- .coverage | Bin 53248 -> 53248 bytes README.md | 3 +++ ormar/__init__.py | 2 +- ormar/fields/base.py | 5 ++++- tests/test_models.py | 3 +++ 5 files changed, 11 insertions(+), 2 deletions(-) diff --git a/.coverage b/.coverage index b11594792a134a95f3a3d01ad010ea098f58a551..454571fa2dd84c558f39e6c558ca9ddf6d259588 100644 GIT binary patch delta 70 zcmV-M0J;BwpaX!Q1F$+T1UWh}II})4^j#wMZoc{E`+WZVd4A9D+jo9<=Wn}j+cw|k c=g;5#l53^K_Yyt(|egDq~v&D})K>K|r%m4rY diff --git a/README.md b/README.md index ef48fe5..a403d1a 100644 --- a/README.md +++ b/README.md @@ -82,6 +82,9 @@ notes = await Note.objects.filter(completed=True).all() # exact, iexact, contains, icontains, lt, lte, gt, gte, in notes = await Note.objects.filter(text__icontains="mum").all() +# exclude - from ormar >= 0.3.1 +notes = await Note.objects.exclude(text__icontains="mum").all() + # .get() note = await Note.objects.get(id=1) diff --git a/ormar/__init__.py b/ormar/__init__.py index 351f6b1..0403f31 100644 --- a/ormar/__init__.py +++ b/ormar/__init__.py @@ -26,7 +26,7 @@ class UndefinedType: # pragma no cover Undefined = UndefinedType() -__version__ = "0.3.0" +__version__ = "0.3.1" __all__ = [ "Integer", "BigInteger", diff --git a/ormar/fields/base.py b/ormar/fields/base.py index 18cdbfa..da9a0d8 100644 --- a/ormar/fields/base.py +++ b/ormar/fields/base.py @@ -41,7 +41,10 @@ class BaseField: @classmethod def get_default(cls) -> Any: if cls.has_default(): - return cls.default if cls.default is not None else cls.server_default + default = cls.default if cls.default is not None else cls.server_default + if callable(default): + default = default() + return default @classmethod def has_default(cls) -> bool: diff --git a/tests/test_models.py b/tests/test_models.py index 49f8ed3..9eece9a 100644 --- a/tests/test_models.py +++ b/tests/test_models.py @@ -1,4 +1,5 @@ import asyncio +from datetime import datetime import databases import pydantic @@ -43,6 +44,7 @@ class Product(ormar.Model): name: ormar.String(max_length=100) rating: ormar.Integer(minimum=1, maximum=5) in_stock: ormar.Boolean(default=False) + last_delivery: ormar.Date(default=datetime.now) @pytest.fixture(scope="module") @@ -158,6 +160,7 @@ async def test_model_filter(): assert product.pk is not None assert product.name == "T-Shirt" assert product.rating == 5 + assert product.last_delivery == datetime.now().date() products = await Product.objects.all(rating__gte=2, in_stock=True) assert len(products) == 2