From 91e42d6d92a68509d370d8652da1d191257d5c2f Mon Sep 17 00:00:00 2001
From: Patrick Jentsch <p.jentsch@uni-bielefeld.de>
Date: Tue, 9 May 2023 14:18:59 +0200
Subject: [PATCH] Revert changes and fix some typos

---
 app/models.py | 100 +++++++++++++++++++++++---------------------------
 1 file changed, 46 insertions(+), 54 deletions(-)

diff --git a/app/models.py b/app/models.py
index 61587dd7..22969c2f 100644
--- a/app/models.py
+++ b/app/models.py
@@ -1678,33 +1678,28 @@ class Corpus(HashidMixin, db.Model):
 @db.event.listens_for(JobResult, 'after_delete')
 @db.event.listens_for(SpaCyNLPPipelineModel, 'after_delete')
 @db.event.listens_for(TesseractOCRPipelineModel, 'after_delete')
-def ressource_after_delete(mapper, connection, ressource):
-    jsonpatch = [{'op': 'remove', 'path': ressource.jsonpatch_path}]
-    room = f'/users/{ressource.user_hashid}'
+def resource_after_delete(mapper, connection, resource):
+    jsonpatch = [
+        {
+            'op': 'remove',
+            'path': resource.jsonpatch_path
+        }
+    ]
+    room = f'/users/{resource.user_hashid}'
     socketio.emit('PATCH', jsonpatch, room=room)
 
 
 @db.event.listens_for(CorpusFollowerAssociation, 'after_delete')
-def corpus_follower_association_after_delete_handler(mapper, connection, ressource):
-    corpus_owner_hashid = ressource.corpus.user.hashid
-    corpus_hashid = ressource.corpus.hashid
-    # Send a PATCH to the corpus owner
-    jsonpatch_path = f'/users/{corpus_owner_hashid}/corpora/{corpus_hashid}/corpus_follower_associations/{ressource.hashid}'
-    jsonpatch = [{'op': 'remove', 'path': jsonpatch_path}]
-    room = f'/users/{corpus_owner_hashid}'
-    socketio.emit('PATCH', jsonpatch, room=room)
-    # Send a PATCH to the followers (the deleted follower and others with permission "MANAGE_FOLLOWERS")
-    followers = [
-        x for x in ressource.corpus.corpus_follower_associations
-        if x.follower_id == ressource.follower_id
-            or x.role.has_permission('MANAGE_FOLLOWERS')
+def cfa_after_delete_handler(mapper, connection, cfa):
+    jsonpatch_path = f'/users/{cfa.corpus.user.hashid}/corpora/{cfa.corpus.hashid}/corpus_follower_associations/{cfa.hashid}'
+    jsonpatch = [
+        {
+            'op': 'remove',
+            'path': jsonpatch_path
+        }
     ]
-    for follower in followers:
-        jsonpatch_path = f'/users/{follower.hashid}/corpus_follower_associations/{ressource.hashid}'
-        jsonpatch = [{'op': 'remove', 'path': jsonpatch_path}]
-        room = f'/users/{follower.hashid}'
-        socketio.emit('PATCH', jsonpatch, room=room)
-
+    room = f'/users/{cfa.corpus.user.hashid}'
+    socketio.emit('PATCH', jsonpatch, room=room)
 
 
 @db.event.listens_for(Corpus, 'after_insert')
@@ -1714,38 +1709,34 @@ def corpus_follower_association_after_delete_handler(mapper, connection, ressour
 @db.event.listens_for(JobResult, 'after_insert')
 @db.event.listens_for(SpaCyNLPPipelineModel, 'after_insert')
 @db.event.listens_for(TesseractOCRPipelineModel, 'after_insert')
-def ressource_after_insert_handler(mapper, connection, ressource):
-    value = ressource.to_json_serializeable()
+def resource_after_insert_handler(mapper, connection, resource):
+    jsonpatch_value = resource.to_json_serializeable()
     for attr in mapper.relationships:
-        value[attr.key] = {}
+        jsonpatch_value[attr.key] = {}
     jsonpatch = [
-        {'op': 'add', 'path': ressource.jsonpatch_path, 'value': value}
+        {
+            'op': 'add',
+            'path': resource.jsonpatch_path,
+            'value': jsonpatch_value
+        }
     ]
-    room = f'/users/{ressource.user_hashid}'
+    room = f'/users/{resource.user_hashid}'
     socketio.emit('PATCH', jsonpatch, room=room)
 
 
 @db.event.listens_for(CorpusFollowerAssociation, 'after_insert')
-def corpus_follower_association_after_insert_handler(mapper, connection, ressource):
-    corpus_owner_hashid = ressource.corpus.user.hashid
-    corpus_hashid = ressource.corpus.hashid
-    value = ressource.to_json_serializeable()
-    # Send a PATCH to the corpus owner
-    jsonpatch_path = f'/users/{corpus_owner_hashid}/corpora/{corpus_hashid}/corpus_follower_associations/{ressource.hashid}'
-    jsonpatch = [{'op': 'add', 'path': jsonpatch_path, 'value': value}]
-    room = f'/users/{corpus_owner_hashid}'
-    socketio.emit('PATCH', jsonpatch, room=room)
-    # Send a PATCH to the followers (the deleted follower and others with permission "MANAGE_FOLLOWERS")
-    followers = [
-        x for x in ressource.corpus.corpus_follower_associations
-        if x.follower_id == ressource.follower_id
-            or x.role.has_permission('MANAGE_FOLLOWERS')
+def cfa_after_insert_handler(mapper, connection, cfa):
+    jsonpatch_value = cfa.to_json_serializeable()
+    jsonpatch_path = f'/users/{cfa.corpus.user.hashid}/corpora/{cfa.corpus.hashid}/corpus_follower_associations/{cfa.hashid}'
+    jsonpatch = [
+        {
+            'op': 'add',
+            'path': jsonpatch_path,
+            'value': jsonpatch_value
+        }
     ]
-    for follower in followers:
-        jsonpatch_path = f'/users/{follower.hashid}/corpus_follower_associations/{ressource.hashid}'
-        jsonpatch = [{'op': 'add', 'path': jsonpatch_path, 'value': value}]
-        room = f'/users/{follower.hashid}'
-        socketio.emit('PATCH', jsonpatch, room=room)
+    room = f'/users/{cfa.corpus.user.hashid}'
+    socketio.emit('PATCH', jsonpatch, room=room)
 
 
 @db.event.listens_for(Corpus, 'after_update')
@@ -1755,28 +1746,29 @@ def corpus_follower_association_after_insert_handler(mapper, connection, ressour
 @db.event.listens_for(JobResult, 'after_update')
 @db.event.listens_for(SpaCyNLPPipelineModel, 'after_update')
 @db.event.listens_for(TesseractOCRPipelineModel, 'after_update')
-def ressource_after_update_handler(mapper, connection, ressource):
+def resource_after_update_handler(mapper, connection, resource):
     jsonpatch = []
-    for attr in db.inspect(ressource).attrs:
+    for attr in db.inspect(resource).attrs:
         if attr.key in mapper.relationships:
             continue
         if not attr.load_history().has_changes():
             continue
+        jsonpatch_path = f'{resource.jsonpatch_path}/{attr.key}'
         if isinstance(attr.value, datetime):
-            value = f'{attr.value.isoformat()}Z'
+            jsonpatch_value = f'{attr.value.isoformat()}Z'
         elif isinstance(attr.value, Enum):
-            value = attr.value.name
+            jsonpatch_value = attr.value.name
         else:
-            value = attr.value
+            jsonpatch_value = attr.value
         jsonpatch.append(
             {
                 'op': 'replace',
-                'path': f'{ressource.jsonpatch_path}/{attr.key}',
-                'value': value
+                'path': jsonpatch_path,
+                'value': jsonpatch_value
             }
         )
     if jsonpatch:
-        room = f'/users/{ressource.user_hashid}'
+        room = f'/users/{resource.user_hashid}'
         socketio.emit('PATCH', jsonpatch, room=room)
 
 
-- 
GitLab