]> git.ipfire.org Git - pbs.git/commitdiff
keys: Refactor reading them from the database
authorMichael Tremer <michael.tremer@ipfire.org>
Thu, 6 Oct 2022 10:18:36 +0000 (10:18 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Thu, 6 Oct 2022 10:18:36 +0000 (10:18 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/buildservice/keys.py
src/web/keys.py

index bde0a842843e3e8e4611dbf233ff3bcc227cda05..93e09ba9839c916b4e5087c0e4e576221c6752e7 100644 (file)
@@ -40,6 +40,28 @@ def read_key(data):
 
 
 class Keys(base.Object):
+       def _get_keys(self, query, *args):
+               res = self.db.query(query, *args)
+
+               for row in res:
+                       yield Key(self.backend, row.id, data=row)
+
+       def _get_key(self, query, *args):
+               res = self.db.get(query, *args)
+
+               if res:
+                       return Key(self.backend, res.id, data=res)
+
+       def __iter__(self):
+               return self._get_keys("""
+                       SELECT
+                               *
+                       FROM
+                               keys
+                       ORDER BY
+                               uids
+               """)
+
        def create(self, data):
                fingerprint, key = read_key(data)
 
@@ -58,31 +80,21 @@ class Keys(base.Object):
 
                return key
 
-       def get_all(self):
-               query = self.db.query("SELECT id FROM keys ORDER BY uids")
-
-               keys = []
-               for key in query:
-                       key = Key(self.pakfire, key.id)
-                       keys.append(key)
-
-               return keys
-
        def get_by_id(self, id):
-               key = self.db.get("SELECT id FROM keys WHERE id = %s", id)
-               if not key:
-                       return
-
-               return Key(self.pakfire, key.id)
+               return self._get_key("SELECT * FROM keys WHERE id = %s", id)
 
        def get_by_fpr(self, fpr):
                fpr = "%%%s" % fpr
 
-               key = self.db.get("SELECT id FROM keys WHERE fingerprint LIKE %s", fpr)
-               if not key:
-                       return
-
-               return Key(self.pakfire, key.id)
+               return self._get_key("""
+                       SELECT
+                               *
+                       FROM
+                               keys
+                       WHERE
+                               fingerprint LIKE %s
+                       """, fpr,
+               )
 
 
 class Key(base.DataObject):
index c23354b517b4afd774a003ada8b6549c8b3259fa..ea8b1fa982ec9c0d672af1adbb0226fb8bf6aa91 100644 (file)
@@ -48,9 +48,7 @@ class KeysDeleteHandler(KeysActionHandler):
 
 class KeysListHandler(base.BaseHandler):
        def get(self):
-               keys = self.backend.keys.get_all()
-
-               self.render("keys-list.html", keys=keys)
+               self.render("keys-list.html", keys=self.backend.keys)
 
 
 class KeysDownloadHandler(base.BaseHandler):