mirror of
https://github.com/YunoHost/tartiflette.git
synced 2024-09-03 20:06:08 +02:00
Fetch testing PR info for apps
This commit is contained in:
parent
f174d2fe2b
commit
1c86627f77
3 changed files with 33 additions and 16 deletions
|
@ -38,7 +38,9 @@ class AppList(db.Model):
|
||||||
|
|
||||||
raw_apps = json.loads(requests.get(self.url).text)
|
raw_apps = json.loads(requests.get(self.url).text)
|
||||||
|
|
||||||
for name, app in raw_apps.items():
|
for name in sorted(raw_apps.keys()):
|
||||||
|
|
||||||
|
app = raw_apps[name]
|
||||||
|
|
||||||
app['url'] = app["git"]["url"].strip('/')
|
app['url'] = app["git"]["url"].strip('/')
|
||||||
|
|
||||||
|
@ -68,6 +70,11 @@ class AppList(db.Model):
|
||||||
known_app.maintainers = [ maintainer["name"] for maintainer in maintainers_info ]
|
known_app.maintainers = [ maintainer["name"] for maintainer in maintainers_info ]
|
||||||
|
|
||||||
known_app.maintained = app.get("maintained", True)
|
known_app.maintained = app.get("maintained", True)
|
||||||
|
# Quick and dirty fix to convert maintained state to boolean
|
||||||
|
if known_app.maintained == "orphaned":
|
||||||
|
known_app.maintained = False
|
||||||
|
elif isinstance(known_app.maintained, str):
|
||||||
|
known_app.maintained = True
|
||||||
known_app.state = app["state"]
|
known_app.state = app["state"]
|
||||||
known_app.ci_enabled = app["state"] == self.state_for_ci
|
known_app.ci_enabled = app["state"] == self.state_for_ci
|
||||||
known_app.public_level = app.get("level", None)
|
known_app.public_level = app.get("level", None)
|
||||||
|
@ -79,14 +86,14 @@ class AppList(db.Model):
|
||||||
known_app.master_commit = g.commit(known_app, "master")
|
known_app.master_commit = g.commit(known_app, "master")
|
||||||
known_app.public_commit_date = g.commit_date(known_app, known_app.public_commit)
|
known_app.public_commit_date = g.commit_date(known_app, known_app.public_commit)
|
||||||
known_app.master_commit_date = g.commit_date(known_app, known_app.master_commit)
|
known_app.master_commit_date = g.commit_date(known_app, known_app.master_commit)
|
||||||
known_app.testing_diff = g.diff(known_app, "master", "testing")["ahead_by"]
|
known_app.testing_pr = g.testing_pr(known_app)
|
||||||
known_app.opened_issues = issues_and_prs["nb_issues"]
|
known_app.opened_issues = issues_and_prs["nb_issues"]
|
||||||
known_app.opened_prs = issues_and_prs["nb_prs"]
|
known_app.opened_prs = issues_and_prs["nb_prs"]
|
||||||
|
|
||||||
else:
|
else:
|
||||||
known_app.public_commit = "???"
|
known_app.public_commit = "???"
|
||||||
known_app.master_commit = "???"
|
known_app.master_commit = "???"
|
||||||
known_app.testing_diff = -1
|
known_app.testing_pr = None
|
||||||
known_app.opened_issues = 0
|
known_app.opened_issues = 0
|
||||||
known_app.opened_prs = 0
|
known_app.opened_prs = 0
|
||||||
|
|
||||||
|
@ -115,7 +122,7 @@ class App(db.Model):
|
||||||
master_commit = db.Column(db.String(64), nullable=False)
|
master_commit = db.Column(db.String(64), nullable=False)
|
||||||
public_commit_date = db.Column(db.DateTime, nullable=True)
|
public_commit_date = db.Column(db.DateTime, nullable=True)
|
||||||
master_commit_date = db.Column(db.DateTime, nullable=True)
|
master_commit_date = db.Column(db.DateTime, nullable=True)
|
||||||
testing_diff = db.Column(db.Integer, default=-1)
|
testing_pr = db.Column(db.PickleType, default=None)
|
||||||
opened_issues = db.Column(db.Integer, default=-1)
|
opened_issues = db.Column(db.Integer, default=-1)
|
||||||
opened_prs = db.Column(db.Integer, default=-1)
|
opened_prs = db.Column(db.Integer, default=-1)
|
||||||
|
|
||||||
|
@ -168,14 +175,6 @@ class Github():
|
||||||
return {}
|
return {}
|
||||||
return r
|
return r
|
||||||
|
|
||||||
def diff(self, app, ref, commit):
|
|
||||||
|
|
||||||
repo = app.repo.replace("https://github.com/", "")
|
|
||||||
j = self.request('repos/{}/compare/{}...{}'.format(repo, ref, commit), autoretry=False)
|
|
||||||
|
|
||||||
return { "ahead_by": j.get("ahead_by", -1),
|
|
||||||
"behind_by": j.get("behind_by", -1) }
|
|
||||||
|
|
||||||
def issues(self, app):
|
def issues(self, app):
|
||||||
|
|
||||||
repo = app.repo.replace("https://github.com/", "")
|
repo = app.repo.replace("https://github.com/", "")
|
||||||
|
@ -187,6 +186,23 @@ class Github():
|
||||||
return { "nb_issues": nb_issues,
|
return { "nb_issues": nb_issues,
|
||||||
"nb_prs": nb_prs }
|
"nb_prs": nb_prs }
|
||||||
|
|
||||||
|
def testing_pr(self, app):
|
||||||
|
|
||||||
|
repo = app.repo.replace("https://github.com/", "")
|
||||||
|
owner = repo.split("/")[0]
|
||||||
|
j = self.request('repos/{}/pulls?head={}:testing&base=master'.format(repo,owner))
|
||||||
|
|
||||||
|
if len(j) == 0:
|
||||||
|
return None
|
||||||
|
else:
|
||||||
|
j = j[0]
|
||||||
|
|
||||||
|
return { "number": j["number"],
|
||||||
|
"created_at": datetime.datetime.strptime(j["created_at"], "%Y-%m-%dT%H:%M:%SZ"),
|
||||||
|
"updated_at": datetime.datetime.strptime(j["updated_at"], "%Y-%m-%dT%H:%M:%SZ"),
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
def commit(self, app, ref):
|
def commit(self, app, ref):
|
||||||
|
|
||||||
repo = app.repo.replace("https://github.com/", "")
|
repo = app.repo.replace("https://github.com/", "")
|
||||||
|
@ -203,6 +219,7 @@ class Github():
|
||||||
try:
|
try:
|
||||||
github_date = self.request('repos/{}/commits/{}'.format(repo, sha))["commit"]["author"]["date"]
|
github_date = self.request('repos/{}/commits/{}'.format(repo, sha))["commit"]["author"]["date"]
|
||||||
except:
|
except:
|
||||||
import pdb; pdb.set_trace()
|
print("Error parsing date...")
|
||||||
|
github_date = "1970-01-01T00:00:00Z"
|
||||||
parsed_date = datetime.datetime.strptime(github_date, "%Y-%m-%dT%H:%M:%SZ")
|
parsed_date = datetime.datetime.strptime(github_date, "%Y-%m-%dT%H:%M:%SZ")
|
||||||
return parsed_date
|
return parsed_date
|
||||||
|
|
|
@ -85,10 +85,10 @@
|
||||||
</p>
|
</p>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if app.testing_diff > 0 %}
|
{% if app.testing_pr %}
|
||||||
<p class="card-text text-info">
|
<p class="card-text text-info">
|
||||||
<span class="oi oi-fork" aria-hidden="true"></span>
|
<span class="oi oi-fork" aria-hidden="true"></span>
|
||||||
A testing branch exists for this app with +{{ app.testing_diff }} commits.
|
A testing PR is open for this app.
|
||||||
</p>
|
</p>
|
||||||
{% else %}
|
{% else %}
|
||||||
<p class="card-text text-muted">
|
<p class="card-text text-muted">
|
||||||
|
|
|
@ -100,7 +100,7 @@
|
||||||
title="Master commit is not up to date with {{ result.app.list.name }}.json !"></span>
|
title="Master commit is not up to date with {{ result.app.list.name }}.json !"></span>
|
||||||
-->
|
-->
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if result.app.testing_diff > 0 %}
|
{% if result.app.testing_pr %}
|
||||||
<span class="oi oi-fork text-info"
|
<span class="oi oi-fork text-info"
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
title="An active testing branch exists for this app."></span>
|
title="An active testing branch exists for this app."></span>
|
||||||
|
|
Loading…
Reference in a new issue