From fc9874dfb0506a8df2d7570b5379d67993feabb6 Mon Sep 17 00:00:00 2001 From: Erwan Rouchet <rouchet@teklia.com> Date: Fri, 20 Aug 2021 11:47:24 +0200 Subject: [PATCH] Allow setting dictionary items in MagicDict by setting attributes --- arkindex_worker/models.py | 3 +++ tests/test_element.py | 6 ++++++ 2 files changed, 9 insertions(+) diff --git a/arkindex_worker/models.py b/arkindex_worker/models.py index bea558be..473073fd 100644 --- a/arkindex_worker/models.py +++ b/arkindex_worker/models.py @@ -36,6 +36,9 @@ class MagicDict(dict): "{} object has no attribute '{}'".format(self.__class__.__name__, name) ) + def __setattr__(self, name, value): + return super().__setitem__(name, value) + def __delattr__(self, name): try: return super().__delattr__(name) diff --git a/tests/test_element.py b/tests/test_element.py index bfe2a9db..c20339af 100644 --- a/tests/test_element.py +++ b/tests/test_element.py @@ -320,3 +320,9 @@ def test_open_image_resize_use_full_image_false(mocker): assert open_mock.call_args == mocker.call( "http://zoneurl/0,0,400,600/133,200/0/default.jpg" ) + + +def test_setattr_setitem(): + element = Element({"name": "something"}) + element.type = "page" + assert dict(element) == {"name": "something", "type": "page"} -- GitLab