bp = Blueprint("github", __name__)
-from flask import redirect, url_for, request, flash, abort, render_template, jsonify
+from flask import redirect, url_for, request, flash, abort, render_template, jsonify, current_app
from flask_user import current_user, login_required
from sqlalchemy import func
from flask_github import GitHub
def start():
return github.authorize("", redirect_uri=abs_url_for("github.callback"))
+@bp.route("/github/view/")
+def view_permissions():
+ url = "https://github.com/settings/connections/applications/" + \
+ current_app.config["GITHUB_CLIENT_ID"]
+ return redirect(url)
+
@bp.route("/github/callback/")
@github.authorized_handler
def callback(oauth_token):
## Setting up
-### Github (automatic)
+### GitHub (automatic)
-1. Go to your package page.
+1. Go to your package's page.
2. Make sure that the repository URL is set to a Github repository.
Only github.com is supported.
-3. Go to "Create a release", and click "Setup webhook" at the top of the page.
+3. Go to "Releases" > "+", and click "Setup webhook" at the top of the create release
+ page.
If you do not see this, either the repository isn't using Github or you do
not have permission to use webhook releases (ie: you're not a Trusted Member).
4. Grant ContentDB the ability to manage Webhooks.
-5. Set the event to either "New tag" or "Push". New tag is highlight recommended.
+5. Set the event to either "New tag or Github Release" (highly recommended) or "Push".
N.B.: GitHub uses tags to power GitHub Releases, meaning that creating a webhook
- on "new tag" will sync GitHub and ContentDB releases.
+ on "New tag" will sync GitHub and ContentDB releases.
### GitHub (manual)
7. Set the events
* If you want a rolling release, choose "just the push event".
* Or if you want a stable release cycle based on tags,
- choose "Let me select" > Branch or tag creation.
+ choose "Let me select" > Branch or tag creation.
### GitLab (manual)
{{ render_submit_field(form.submit) }}
</form>
+
+ <p class="mt-4">
+ You will need admin access to the repository.
+ When setting up hooks on an organisation,
+ <a href="{{ url_for('github.view_permissions') }}">make sure that you have granted access</a>.
+ </p>
{% endblock %}
| <a href="{{ user.website_url }}" rel="nofollow">Website</a>
{% endif %}
+
{% if user == current_user %}
<br>
<small class="text-muted">
{% endif %}
</td>
</tr>
+
+ {% if user == current_user and user.github_username %}
+ <tr>
+ <td>Privacy:</td>
+ <td>
+ <a href="{{ url_for('github.view_permissions') }}">View ContentDB's GitHub Permissions</a>
+ </td>
+ </tr>
+ {% endif %}
+
{% if current_user.is_authenticated and current_user.rank.atLeast(current_user.rank.MODERATOR) %}
<tr>
<td>Admin</td>
</a>
{% endif %}
</td>
- </tr>
+ </tr>
<tr>
<td>Password:</td>
<td>