]> git.ipfire.org Git - ipfire.org.git/blobdiff - webapp/backend/fireinfo.py
fireinfo: Easily get penetration of a certain release
[ipfire.org.git] / webapp / backend / fireinfo.py
index fb946b4c9e677283d904b1aaeb3bdcac85c4ad84..cc2fb5e5a6d3308b00783a588785d456cf726eaf 100644 (file)
@@ -1687,6 +1687,15 @@ class Fireinfo(Object):
                if res:
                        return res.id
 
+       def get_release_penetration(self, release, when=None):
+               res = self.db.get("WITH profiles AS (SELECT fireinfo_profiles_with_data_at(%s) AS id) \
+                       SELECT COUNT(*)::float / (SELECT COUNT(*) FROM profiles) AS penetration FROM profiles \
+                       LEFT JOIN fireinfo_profiles_releases ON profiles.id = fireinfo_profiles_releases.profile_id \
+                       WHERE fireinfo_profiles_releases.release_id = %s", when, release.fireinfo_id)
+
+               if res:
+                       return res.penetration
+
        # Hypervisor
 
        def create_hypervisor(self, hypervisor):