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