forked from importers/git-importer
55 lines
1.6 KiB
Python
55 lines
1.6 KiB
Python
FAKE_ACCOUNTS = ('unknown','buildservice-autocommit', 'autobuild', '_service')
|
|
|
|
class User:
|
|
def parse(self, xml, userid):
|
|
self.userid = userid
|
|
self.realname = xml.find("realname").text
|
|
self.email = xml.find("email").text
|
|
if self.email == None:
|
|
self.email = ""
|
|
|
|
return self
|
|
|
|
def __str__(self):
|
|
return f"User {self.userid}: {self.realname} {self.email}"
|
|
|
|
def __repr__(self):
|
|
return f"[{self.__str__()}]"
|
|
|
|
def import_into_db(self, db):
|
|
cur = db.cursor()
|
|
cur.execute(
|
|
"""INSERT INTO users (userid, realname, email)
|
|
VALUES (%s,%s,%s) RETURNING id""",
|
|
(
|
|
self.userid,
|
|
self.realname,
|
|
self.email,
|
|
),
|
|
)
|
|
cur.close()
|
|
|
|
def lookup(db, userid):
|
|
cur= db.cursor()
|
|
cur.execute("SELECT * FROM users where userid=%s", (userid,))
|
|
row = cur.fetchone()
|
|
if not row:
|
|
cur.close()
|
|
return None
|
|
return row
|
|
|
|
@classmethod
|
|
def get_batch(self, db):
|
|
cur = db.cursor()
|
|
cur.execute(
|
|
"""SELECT DISTINCT revisions.userid
|
|
FROM revisions LEFT JOIN users ON revisions.userid = users.userid
|
|
WHERE users.userid IS NULL AND revisions.userid NOT IN
|
|
('unknown','buildservice-autocommit', 'autobuild', '_service')"""
|
|
)
|
|
missing_users = [row[0] for row in cur.fetchall()]
|
|
if not missing_users:
|
|
cur.close()
|
|
return []
|
|
return missing_users
|
|
|