]> git.ipfire.org Git - ipfire.org.git/blobdiff - src/backend/fireinfo.py
backend: show checksum on thank-you page
[ipfire.org.git] / src / backend / fireinfo.py
index a81e75331dc99a5f6dddae78f1370ec56d927146..702739bd6dfe10eeeab7a98aeabc95a793dd05cd 100644 (file)
@@ -234,7 +234,7 @@ PROFILE_SCHEMA = {
                                        "pattern" : r"^.{,80}$",
                                },
                                "root_size" : {
-                                       "type" : "number",
+                                       "type" : ["number", "null"],
                                },
                                "vendor" : {
                                        "type"    : ["string", "null"],
@@ -615,6 +615,16 @@ class System(Object):
        def release(self):
                return self.blob.get("release")
 
+       # Memory
+
+       @property
+       def memory(self):
+               return self.blob.get("memory") * 1024
+
+       @property
+       def friendly_memory(self):
+               return util.format_size(self.memory or 0)
+
        @property
        def storage(self):
                return self.blob.get("storage_size", 0)
@@ -688,16 +698,6 @@ class Profile(Object):
        def processor(self):
                return Processor(self.backend, self.blob.get("cpu", {}))
 
-       # Memory
-
-       @property
-       def memory(self):
-               return self.blob.get("memory")
-
-       @property
-       def friendly_memory(self):
-               return util.format_size(self.memory or 0)
-
        # Virtual
 
        def is_virtual(self):
@@ -1067,7 +1067,7 @@ class Fireinfo(Object):
                else:
                        res = self.db.query("""
                                SELECT
-                                       blob->'cpu'->'vendor' AS vendor,
+                                       NULLIF(blob->'cpu'->'vendor', '""'::jsonb) AS vendor,
                                        fireinfo_percentage(
                                                COUNT(*), SUM(COUNT(*)) OVER ()
                                        ) AS p
@@ -1077,10 +1077,8 @@ class Fireinfo(Object):
                                        expired_at IS NULL
                                AND
                                        blob IS NOT NULL
-                               AND
-                                       blob->'cpu'->'vendor' IS NOT NULL
                                GROUP BY
-                                       blob->'cpu'->'vendor'
+                                       NULLIF(blob->'cpu'->'vendor', '""'::jsonb)
                        """)
 
                return { CPU_VENDORS.get(row.vendor, row.vendor) : row.p for row in res }
@@ -1280,7 +1278,10 @@ class Fireinfo(Object):
                else:
                        res = self.db.query("""
                                SELECT
-                                       blob->'system'->'kernel' AS kernel,
+                                       COALESCE(
+                        blob->'system'->'kernel_release',
+                        blob->'system'->'kernel'
+                    ) AS kernel,
                                        fireinfo_percentage(
                                                COUNT(*), SUM(COUNT(*)) OVER ()
                                        ) AS p
@@ -1291,9 +1292,16 @@ class Fireinfo(Object):
                                AND
                                        blob IS NOT NULL
                                AND
-                                       blob->'system'->'kernel' IS NOT NULL
+                                       (
+                        blob->'system'->'kernel_release' IS NOT NULL
+                    OR
+                        blob->'system'->'kernel' IS NOT NULL
+                    )
                                GROUP BY
-                                       blob->'system'->'kernel'
+                                       COALESCE(
+                        blob->'system'->'kernel_release',
+                        blob->'system'->'kernel'
+                    )
                        """)
 
                return { row.kernel : row.p for row in res }