Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
[project]
requires-python = "== 3.12"
requires-python = "~= 3.12.12"
version = "3.5.0"
name= "objects-api"

# Bumpversion configuration

Expand All @@ -12,6 +14,9 @@ pre_commit_hooks = [
]

# Defines the files to be updated.
[[tool.bumpversion.files]]
filename = "pyproject.toml"

[[tool.bumpversion.files]]
filename = "src/objects/__init__.py"

Expand Down
2 changes: 1 addition & 1 deletion requirements/ci.txt
Original file line number Diff line number Diff line change
Expand Up @@ -374,7 +374,7 @@ face==20.1.1
# -c requirements/base.txt
# -r requirements/base.txt
# glom
factory-boy==3.2.0
factory-boy==3.3.3
# via
# -r requirements/performance-tests.in
# -r requirements/test-tools.in
Expand Down
2 changes: 1 addition & 1 deletion requirements/dev.txt
Original file line number Diff line number Diff line change
Expand Up @@ -422,7 +422,7 @@ face==20.1.1
# -c requirements/ci.txt
# -r requirements/ci.txt
# glom
factory-boy==3.2.0
factory-boy==3.3.3
# via
# -c requirements/ci.txt
# -r requirements/ci.txt
Expand Down
2 changes: 1 addition & 1 deletion src/objects/accounts/tests/factories.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
User = get_user_model()


class UserFactory(DjangoModelFactory):
class UserFactory(DjangoModelFactory[User]):
username = factory.Sequence(lambda n: f"user-{n}")
first_name = factory.Faker("first_name")
last_name = factory.Faker("last_name")
Expand Down
8 changes: 4 additions & 4 deletions src/objects/core/tests/factories.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
from ..models import Object, ObjectRecord, ObjectType, ObjectTypeVersion


class ObjectTypeFactory(factory.django.DjangoModelFactory):
class ObjectTypeFactory(factory.django.DjangoModelFactory[ObjectType]):
service = factory.SubFactory(ServiceFactory)
uuid = factory.LazyFunction(uuid.uuid4)
_name = factory.Faker("word")
Expand All @@ -24,7 +24,7 @@ class Meta:
model = ObjectType


class ObjectTypeVersionFactory(factory.django.DjangoModelFactory):
class ObjectTypeVersionFactory(factory.django.DjangoModelFactory[ObjectTypeVersion]):
object_type = factory.SubFactory(ObjectTypeFactory)
json_schema = {
"type": "object",
Expand All @@ -51,14 +51,14 @@ class ObjectDataFactory(factory.DictFactory):
diameter = factory.LazyAttribute(lambda x: random.randrange(1, 10_000))


class ObjectFactory(factory.django.DjangoModelFactory):
class ObjectFactory(factory.django.DjangoModelFactory[Object]):
object_type = factory.SubFactory(ObjectTypeFactory)

class Meta:
model = Object


class ObjectRecordFactory(factory.django.DjangoModelFactory):
class ObjectRecordFactory(factory.django.DjangoModelFactory[ObjectRecord]):
object = factory.SubFactory(ObjectFactory)
version = factory.Sequence(lambda n: n)
data = factory.SubFactory(ObjectDataFactory)
Expand Down
32 changes: 16 additions & 16 deletions src/objects/core/tests/test_admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,23 +23,23 @@ class ObjectAdminTests(WebTest):
def setUp(self):
super().setUp()

self.user = UserFactory(superuser=True)
self.user = UserFactory.create(superuser=True)

@tag("gh-615")
def test_object_changelist_filter_by_objecttype(self):
service = ServiceFactory(
service = ServiceFactory.create(
api_root="http://objecttypes.local/api/v1/",
auth_type=AuthTypes.api_key,
header_key="Authorization",
header_value="Token 5cebbb33ffa725b6ed5e9e98300061218ba98d71",
)
object_type = ObjectTypeFactory(
object_type = ObjectTypeFactory.create(
service=service, uuid="71a2452a-66c3-4030-b5ec-a06035102e9e"
)
# Create 100 unused ObjectTypes, which creates 100 Services as well
ObjectTypeFactory.create_batch(100)
object1 = ObjectFactory(object_type=object_type)
object2 = ObjectFactory()
object1 = ObjectFactory.create(object_type=object_type)
object2 = ObjectFactory.create()

# Verify that the number of queries doesn't scale with the number of objecttypes
with self.assertNumQueries(22):
Expand Down Expand Up @@ -94,20 +94,20 @@ def get_num_results(response) -> int:

@tag("gh-677")
def test_add_new_objectrecord(self):
service = ServiceFactory(
service = ServiceFactory.create(
api_root="http://objecttypes.local/api/v1/",
auth_type=AuthTypes.api_key,
header_key="Authorization",
header_value="Token 5cebbb33ffa725b6ed5e9e98300061218ba98d71",
)
object_type = ObjectTypeFactory(
object_type = ObjectTypeFactory.create(
service=service, uuid="71a2452a-66c3-4030-b5ec-a06035102e9e"
)
object_type_url = (
"http://objecttypes.local/api/v1/"
"objecttypes/71a2452a-66c3-4030-b5ec-a06035102e9e/versions/1"
)
object = ObjectFactory(object_type=object_type)
object = ObjectFactory.create(object_type=object_type)

self.assertEqual(object.records.count(), 0)

Expand All @@ -133,23 +133,23 @@ def test_add_new_objectrecord(self):

@tag("gh-621")
def test_object_admin_search_json_key_operator_value(self):
object1 = ObjectFactory()
ObjectRecordFactory(
object1 = ObjectFactory.create()
ObjectRecordFactory.create(
object=object1,
data={"id_nummer": 1, "naam": "Boomgaard", "plantDate": "2025-01-01"},
)
object2 = ObjectFactory()
ObjectRecordFactory(
object2 = ObjectFactory.create()
ObjectRecordFactory.create(
object=object2,
data={"id_nummer": 2, "naam": "Appelboom", "plantDate": "2025-06-15"},
)
object3 = ObjectFactory()
ObjectRecordFactory(
object3 = ObjectFactory.create()
ObjectRecordFactory.create(
object=object3,
data={"id_nummer": 3, "naam": "Peren", "plantDate": "2025-12-31"},
)
object4 = ObjectFactory()
ObjectRecordFactory(
object4 = ObjectFactory.create()
ObjectRecordFactory.create(
object=object4,
data={
"id_nummer": 4,
Expand Down
4 changes: 2 additions & 2 deletions src/objects/core/tests/test_import_objecttypes.py
Original file line number Diff line number Diff line change
Expand Up @@ -117,8 +117,8 @@ def test_new_objecttypes_are_created(self):
self.assertEqual(str(version.status), "published")

def test_existing_objecttypes_are_updated(self):
objecttype1 = ObjectTypeFactory(service=self.service)
objecttype2 = ObjectTypeFactory(service=self.service)
objecttype1 = ObjectTypeFactory.create(service=self.service)
objecttype2 = ObjectTypeFactory.create(service=self.service)

self.m.get(
f"{self.url}objecttypes",
Expand Down
24 changes: 12 additions & 12 deletions src/objects/core/tests/test_objecttype_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@

class ObjectTypesConfigurationStepTests(TestCase):
def test_empty_database(self):
service_1 = ServiceFactory(slug="service-1")
service_2 = ServiceFactory(slug="service-2")
service_1 = ServiceFactory.create(slug="service-1")
service_2 = ServiceFactory.create(slug="service-2")

test_file_path = str(TEST_FILES / "objecttypes_empty_database.yaml")

Expand All @@ -43,15 +43,15 @@ def test_empty_database(self):
def test_existing_objecttype(self):
test_file_path = str(TEST_FILES / "objecttypes_existing_objecttype.yaml")

service_1: Service = ServiceFactory(slug="service-1")
service_2: Service = ServiceFactory(slug="service-2")
service_1: Service = ServiceFactory.create(slug="service-1")
service_2: Service = ServiceFactory.create(slug="service-2")

objecttype_1: ObjectType = ObjectTypeFactory(
objecttype_1: ObjectType = ObjectTypeFactory.create(
service=service_1,
uuid="b427ef84-189d-43aa-9efd-7bb2c459e281",
_name="Object Type 001",
)
objecttype_2: ObjectType = ObjectTypeFactory(
objecttype_2: ObjectType = ObjectTypeFactory.create(
service=service_2,
uuid="b0e8553f-8b1a-4d55-ab90-6d02f1bcf2c2",
_name="Object Type 002",
Expand Down Expand Up @@ -82,9 +82,9 @@ def test_existing_objecttype(self):
self.assertEqual(objecttype_3.service, service_2)

def test_unknown_service(self):
service = ServiceFactory(slug="service-1")
service = ServiceFactory.create(slug="service-1")

objecttype: ObjectType = ObjectTypeFactory(
objecttype: ObjectType = ObjectTypeFactory.create(
uuid="b427ef84-189d-43aa-9efd-7bb2c459e281",
_name="Object Type 001",
service=service,
Expand All @@ -108,9 +108,9 @@ def test_unknown_service(self):
def test_invalid_uuid(self):
test_file_path = str(TEST_FILES / "objecttypes_invalid_uuid.yaml")

service: Service = ServiceFactory(slug="service-1")
service: Service = ServiceFactory.create(slug="service-1")

objecttype: ObjectType = ObjectTypeFactory(
objecttype: ObjectType = ObjectTypeFactory.create(
service=service,
uuid="b427ef84-189d-43aa-9efd-7bb2c459e281",
_name="Object Type 001",
Expand All @@ -131,8 +131,8 @@ def test_invalid_uuid(self):
self.assertEqual(objecttype.service, service)

def test_idempotent_step(self):
service_1 = ServiceFactory(slug="service-1")
service_2 = ServiceFactory(slug="service-2")
service_1 = ServiceFactory.create(slug="service-1")
service_2 = ServiceFactory.create(slug="service-2")

test_file_path = str(TEST_FILES / "objecttypes_idempotent.yaml")

Expand Down
12 changes: 6 additions & 6 deletions src/objects/setup_configuration/tests/test_token_auth_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,18 +21,18 @@

class TokenTestCase(TestCase):
def setUp(self):
self.service = ServiceFactory(slug="service")
ObjectTypeFactory(
self.service = ServiceFactory.create(slug="service")
ObjectTypeFactory.create(
service=self.service,
uuid="3a82fb7f-fc9b-4104-9804-993f639d6d0d",
_name="Object Type 001",
)
ObjectTypeFactory(
ObjectTypeFactory.create(
service=self.service,
uuid="ca754b52-3f37-4c49-837c-130e8149e337",
_name="Object Type 002",
)
ObjectTypeFactory(
ObjectTypeFactory.create(
service=self.service,
uuid="feeaa795-d212-4fa2-bb38-2c34996e5702",
_name="Object Type 003",
Expand Down Expand Up @@ -104,7 +104,7 @@ def test_valid_setup_complete(self):
self.assertTrue(token.is_superuser)

def test_valid_update_existing_tokens(self):
TokenAuthFactory(
TokenAuthFactory.create(
identifier="token-1",
token="18b2b74ef994314b84021d47b9422e82b685d82f",
contact_person="Person 1",
Expand All @@ -114,7 +114,7 @@ def test_valid_update_existing_tokens(self):
administration="Administration XYZ",
)

TokenAuthFactory(
TokenAuthFactory.create(
identifier="token-2",
token="1cad42916dfa439af8c69000bf7b6af6a66782af",
contact_person="Person 3",
Expand Down
4 changes: 2 additions & 2 deletions src/objects/tests/admin/test_token_permissions.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ class AddPermissionTests(WebTest):
url = reverse_lazy("admin:token_permission_add")

def setUp(self):
user = UserFactory(is_superuser=True, is_staff=True)
user = UserFactory.create(is_superuser=True, is_staff=True)
self.app.set_user(user)

def test_add_permission_choices_without_properties(self, m):
Expand Down Expand Up @@ -62,7 +62,7 @@ def test_get_permission_with_unavailable_objecttypes(self, m):
self.assertEqual(response.status_code, 200)

def test_token_auth_is_preselected_in_select(self, m):
token = TokenAuthFactory()
token = TokenAuthFactory.create()
url = f"{self.url}?token_auth={token.pk}"
page = self.app.get(url)

Expand Down
8 changes: 4 additions & 4 deletions src/objects/tests/v2/test_auth.py
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ class PermissionTests(TokenAuthMixin, APITestCase):
def setUpTestData(cls):
super().setUpTestData()

cls.object_type = ObjectTypeFactory(service__api_root=OBJECT_TYPES_API)
cls.object_type = ObjectTypeFactory.create(service__api_root=OBJECT_TYPES_API)

def test_retrieve_no_object_permission(self):
object = ObjectFactory.create()
Expand Down Expand Up @@ -206,7 +206,7 @@ class FilterAuthTests(TokenAuthMixin, APITestCase):
def setUpTestData(cls):
super().setUpTestData()

cls.object_type = ObjectTypeFactory(service__api_root=OBJECT_TYPES_API)
cls.object_type = ObjectTypeFactory.create(service__api_root=OBJECT_TYPES_API)

def test_list_objects_without_object_permissions(self):
ObjectFactory.create_batch(2)
Expand Down Expand Up @@ -425,7 +425,7 @@ def test_create_superuser_no_object_type(self, m):

@requests_mock.Mocker()
def test_update_superuser(self, m):
object_type = ObjectTypeFactory(service__api_root=OBJECT_TYPES_API)
object_type = ObjectTypeFactory.create(service__api_root=OBJECT_TYPES_API)
record = ObjectRecordFactory.create(object__object_type=object_type, version=1)
url = reverse("object-detail", args=[record.object.uuid])
data = {
Expand All @@ -449,7 +449,7 @@ def test_update_superuser(self, m):

@requests_mock.Mocker()
def test_patch_superuser(self, m):
object_type = ObjectTypeFactory(service__api_root=OBJECT_TYPES_API)
object_type = ObjectTypeFactory.create(service__api_root=OBJECT_TYPES_API)
record = ObjectRecordFactory.create(
object__object_type=object_type, version=1, data__name="old"
)
Expand Down
10 changes: 5 additions & 5 deletions src/objects/tests/v2/test_auth_fields.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ class RetrieveAuthFieldsTests(TokenAuthMixin, APITestCase):
def setUpTestData(cls):
super().setUpTestData()

cls.object_type = ObjectTypeFactory(service__api_root=OBJECT_TYPES_API)
cls.object_type = ObjectTypeFactory.create(service__api_root=OBJECT_TYPES_API)

def test_retrieve_without_query(self):
PermissionFactory.create(
Expand Down Expand Up @@ -170,8 +170,8 @@ class ListAuthFieldsTests(TokenAuthMixin, APITestCase):
def setUpTestData(cls):
super().setUpTestData()

cls.object_type = ObjectTypeFactory(service__api_root=OBJECT_TYPES_API)
cls.other_object_type = ObjectTypeFactory()
cls.object_type = ObjectTypeFactory.create(service__api_root=OBJECT_TYPES_API)
cls.other_object_type = ObjectTypeFactory.create()

def test_list_without_query_different_object_types(self):
PermissionFactory.create(
Expand Down Expand Up @@ -241,7 +241,7 @@ def test_list_without_query_different_object_types(self):
)

def test_list_with_query_fields(self):
other_object_type = ObjectTypeFactory()
other_object_type = ObjectTypeFactory.create()
PermissionFactory.create(
object_type=self.object_type,
mode=PermissionModes.read_only,
Expand Down Expand Up @@ -388,7 +388,7 @@ class SearchAuthFieldsTests(TokenAuthMixin, APITestCase):
def setUpTestData(cls):
super().setUpTestData()

cls.object_type = ObjectTypeFactory(service__api_root=OBJECT_TYPES_API)
cls.object_type = ObjectTypeFactory.create(service__api_root=OBJECT_TYPES_API)

def test_search_with_fields_auth(self):
PermissionFactory.create(
Expand Down
Loading
Loading