execute user import

This commit is contained in:
Nico Krapp 2022-10-24 18:12:44 +02:00
parent 5ed847de8b
commit 10cd7e4e38
No known key found for this signature in database
GPG Key ID: AC35CFFF55212BC7
3 changed files with 11 additions and 9 deletions

View File

@ -159,7 +159,6 @@ class DB:
CREATE TABLE users ( CREATE TABLE users (
id SERIAL PRIMARY KEY, id SERIAL PRIMARY KEY,
userid VARCHAR(255) NOT NULL, userid VARCHAR(255) NOT NULL,
login VARCHAR(255) NOT NULL,
email VARCHAR(255) NOT NULL, email VARCHAR(255) NOT NULL,
realname VARCHAR(255) NOT NULL realname VARCHAR(255) NOT NULL
) )

View File

@ -10,6 +10,7 @@ from lib.obs import OBS
from lib.obs_revision import OBSRevision from lib.obs_revision import OBSRevision
from lib.proxy_sha256 import ProxySHA256, md5, sha256 from lib.proxy_sha256 import ProxySHA256, md5, sha256
from lib.request import Request from lib.request import Request
from lib.users import Users
def _files_hash(hash_alg, dirpath): def _files_hash(hash_alg, dirpath):
@ -173,6 +174,10 @@ class Importer:
else: else:
rev.set_broken(db) rev.set_broken(db)
fake_accounts = ["unknown","buildservice-autocommit", "autobuild", "_service"]
if Users.user_lookup(db, rev.userid) is None and rev.userid not in fake_accounts:
self.obs.users(rev.userid).import_into_db(db)
for number in DBRevision.requests_to_fetch(db, project, self.package): for number in DBRevision.requests_to_fetch(db, project, self.package):
self.obs.request(number).import_into_db(db) self.obs.request(number).import_into_db(db)

View File

@ -1,14 +1,13 @@
class Users: class Users:
def parse(self, xml, userid): def parse(self, xml, userid):
self.userid = userid self.userid = userid
self.login = xml.get("login") self.realname = xml.find("realname").text
self.realname = xml.find("login").get("realname") self.email = xml.find("email").text
self.email = xml.find("login").get("email")
return self return self
def __str__(self): def __str__(self):
return f"User {self.userid} {self.login}: {self.realname} {self.email}" return f"User {self.userid}: {self.realname} {self.email}"
def __repr__(self): def __repr__(self):
return f"[{self.__str__()}]" return f"[{self.__str__()}]"
@ -16,18 +15,17 @@ class Users:
def import_into_db(self, db): def import_into_db(self, db):
cur = db.cursor() cur = db.cursor()
cur.execute( cur.execute(
"""INSERT INTO users (userid, login, realname, email) """INSERT INTO users (userid, realname, email)
VALUES (%s,%s,%s,%s) RETURNING id""", VALUES (%s,%s,%s) RETURNING id""",
( (
self.userid, self.userid,
self.login,
self.realname, self.realname,
self.email, self.email,
), ),
) )
cur.close() cur.close()
def user_lookup(self, db, userid): def user_lookup(db, userid):
cur= db.cursor() cur= db.cursor()
cur.execute("SELECT * FROM users where userid=%s", (userid,)) cur.execute("SELECT * FROM users where userid=%s", (userid,))
row = cur.fetchone() row = cur.fetchone()