aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPer Øyvind Karlsen <proyvind@moondrake.org>2016-06-03 14:08:36 +0200
committerPer Øyvind Karlsen <proyvind@moondrake.org>2016-06-03 14:08:36 +0200
commit8e45f6e95a474272ed23865fde8c056052099030 (patch)
tree5958219aa73e71b810504d36d6436b51fa06724c
parent06a32f511caa32ed72e999aae0c0d09afb59d493 (diff)
downloadmgarepo-8e45f6e95a474272ed23865fde8c056052099030.tar
mgarepo-8e45f6e95a474272ed23865fde8c056052099030.tar.gz
mgarepo-8e45f6e95a474272ed23865fde8c056052099030.tar.bz2
mgarepo-8e45f6e95a474272ed23865fde8c056052099030.tar.xz
mgarepo-8e45f6e95a474272ed23865fde8c056052099030.zip
improve class for mapping usernames to Full Name <username@mageig.org>
-rw-r--r--MgaRepo/log.py34
1 files changed, 24 insertions, 10 deletions
diff --git a/MgaRepo/log.py b/MgaRepo/log.py
index 5c2a56d..ffa5a4d 100644
--- a/MgaRepo/log.py
+++ b/MgaRepo/log.py
@@ -562,11 +562,18 @@ def get_old_log(pkgdirurl):
return chlog
from html.parser import HTMLParser
-class TagParser(HTMLParser):
+from urllib.request import urlopen
+class UserTagParser(HTMLParser):
li = False
ahref = False
userpage = None
namepat = re.compile("(?P<name>.*?)\s*\((?P<user>.*?)\)")
+ usermap = {}
+
+ def __init__(self, url="https://people.mageia.org/u/", defaultmail="mageia.org", *cmd, **kwargs):
+ HTMLParser.__init__(self, *cmd, **kwargs)
+ self.url = url
+ self.defaultmail = defaultmail
def handle_starttag(self, tag, attrs):
if tag == "li":
@@ -587,17 +594,23 @@ class TagParser(HTMLParser):
def handle_data(self, data):
if self.li and self.ahref:
found = self.namepat.match(data)
- if found and found.group("user") and found.group("name") and found.group("user")+".html" == self.userpage:
- usermap[found.group("user")] = "%s <%s@mageia.org>" % (found.group("name"), found.group("user"))
+ if found:
+ user = found.group("user")
+ name = found.group("name")
+ if user and name and user+".html" == self.userpage:
+ self.usermap[user] = "%s <%s@%s>" % (name, user, self.defaultmail)
+
+ def get_user_map(self):
+ f = urlopen(self.url)
+ userhtml = f.read().decode("UTF-8")
+ f.close()
+ self.feed(userhtml)
+ return self.usermap
def _map_user_names():
- import urllib.request
if not usermap:
- f = urllib.request.urlopen("https://people.mageia.org/u/")
- users = f.read().decode("UTF-8")
- f.close()
- parser = TagParser()
- parser.feed(users)
+ parser = UserTagParser()
+ usermap.update(parser.get_user_map())
def get_changelog(pkgdirurl, another=None, svn=True, rev=None, size=None,
submit=False, sort=False, template=None, macros=[], exported=None,
@@ -627,7 +640,8 @@ def get_changelog(pkgdirurl, another=None, svn=True, rev=None, size=None,
newlog = StringIO()
if svn:
if fullnames:
- _map_user_names()
+ if not usermap:
+ _map_user_names()
rawsvnlog = svn2rpm(pkgdirurl, rev=rev, size=size, submit=submit,
template=template, macros=macros, exported=exported)
newlog.write(rawsvnlog)