| |
@@ -0,0 +1,90 @@
|
| |
+ 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 item in issues %}
|
| |
+ <li class="media">
|
| |
+ <div class="media-left">
|
| |
+ <a href="https://bugzilla.redhat.com/show_bug.cgi?id=
|
| |
+ {{ item['id'] }}" target="_blank">
|
| |
+ <span class="label label-default">#{{ item['id'] }}</span>
|
| |
+ </a>
|
| |
+ </div>
|
| |
+ <div class="media-body">
|
| |
+ <h4 class="media-heading">
|
| |
+ <a href="https://admin.fedoraproject.org/pkgdb/
|
| |
+ package/rpms/{{ item['pkg_name'] }}" target=
|
| |
+ "_blank">{{ item['pkg_name'] }}</a>:
|
| |
+ {{ item['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()
|
| |
+
|
| |
+ issues = []
|
| |
+
|
| |
+ for package in data["point of contact"]:
|
| |
+ if len(issues) == 3:
|
| |
+ break
|
| |
+ else:
|
| |
+ pkg_details=pkgwat.api.bugs(package['name'])
|
| |
+ for row in pkg_details['rows']:
|
| |
+ if len(issues) == 3:
|
| |
+ break
|
| |
+ else:
|
| |
+ issues.append(
|
| |
+ dict(
|
| |
+ id=row['id'],
|
| |
+ title=row['description'],
|
| |
+ pkg_name=package['name'],
|
| |
+ )
|
| |
+ )
|
| |
+
|
| |
+ for package in data["co-maintained"]:
|
| |
+ if len(issues) == 3:
|
| |
+ break
|
| |
+ else:
|
| |
+ pkg_details=pkgwat.api.bugs(package['name'])
|
| |
+ for row in pkg_details['rows']:
|
| |
+ if len(issues) == 3:
|
| |
+ break
|
| |
+ else:
|
| |
+ issues.append(
|
| |
+ dict(
|
| |
+ id=row['id'],
|
| |
+ title=row['description'],
|
| |
+ pkg_name=package['name'],
|
| |
+ )
|
| |
+ )
|
| |
+
|
| |
+ return dict(
|
| |
+ username=username,
|
| |
+ issues=issues,
|
| |
+ )
|
| |
+
|
| |
+
|
| |
+ @hint()
|
| |
+ def should_invalidate(message, session, widget):
|
| |
+ raise NotImplementedError
|
| |