From 491f9ed6796b1aa34437f3247cb8956c928b1143 Mon Sep 17 00:00:00 2001 From: rubenwardy Date: Fri, 10 Jul 2020 18:41:08 +0100 Subject: [PATCH] Fix GitHub claim method being broken by phpBB update --- app/blueprints/users/claim.py | 3 ++- app/tasks/phpbbparser.py | 16 ++++++++-------- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/app/blueprints/users/claim.py b/app/blueprints/users/claim.py index 4e0f1ec..5f6a25b 100644 --- a/app/blueprints/users/claim.py +++ b/app/blueprints/users/claim.py @@ -30,6 +30,7 @@ def claim(): username = "" else: method = request.args.get("method") + user = User.query.filter_by(forums_username=username).first() if user and user.rank.atLeast(UserRank.NEW_MEMBER): flash("User has already been claimed", "danger") @@ -37,7 +38,7 @@ def claim(): elif method == "github": if user is None or user.github_username is None: flash("Unable to get Github username for user", "danger") - return redirect(url_for("users.claim")) + return redirect(url_for("users.claim", username=username)) else: return redirect(url_for("github.start")) elif user is None and request.method == "POST": diff --git a/app/tasks/phpbbparser.py b/app/tasks/phpbbparser.py index 752c7a6..caaa730 100644 --- a/app/tasks/phpbbparser.py +++ b/app/tasks/phpbbparser.py @@ -21,10 +21,10 @@ class Profile: self.properties = {} def set(self, key, value): - self.properties[key] = value + self.properties[key.lower()] = value def get(self, key): - return self.properties[key] if key in self.properties else None + return self.properties.get(key.lower()) def __str__(self): return self.username + "\n" + str(self.signature) + "\n" + str(self.properties) @@ -39,7 +39,7 @@ def __extract_properties(profile, soup): if len(imgs) == 1: profile.avatar = imgs[0]["src"] - res = el.find_all("dl", class_ = "left-box details") + res = el.select("dl.left-box.details") if len(res) != 1: return None @@ -85,12 +85,12 @@ def getProfile(url, username): soup = BeautifulSoup(contents, "lxml") if soup is None: return None - else: - profile = Profile(username) - profile.signature = __extract_signature(soup) - __extract_properties(profile, soup) - return profile + profile = Profile(username) + profile.signature = __extract_signature(soup) + __extract_properties(profile, soup) + + return profile regex_id = re.compile(r"^.*t=([0-9]+).*$")