Skip to content

Commit d8e4afb

Browse files
committed
pygameweb_github_releases cmd line tool for syncing releases.
1 parent 8ae85f2 commit d8e4afb

File tree

3 files changed

+32
-7
lines changed

3 files changed

+32
-7
lines changed

pygameweb/project/gh_releases.py

Lines changed: 27 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,34 @@
88
from pygameweb.project.models import Project, Release
99
from pygameweb.config import Config
1010

11+
def sync_github_releases():
12+
""" to the pygame website releases.
13+
"""
14+
from pygameweb.config import Config
15+
from sqlalchemy import create_engine
16+
from sqlalchemy.orm import sessionmaker
17+
engine = create_engine(Config.SQLALCHEMY_DATABASE_URI)
18+
19+
a_connection = engine.connect()
20+
a_transaction = a_connection.begin()
21+
session = sessionmaker(bind=a_connection)()
22+
23+
projects = (session
24+
.query(Project)
25+
.filter(Project.github_repo.isnot(None))
26+
)
27+
for project in projects:
28+
sync_project(session, project)
29+
30+
session.commit()
31+
a_transaction.commit()
32+
33+
1134
def sync_project(session, project):
1235
if not project.github_repo:
1336
return
37+
if project.user is not None and project.user.disabled:
38+
return
1439
gh_releases = get_gh_releases_feed(project)
1540
releases = project.releases
1641

@@ -80,13 +105,9 @@ def release_from_gh(session, project, gh_release_atom, gh_release_api):
80105
srcuri=srcuri,
81106
winuri=winuri,
82107
macuri=macuri,
83-
version=gh_release_atom['title']
108+
version=gh_release_atom['title'],
109+
project=project
84110
)
85-
86-
project = (session
87-
.query(Project)
88-
.filter(Project.title == 'title')
89-
.first())
90111
return release
91112

92113

setup.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,8 @@ def get_requirements():
8080
'pygameweb.tasks.worker:work',
8181
'pygameweb_release_version_correct='
8282
'pygameweb.builds.update_version_from_git:release_version_correct',
83+
'pygameweb_github_releases='
84+
'pygameweb.project.gh_releases:sync_github_releases',
8385
],
8486
},
8587
)

tests/functional/pygameweb/project/test_gh_releases.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ def test_releases_to_sync_update():
6868

6969
#TODO: test a draft release.
7070
#TODO: test sync_project deletes and updates releases properly.
71-
71+
#TODO: mock out real gh request.
7272

7373

7474
def test_get_repo_from_url():
@@ -373,6 +373,8 @@ def test_sync_project(session, project):
373373
sync_project(session, project)
374374

375375

376+
#TODO: test that for disabled users it does not update the releases.
377+
376378
def test_release_from_gh(session, project, gh_release_atom, gh_release_api):
377379
"""
378380
"""

0 commit comments

Comments
 (0)