| |
@@ -4,77 +4,114 @@
|
| |
import requests
|
| |
from hubs.widgets.base import argument
|
| |
import hubs.validators as validators
|
| |
- chrome = panel("Pagure: Newest Open Pull Requests")
|
| |
+ chrome = panel("Newest Open Pull Requests on Pagure")
|
| |
|
| |
pagure_url = "https://pagure.io/api/0"
|
| |
|
| |
template = jinja2.Template("""
|
| |
- <br />
|
| |
- <div class="container">
|
| |
- {% for i in range(0,total_req) %}
|
| |
- <div>
|
| |
- <table class="table-responsive table-condensed">
|
| |
- <tr>
|
| |
- <td valign="top" class="panel-heading">
|
| |
- <b>#{{ all_pr[i]['pr_id'] }}</b>
|
| |
- </td>
|
| |
- <td width="260px">
|
| |
- <b>{{ all_pr[i]['pr_title'] }} ...</b>
|
| |
- </td>
|
| |
- </tr>
|
| |
- </table>
|
| |
- <table class="table-responsive table-condensed">
|
| |
- <tr>
|
| |
- <td width="280px" >
|
| |
- <font size="2">
|
| |
- <i>Opened by <a href="https://pagure.io/user/{{ all_pr[i]['pr_openedby'] }}" target="_blank">{{ all_pr[i]['pr_openedby'] }}</a>
|
| |
- {% if all_pr[i]['pr_assignee'] %}
|
| |
- <br>Assigned to <a href="https://pagure.io/user/{{ all_pr[i]['pr_assignee'] }}" target="_blank">{{ all_pr[i]['pr_assignee'] }}</a></i>
|
| |
- {% endif %}
|
| |
- </font>
|
| |
- </td>
|
| |
- <td>
|
| |
- <a href="https://pagure.io/{{ repo }}/pull-request/{{ all_pr[i]['pr_id'] }}" target="_blank">
|
| |
- <button type="button" class="btn btn-default" aria-label="Left Align">
|
| |
- <span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span>
|
| |
- </button>
|
| |
- </a>
|
| |
- </td>
|
| |
- </tr>
|
| |
- </table>
|
| |
- </div>
|
| |
- {%endfor%}
|
| |
- <br />
|
| |
+ <div class="container">
|
| |
+ <table id="pagure-pr-list"
|
| |
+ class="table table-hover table-striped m-b-0">
|
| |
+ <thead class="thead-default">
|
| |
+ <tr>
|
| |
+ <th id="project-title">Project</th>
|
| |
+ <th id="pr-title">Pull-Request</th>
|
| |
+ <th class="open_by">Reporter</th>
|
| |
+ <th class="assigned">Assignee</th>
|
| |
+ </tr>
|
| |
+ </thead>
|
| |
+ <tfoot>
|
| |
+ </tfoot>
|
| |
+ <tbody>
|
| |
+ {% for pr in all_pr %}
|
| |
+ <tr>
|
| |
+ <td>
|
| |
+ {% if pr['pr_project_user'] %}
|
| |
+ <a href="https://pagure.io/forks/{{
|
| |
+ pr['pr_project_user'] }}/{{ pr['pr_project_name'] }}"
|
| |
+ target="_blank">
|
| |
+ {{ pr['pr_project_user'] }}/{{ pr['pr_project_name'] }}
|
| |
+ {% else %}
|
| |
+ <a href="https://pagure.io/{{
|
| |
+ pr['pr_project_name'] }}" target="_blank">
|
| |
+ {{ pr['pr_project_name'] }}
|
| |
+ {% endif %}
|
| |
+ </a>
|
| |
+ </td>
|
| |
+ <td>
|
| |
+ <span class="label label-default">#{{ pr['pr_id'] }}</span>
|
| |
+ <a href="https://pagure.io/{{ repo }}/pull-request/{{
|
| |
+ pr['pr_id'] }}" target="_blank"
|
| |
+ title="{{ pr['pr_title_full'] }}">
|
| |
+ {{ pr['pr_title'] }} ...
|
| |
+ </a>
|
| |
+ </td>
|
| |
+ <td>
|
| |
+ <a href="https://pagure.io/user/{{ pr['pr_openedby'] }}"
|
| |
+ target="_blank">
|
| |
+ {{ pr['pr_openedby'] }}
|
| |
+ </a>
|
| |
+ </td>
|
| |
+ <td>
|
| |
+ {% if pr['pr_assignee'] %}
|
| |
+ <a href="https://pagure.io/user/{{ pr['pr_assignee'] }}"
|
| |
+ target="_blank">
|
| |
+ {{ pr['pr_assignee'] }}
|
| |
+ </a>
|
| |
+ {% else %}
|
| |
+ <span class="text-muted">unassigned</span>
|
| |
+ {% endif %}
|
| |
+ </td>
|
| |
+ </tr>
|
| |
+ {% endfor %}
|
| |
+ </tbody>
|
| |
+ </table>
|
| |
</div class="row">
|
| |
- <center><a href="https://pagure.io/{{ repo }}/pull-requests" target="_blank">All Pull-Requests</a><center>
|
| |
+ <center>
|
| |
+ <a href="https://pagure.io/{{ repo }}/pull-requests" target="_blank">
|
| |
+ All Pull-Requests
|
| |
+ </a>
|
| |
+ <center>
|
| |
</div>
|
| |
</div>
|
| |
""")
|
| |
|
| |
+
|
| |
@argument(name="repo",
|
| |
default=None,
|
| |
- validator=validators.repo,
|
| |
- help="Repo")
|
| |
+ validator=validators.pagure_repo,
|
| |
+ help="Pagure repo name")
|
| |
def data(session, widget, repo):
|
| |
- repo="pagure"
|
| |
url = '/'.join([pagure_url, repo, "pull-requests"])
|
| |
response = requests.get(url)
|
| |
data = response.json()
|
| |
total_req = data['total_requests']
|
| |
all_pr = list()
|
| |
- for i in range(0,total_req):
|
| |
- all_pr.append(dict(
|
| |
- pr_id=data['requests'][i]['id'],
|
| |
- pr_title=data['requests'][i]['title'][:45],
|
| |
- pr_openedby=data['requests'][i]['user']['name'],
|
| |
- pr_assignee=data['requests'][i]['assignee'],
|
| |
- ))
|
| |
- all_pr.reverse()
|
| |
- return dict(all_pr=all_pr,
|
| |
- total_req=total_req,
|
| |
- repo=repo,
|
| |
- )
|
| |
+
|
| |
+ for request in data['requests']:
|
| |
+ pr_project_user = None
|
| |
+ if request['project']['parent']:
|
| |
+ pr_project_user = request['project']['user']['username']
|
| |
+
|
| |
+ all_pr.append(
|
| |
+ dict(
|
| |
+ pr_project_name=request['project']['name'],
|
| |
+ pr_project_user=pr_project_user,
|
| |
+ pr_id=request['id'],
|
| |
+ pr_title=request['title'][:45],
|
| |
+ pr_title_full=request['title'],
|
| |
+ pr_openedby=request['user']['name'],
|
| |
+ pr_assignee=request['assignee'],
|
| |
+ )
|
| |
+ )
|
| |
+
|
| |
+ return dict(
|
| |
+ all_pr=all_pr,
|
| |
+ total_req=total_req,
|
| |
+ repo=repo,
|
| |
+ )
|
| |
+
|
| |
|
| |
@hint()
|
| |
def should_invalidate(message, session, widget):
|
| |
- raise NotImplementedError
|
| |
+ raise NotImplementedError
|
| |