| |
@@ -0,0 +1,69 @@
|
| |
+ import requests
|
| |
+ import jinja2
|
| |
+ import pkgwat.api
|
| |
+
|
| |
+ import hubs.validators as validators
|
| |
+ from hubs.widgets.base import argument
|
| |
+ from hubs.widgets.chrome import panel
|
| |
+ from hubs.hinting import hint, prefixed as _
|
| |
+
|
| |
+ chrome = panel("Bugzilla: Issues")
|
| |
+
|
| |
+ template = jinja2.Template("""
|
| |
+ <ul class="media-list">
|
| |
+ {% for issue in all_issues[:3] %}
|
| |
+ <li class="media">
|
| |
+ <div class="media-left">
|
| |
+ <a href="https://bugzilla.redhat.com/show_bug.cgi?id={{ issue['id'] }}" target="_blank">
|
| |
+ <span class="label label-default">#{{ issue['id'] }}</span>
|
| |
+ </a>
|
| |
+ </div>
|
| |
+ <div class="media-body">
|
| |
+ <h4 class="media-heading">
|
| |
+ <a href="https://admin.fedoraproject.org/pkgdb/package/rpms/{{ issue['pkg_name'] }}" target="_blank">{{ issue['pkg_name'] }}</a> -
|
| |
+ {{ issue['title'] }}
|
| |
+ </h4>
|
| |
+ </div>
|
| |
+ </li>
|
| |
+ {% endfor %}
|
| |
+ </ul>
|
| |
+ """)
|
| |
+
|
| |
+ @argument(name="username",
|
| |
+ default=None,
|
| |
+ validator=validators.username,
|
| |
+ help="A FAS username.")
|
| |
+ def data(session, widget, username):
|
| |
+ pkgdb_url = "https://admin.fedoraproject.org/pkgdb/api/packager/package"
|
| |
+ url = "/".join([pkgdb_url, username])
|
| |
+ response = requests.get(url)
|
| |
+ data = response.json()
|
| |
+
|
| |
+ all_issues = []
|
| |
+
|
| |
+ for package in data["point of contact"]:
|
| |
+ pkg_details=pkgwat.api.bugs(package['name'])
|
| |
+ for row in pkg_details['rows']:
|
| |
+ all_issues=(
|
| |
+ all_issues+[dict(
|
| |
+ pkg_name=package['name'],
|
| |
+ id=row['id'],
|
| |
+ title=row['description'])])[:3]
|
| |
+
|
| |
+ for package in data["co-maintained"]:
|
| |
+ pkg_details=pkgwat.api.bugs(package['name'])
|
| |
+ for row in pkg_details['rows']:
|
| |
+ all_issues=(
|
| |
+ all_issues+[dict(
|
| |
+ pkg_name=package['name'],
|
| |
+ id=row['id'],
|
| |
+ title=row['description'])])[:3]
|
| |
+
|
| |
+ return dict(
|
| |
+ username=username,
|
| |
+ all_issues=all_issues,
|
| |
+ )
|
| |
+
|
| |
+ @hint()
|
| |
+ def should_invalidate(message, session, widget):
|
| |
+ raise NotImplementedError
|
| |