From acda2fd53d8db68566b2d2d3c7035638524542a0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Henrik=20tom=20W=C3=B6rden?= <h.tomwoerden@indiscale.com>
Date: Tue, 8 Sep 2020 16:11:10 +0000
Subject: [PATCH] ENH: treat datamodel problems at more places

---
 src/caosadvancedtools/crawler.py | 27 +++++++++++++++++++--------
 1 file changed, 19 insertions(+), 8 deletions(-)

diff --git a/src/caosadvancedtools/crawler.py b/src/caosadvancedtools/crawler.py
index 5ce325e0..323d1955 100644
--- a/src/caosadvancedtools/crawler.py
+++ b/src/caosadvancedtools/crawler.py
@@ -193,12 +193,16 @@ class Crawler(object):
                         matches[idx].append(Cfood.__name__)
                         cfoods.append(Cfood(item))
                         logger.debug("{} matched\n{}.".format(
-                                Cfood.__name__,
-                                item))
+                            Cfood.__name__,
+                            item))
                     except DataInconsistencyError as e:
                         logger.debug(traceback.format_exc())
                         logger.debug(e)
                     except Exception as e:
+                        try:
+                            DataModelProblems.evaluate_exception(e)
+                        except BaseException:
+                            pass
                         logger.debug("Failed during execution of {}!".format(
                             Cfood.__name__))
                         logger.debug(traceback.format_exc())
@@ -215,16 +219,18 @@ class Crawler(object):
         for cfood in cfoods:
             cfood.collect_information()
 
-        logger.debug(separated("Trying to attach further items to created CFoods"))
+        logger.debug(
+            separated("Trying to attach further items to created CFoods"))
 
         for cfood in cfoods:
-            logger.debug("Matching against {}...".format(cfood.__class__.__name__))
+            logger.debug("Matching against {}...".format(
+                cfood.__class__.__name__))
 
             for idx, item in self.iteritems():
                 if cfood.looking_for(item):
                     logger.debug("{} matched\n{}.".format(
-                            cfood.__class__.__name__,
-                            item))
+                        cfood.__class__.__name__,
+                        item))
                     cfood.attach(item)
                     matches[idx].append(cfood.__class__.__name__)
 
@@ -245,7 +251,7 @@ class Crawler(object):
                 msg = ("Attention: More than one matching cfood!\n"
                        + "Tried to match {}\n".format(item)
                        + "\tRecordTypes:\t" + ", ".join(
-                            matches[idx])+"\n")
+                           matches[idx])+"\n")
 
                 logger.debug(msg, extra={"identifier": str(item),
                                          'category': "matches"})
@@ -284,6 +290,10 @@ class Crawler(object):
                 logger.debug(traceback.format_exc())
                 logger.debug(e)
             except Exception as e:
+                try:
+                    DataModelProblems.evaluate_exception(e)
+                except BaseException:
+                    pass
                 logger.info("Failed during execution of {}!".format(
                     cfood.__class__.__name__))
                 logger.debug(traceback.format_exc())
@@ -301,7 +311,8 @@ class Crawler(object):
             # only done in SSS mode
 
             if "SHARED_DIR" in os.environ:
-                filename = self.save_form([el[3] for el in pending_changes], path)
+                filename = self.save_form([el[3]
+                                           for el in pending_changes], path)
                 self.send_mail([el[3] for el in pending_changes], filename)
 
             for i, el in enumerate(pending_changes):
-- 
GitLab