From 0afff857e772811fc8a84b77cc8977b7e98f487b Mon Sep 17 00:00:00 2001
From: Jonathan Weth <git@jonathanweth.de>
Date: Wed, 2 Nov 2022 11:50:28 +0100
Subject: [PATCH] Provide tag information for Celery progress messages via
 GraphQL

---
 .../core/assets/components/CeleryProgress.vue | 23 +------------------
 .../assets/components/celeryProgress.graphql  |  1 +
 aleksis/core/schema.py                        |  5 ++++
 3 files changed, 7 insertions(+), 22 deletions(-)

diff --git a/aleksis/core/assets/components/CeleryProgress.vue b/aleksis/core/assets/components/CeleryProgress.vue
index 65cb9c683..23e99851b 100644
--- a/aleksis/core/assets/components/CeleryProgress.vue
+++ b/aleksis/core/assets/components/CeleryProgress.vue
@@ -21,7 +21,7 @@
               v-if="data"
               v-for="(message, idx) in progress.messages"
               dense
-              :type="STYLE_CLASSES[message.level]"
+              :type="message.tag"
               transition="slide-x-transition"
               :key="idx"
           >
@@ -66,21 +66,6 @@
 import BackButton from "./BackButton.vue";
 import MessageBox from "./MessageBox.vue";
 
-const STYLE_CLASSES = {
-  10: 'info',
-  20: 'info',
-  25: 'success',
-  30: 'warning',
-  40: 'error',
-};
-
-const ICONS = {
-  10: 'mdi-information',
-  20: 'mdi-information',
-  25: 'mdi-check-circle',
-  30: 'mdi-alert-outline',
-  40: 'mdi-alert-octagon-outline',
-};
 export default {
   name: 'CeleryProgress',
   components: {BackButton, MessageBox},
@@ -95,12 +80,6 @@ export default {
       pollInterval: 1000,
     }
   },
-  data() {
-    return {
-      STYLE_CLASSES,
-      ICONS,
-    };
-  },
   computed: {
     progress() {
       return this.celeryProgressByTaskId;
diff --git a/aleksis/core/assets/components/celeryProgress.graphql b/aleksis/core/assets/components/celeryProgress.graphql
index 49b03ef82..d6e12adbf 100644
--- a/aleksis/core/assets/components/celeryProgress.graphql
+++ b/aleksis/core/assets/components/celeryProgress.graphql
@@ -11,6 +11,7 @@ query($taskId: String!){
         messages {
             level
             message
+            tag
         }
         meta {
             title
diff --git a/aleksis/core/schema.py b/aleksis/core/schema.py
index 7fd551236..752e704d0 100644
--- a/aleksis/core/schema.py
+++ b/aleksis/core/schema.py
@@ -1,4 +1,5 @@
 from django.conf import settings
+from django.contrib.messages.constants import DEFAULT_TAGS
 from django.utils import translation
 
 import graphene
@@ -61,6 +62,7 @@ class SystemPropertiesType(graphene.ObjectType):
 class CeleryProgressMessage(ObjectType):
     message = graphene.String(required=True)
     level = graphene.Int(required=True)
+    tag = graphene.String(required=True)
 
     def resolve_message(root, info, **kwargs):
         return root[1]
@@ -68,6 +70,9 @@ class CeleryProgressMessage(ObjectType):
     def resolve_level(root, info, **kwargs):
         return root[0]
 
+    def resolve_tag(root, info, **kwargs):
+        return DEFAULT_TAGS.get(root[0], "info")
+
 
 class CeleryProgressAdditionalButtonType(ObjectType):
     title = graphene.String(required=True)
-- 
GitLab