forked from pool/pagure
Accepting request 824337 from devel:tools:scm
- Update to 5.11.2 + Allow having a dedicated logging configuration for the git hooks + Increase logging to the pagure_auth logger + Make work pagure-admin ensure-project-hooks when the target link exists but is broken + Change the project icon when the project is mirrored from an external source + Allow a theme or a blueprint to inject custom buttons in the navigation bar. + Add API endpoint to get a pull-request comment + Omit breaking original comment format in reply on pull-requests + Let the milter announce when it reject an email based on its address + Don't Let the milter process the email we send. + Add a collaborator level to projects + Allow setting the default git branch when creating projects via the API + Allow creating mirrored project from the API + Add the possibility to set the default branch at project creation + Add API endpoint to set the default git branch and expose it in an existing endpoint + Adjust the example configuration for logging to a file + Allow project-less API token with the "modify_project" ACL to update watchers + Add a new API endpoint to retrieve a commit's metadata/info + Add a new API endpoint allowing to delete a project + Add support for customizing the new issue page + Introducing the boards feature + Add an API endpoint to view the content of a git repo + Port pagure's markdown extension to the new API + Multiple small fixes for the vagrant-based development environment + Use WhiteNoise to serve static assets for the Pagure web + Fix the title of the graph showing the evolution of the number of open tickets on a project + Do not assume there is a SMTP_STARTTLS configuration key set + Bring back JS library used for the heatmap + Show the ACL name in addition to the description when creating API tokens + Allow editing the URL a project is mirrored from + Add comments to the mirror service files for clarifying their purpose. + Add a dedicated logger for everything that is auth related + api: fix apidoc format on api_view_issues_history_detailed_stats Fixes web api doc view template issues + doc: Add a page documenting known Pagure instances + starttls support via SMTP_STARTTLS: provide additional documentation. + Add support for smtp server requiring starttls to work + Make the stats page use the new stats API endpoint - Drop patches included in this release + Patch: 0001-Make-the-stats-page-use-the-new-stats-API-endpoint.patch + Patch: 0001-Add-support-for-smtp-server-requiring-starttls-to-wo.patch + Patch: 0002-starttls-support-via-SMTP_STARTTLS-provide-additiona.patch + Patch: 0001-Do-not-assume-there-is-a-SMTP_STARTTLS-configuration.patch + Patch: 0001-Fix-repotype-spelling.patch + Patch: 0001-api-fix-apidoc-format-on-api_view_issues_history_det.patch + Patch: 0001-Allow-editing-the-URL-a-project-is-mirrored-from.patch + Patch: 0001-Show-the-ACL-name-in-addition-to-the-description-whe.patch + Patch: 0001-Bring-back-JS-library-used-for-the-heatmap.patch + Patch: 0001-Ensure-the-title-name-of-the-headers-are-strings.patch + Patch: 0001-Fix-the-title-of-the-graph-showing-the-evolution-of-.patch + Patch: 0001-Make-sure-authorized_keys-file-has-mode-600.patch + Patch: 0101-Use-WhiteNoise-to-serve-static-assets-for-the-Pagure.patch OBS-URL: https://build.opensuse.org/request/show/824337 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/pagure?expand=0&rev=17
This commit is contained in:
commit
e1bf9862d8
@ -1,77 +0,0 @@
|
||||
From 4196a3772693a79f1e5db12fa937bcee8280e248 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Yves Chibon <pingou@pingoured.fr>
|
||||
Date: Mon, 18 May 2020 15:57:05 +0200
|
||||
Subject: [PATCH 1/2] Add support for smtp server requiring starttls to work
|
||||
|
||||
Signed-off-by: Pierre-Yves Chibon <pingou@pingoured.fr>
|
||||
---
|
||||
doc/configuration.rst | 27 +++++++++++++++++++++++++++
|
||||
pagure/lib/notify.py | 14 ++++++++++++++
|
||||
2 files changed, 41 insertions(+)
|
||||
|
||||
diff --git a/doc/configuration.rst b/doc/configuration.rst
|
||||
index 41f29b96..25dee387 100644
|
||||
--- a/doc/configuration.rst
|
||||
+++ b/doc/configuration.rst
|
||||
@@ -961,6 +961,33 @@ should be secured over SSL.
|
||||
Defaults to: ``False``
|
||||
|
||||
|
||||
+SMTP_STARTTLS
|
||||
+^^^^^^^^^^^^^
|
||||
+
|
||||
+This configuration key specifies instructs pagure to starts connecting to
|
||||
+the SMTP server via a `starttls` command.
|
||||
+
|
||||
+Defaults to: ``False``
|
||||
+
|
||||
+
|
||||
+SMTP_KEYFILE
|
||||
+^^^^^^^^^^^^
|
||||
+
|
||||
+This configuration key allows to specify a key file to be used in the
|
||||
+`starttls` command when connecting to the smtp server.
|
||||
+
|
||||
+Defaults to: ``None``
|
||||
+
|
||||
+
|
||||
+SMTP_CERTFILE
|
||||
+^^^^^^^^^^^^
|
||||
+
|
||||
+This configuration key allows to specify a certificate file to be used in
|
||||
+the `starttls` command when connecting to the smtp server.
|
||||
+
|
||||
+Defaults to: ``None``
|
||||
+
|
||||
+
|
||||
SMTP_USERNAME
|
||||
^^^^^^^^^^^^^
|
||||
|
||||
diff --git a/pagure/lib/notify.py b/pagure/lib/notify.py
|
||||
index 7670ad15..2c4ee30f 100644
|
||||
--- a/pagure/lib/notify.py
|
||||
+++ b/pagure/lib/notify.py
|
||||
@@ -505,6 +505,20 @@ def send_email(
|
||||
pagure_config["SMTP_SERVER"],
|
||||
pagure_config["SMTP_PORT"],
|
||||
)
|
||||
+
|
||||
+ if pagure_config["SMTP_STARTTLS"]:
|
||||
+ context = ssl.create_default_context()
|
||||
+ keyfile = pagure_config.get("SMTP_KEYFILE") or None
|
||||
+ certfile = pagure_config.get("SMTP_CERTFILE") or None
|
||||
+ respcode, _ = smtp.starttls(
|
||||
+ keyfile=keyfile, certfile=certfile, context=context,
|
||||
+ )
|
||||
+ if respcode != 220:
|
||||
+ _log.warning(
|
||||
+ "The starttls command did not return the 220 "
|
||||
+ "response code expected."
|
||||
+ )
|
||||
+
|
||||
if (
|
||||
pagure_config["SMTP_USERNAME"]
|
||||
and pagure_config["SMTP_PASSWORD"]
|
||||
--
|
||||
2.26.1
|
||||
|
@ -1,206 +0,0 @@
|
||||
From c78ea50ecfb6cb9c2be7aa9eabedf1f5c6292e84 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Yves Chibon <pingou@pingoured.fr>
|
||||
Date: Sat, 30 May 2020 22:30:54 +0200
|
||||
Subject: [PATCH] Allow editing the URL a project is mirrored from
|
||||
|
||||
When a project is mirrored from a remote location to a local pagure
|
||||
instance, we so far had no way to edit this url, for example for
|
||||
when the upstream project changes location.
|
||||
With this commit we're able to fix this.
|
||||
|
||||
Fixes https://pagure.io/pagure/issue/4647
|
||||
|
||||
Signed-off-by: Pierre-Yves Chibon <pingou@pingoured.fr>
|
||||
---
|
||||
pagure/forms.py | 4 +
|
||||
pagure/templates/settings.html | 9 ++
|
||||
pagure/ui/repo.py | 2 +
|
||||
...test_pagure_flask_ui_repo_mirrored_from.py | 128 ++++++++++++++++++
|
||||
4 files changed, 143 insertions(+)
|
||||
create mode 100644 tests/test_pagure_flask_ui_repo_mirrored_from.py
|
||||
|
||||
diff --git a/pagure/forms.py b/pagure/forms.py
|
||||
index 228a0206..6daa8a81 100644
|
||||
--- a/pagure/forms.py
|
||||
+++ b/pagure/forms.py
|
||||
@@ -159,6 +159,10 @@ class ProjectFormSimplified(PagureForm):
|
||||
private = wtforms.BooleanField(
|
||||
"Private", [wtforms.validators.Optional()], false_values=FALSE_VALUES
|
||||
)
|
||||
+ mirrored_from = wtforms.StringField(
|
||||
+ "Mirrored from",
|
||||
+ [wtforms.validators.optional(), wtforms.validators.Length(max=255)],
|
||||
+ )
|
||||
|
||||
|
||||
class ProjectForm(ProjectFormSimplified):
|
||||
diff --git a/pagure/templates/settings.html b/pagure/templates/settings.html
|
||||
index a09d722d..55df03a0 100644
|
||||
--- a/pagure/templates/settings.html
|
||||
+++ b/pagure/templates/settings.html
|
||||
@@ -160,6 +160,15 @@
|
||||
<span class="c-indicator"></span>
|
||||
</fieldset>
|
||||
{% endif %}
|
||||
+ {% if repo.mirrored_from %}
|
||||
+ <fieldset class="form-group">
|
||||
+ <label for="tags">Mirrored from</label>
|
||||
+ <input class="form-control" name="mirrored_from" value="{{ repo.mirrored_from }}" />
|
||||
+ <small class="text-muted">
|
||||
+ The (public) url from which this repository is mirrored.
|
||||
+ </small>
|
||||
+ </fieldset>
|
||||
+ {% endif %}
|
||||
<button class="btn btn-primary" type="submit" title="Update description">
|
||||
Update
|
||||
</button>
|
||||
diff --git a/pagure/ui/repo.py b/pagure/ui/repo.py
|
||||
index 5b522b5a..040b2bc5 100644
|
||||
--- a/pagure/ui/repo.py
|
||||
+++ b/pagure/ui/repo.py
|
||||
@@ -1421,6 +1421,8 @@ def update_project(repo, username=None, namespace=None):
|
||||
repo.url = form.url.data.strip()
|
||||
if repo.private:
|
||||
repo.private = form.private.data
|
||||
+ if repo.mirrored_from:
|
||||
+ repo.mirrored_from = form.mirrored_from.data
|
||||
pagure.lib.query.update_tags(
|
||||
flask.g.session,
|
||||
repo,
|
||||
diff --git a/tests/test_pagure_flask_ui_repo_mirrored_from.py b/tests/test_pagure_flask_ui_repo_mirrored_from.py
|
||||
new file mode 100644
|
||||
index 00000000..2c33053a
|
||||
--- /dev/null
|
||||
+++ b/tests/test_pagure_flask_ui_repo_mirrored_from.py
|
||||
@@ -0,0 +1,128 @@
|
||||
+# -*- coding: utf-8 -*-
|
||||
+
|
||||
+"""
|
||||
+ (c) 2020 - Copyright Red Hat Inc
|
||||
+
|
||||
+ Authors:
|
||||
+ Pierre-Yves Chibon <pingou@pingoured.fr>
|
||||
+
|
||||
+"""
|
||||
+
|
||||
+from __future__ import unicode_literals, absolute_import
|
||||
+
|
||||
+import datetime
|
||||
+import os
|
||||
+import shutil
|
||||
+import sys
|
||||
+import tempfile
|
||||
+import time
|
||||
+import unittest
|
||||
+
|
||||
+import pygit2
|
||||
+import six
|
||||
+from mock import patch, MagicMock, ANY, call
|
||||
+
|
||||
+sys.path.insert(
|
||||
+ 0, os.path.join(os.path.dirname(os.path.abspath(__file__)), "..")
|
||||
+)
|
||||
+
|
||||
+import pagure.lib.git
|
||||
+import tests
|
||||
+
|
||||
+from pagure.lib.repo import PagureRepo
|
||||
+
|
||||
+
|
||||
+class PagureUiRepoMirroredFromTests(tests.Modeltests):
|
||||
+ """ Tests for pagure project that are mirrored from a remote location
|
||||
+ """
|
||||
+
|
||||
+ maxDiff = None
|
||||
+
|
||||
+ def setUp(self):
|
||||
+ """ Set up the environnment, ran before every tests. """
|
||||
+ super(PagureUiRepoMirroredFromTests, self).setUp()
|
||||
+
|
||||
+ tests.create_projects(self.session)
|
||||
+ tests.create_projects_git(os.path.join(self.path, "repos"), bare=True)
|
||||
+
|
||||
+ # Make the test project mirrored from elsewhere
|
||||
+ self.project = pagure.lib.query.get_authorized_project(
|
||||
+ self.session, "test"
|
||||
+ )
|
||||
+ self.project.mirrored_from = "https://example.com/foo/bar.git"
|
||||
+ self.session.add(self.project)
|
||||
+ self.session.commit()
|
||||
+
|
||||
+ def test_settings_shows(self):
|
||||
+ """ Ensure that the box to edit the mirrored from value shows up
|
||||
+ in the settings.
|
||||
+ """
|
||||
+ user = tests.FakeUser(username="pingou")
|
||||
+ with tests.user_set(self.app.application, user):
|
||||
+ output = self.app.get("/test/settings")
|
||||
+ self.assertEqual(output.status_code, 200)
|
||||
+ output_text = output.get_data(as_text=True)
|
||||
+ self.assertIn(
|
||||
+ '<input class="form-control" name="mirrored_from" '
|
||||
+ 'value="https://example.com/foo/bar.git" />',
|
||||
+ output_text,
|
||||
+ )
|
||||
+ self.assertIn(
|
||||
+ "The (public) url from which this repository is mirrored.",
|
||||
+ output_text,
|
||||
+ )
|
||||
+
|
||||
+ def test_settings_not_show(self):
|
||||
+ """ Ensure that the box to edit the mirrored from value does not
|
||||
+ show up in the settings when it shouldn't.
|
||||
+ """
|
||||
+ user = tests.FakeUser(username="pingou")
|
||||
+ with tests.user_set(self.app.application, user):
|
||||
+ output = self.app.get("/test2/settings")
|
||||
+ self.assertEqual(output.status_code, 200)
|
||||
+ output_text = output.get_data(as_text=True)
|
||||
+ self.assertNotIn(
|
||||
+ '<input class="form-control" name="mirrored_from" ',
|
||||
+ output_text,
|
||||
+ )
|
||||
+ self.assertNotIn(
|
||||
+ "The (public) url from which this repository is mirrored.",
|
||||
+ output_text,
|
||||
+ )
|
||||
+
|
||||
+ def test_edit_mirrored_from(self):
|
||||
+ """ Ensure that we can successfully edit the content of the
|
||||
+ mirrored_from field.
|
||||
+ """
|
||||
+ user = tests.FakeUser(username="pingou")
|
||||
+ with tests.user_set(self.app.application, user):
|
||||
+ output = self.app.get("/test/settings")
|
||||
+ self.assertEqual(output.status_code, 200)
|
||||
+ output_text = output.get_data(as_text=True)
|
||||
+ self.assertIn(
|
||||
+ '<input class="form-control" name="mirrored_from" '
|
||||
+ 'value="https://example.com/foo/bar.git" />',
|
||||
+ output_text,
|
||||
+ )
|
||||
+
|
||||
+ csrf_token = self.get_csrf(output=output)
|
||||
+
|
||||
+ data = {
|
||||
+ "csrf_token": csrf_token,
|
||||
+ "description": "test repo",
|
||||
+ "mirrored_from": "https://example2.com/bar.git",
|
||||
+ }
|
||||
+ output = self.app.post(
|
||||
+ "/test/update", data=data, follow_redirects=True
|
||||
+ )
|
||||
+ self.assertEqual(output.status_code, 200)
|
||||
+ output_text = output.get_data(as_text=True)
|
||||
+ self.assertIn(
|
||||
+ '<input class="form-control" name="mirrored_from" '
|
||||
+ 'value="https://example2.com/bar.git" />',
|
||||
+ output_text,
|
||||
+ )
|
||||
+
|
||||
+
|
||||
+if __name__ == "__main__":
|
||||
+ unittest.main(verbosity=2)
|
||||
--
|
||||
2.26.1
|
||||
|
File diff suppressed because one or more lines are too long
@ -1,30 +0,0 @@
|
||||
From a5a0e792e8491f416d3188c42861ba0c62e94a79 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Yves Chibon <pingou@pingoured.fr>
|
||||
Date: Wed, 3 Jun 2020 20:19:48 +0200
|
||||
Subject: [PATCH] Do not assume there is a SMTP_STARTTLS configuration key set
|
||||
|
||||
This is a new key that was introduced in 5.10.0 and that isn't set
|
||||
in the default_config. So we cannot assume it is defined and thus
|
||||
the code needs to not make this assumption either.
|
||||
|
||||
Signed-off-by: Pierre-Yves Chibon <pingou@pingoured.fr>
|
||||
---
|
||||
pagure/lib/notify.py | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/pagure/lib/notify.py b/pagure/lib/notify.py
|
||||
index 2c4ee30f..0c124db9 100644
|
||||
--- a/pagure/lib/notify.py
|
||||
+++ b/pagure/lib/notify.py
|
||||
@@ -506,7 +506,7 @@ def send_email(
|
||||
pagure_config["SMTP_PORT"],
|
||||
)
|
||||
|
||||
- if pagure_config["SMTP_STARTTLS"]:
|
||||
+ if pagure_config.get("SMTP_STARTTLS"):
|
||||
context = ssl.create_default_context()
|
||||
keyfile = pagure_config.get("SMTP_KEYFILE") or None
|
||||
certfile = pagure_config.get("SMTP_CERTFILE") or None
|
||||
--
|
||||
2.26.2
|
||||
|
@ -1,28 +0,0 @@
|
||||
From 8f8e201bf25e5ee1fd359ecf97eb41d09320bcb2 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Yves Chibon <pingou@pingoured.fr>
|
||||
Date: Wed, 3 Jun 2020 20:21:31 +0200
|
||||
Subject: [PATCH] Ensure the title/name of the headers are strings
|
||||
|
||||
Whether this is running py2 or py3, the headers should be strings.
|
||||
|
||||
Signed-off-by: Pierre-Yves Chibon <pingou@pingoured.fr>
|
||||
---
|
||||
pagure/ui/clone.py | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/pagure/ui/clone.py b/pagure/ui/clone.py
|
||||
index 61615cc8..33732a41 100644
|
||||
--- a/pagure/ui/clone.py
|
||||
+++ b/pagure/ui/clone.py
|
||||
@@ -205,7 +205,7 @@ def proxy_raw_git(project):
|
||||
break
|
||||
header = line.split(b": ", 1)
|
||||
header[0] = header[0].decode("utf-8")
|
||||
- headers[header[0].lower()] = header[1]
|
||||
+ headers[str(header[0].lower())] = header[1]
|
||||
|
||||
if len(headers) == 0:
|
||||
raise Exception("No response at all received")
|
||||
--
|
||||
2.26.2
|
||||
|
@ -1,30 +0,0 @@
|
||||
From 86c9a6f729968432b9f0dd785548fbe8065f6f4b Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Lubom=C3=ADr=20Sedl=C3=A1=C5=99?= <lsedlar@redhat.com>
|
||||
Date: Fri, 22 May 2020 11:49:10 +0200
|
||||
Subject: [PATCH] Fix repotype spelling
|
||||
|
||||
---
|
||||
pagure/internal/__init__.py | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/pagure/internal/__init__.py b/pagure/internal/__init__.py
|
||||
index 4f106e8b..3fa7edfa 100644
|
||||
--- a/pagure/internal/__init__.py
|
||||
+++ b/pagure/internal/__init__.py
|
||||
@@ -157,11 +157,11 @@ def check_ssh_access():
|
||||
return flask.jsonify({"access": False})
|
||||
_log.info("Checking ACLs on project: %s" % project.fullname)
|
||||
|
||||
- if repotype not in ["main", "doc"] and not pagure.utils.is_repo_user(
|
||||
+ if repotype not in ["main", "docs"] and not pagure.utils.is_repo_user(
|
||||
project, remoteuser
|
||||
):
|
||||
# Deploy keys are not allowed on ticket and PR repos but they are
|
||||
- # allowed for main and doc repos.
|
||||
+ # allowed for main and docs repos.
|
||||
_log.info("%s is not a contributor to this project" % remoteuser)
|
||||
return flask.jsonify({"access": False})
|
||||
|
||||
--
|
||||
2.26.1
|
||||
|
@ -1,27 +0,0 @@
|
||||
From 907ba17242490b767c21cec877dd3ad322526ef6 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Yves Chibon <pingou@pingoured.fr>
|
||||
Date: Wed, 3 Jun 2020 20:23:45 +0200
|
||||
Subject: [PATCH] Fix the title of the graph showing the evolution of the
|
||||
number of open tickets on a project
|
||||
|
||||
Signed-off-by: Pierre-Yves Chibon <pingou@pingoured.fr>
|
||||
---
|
||||
pagure/static/issues_stats.js | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/pagure/static/issues_stats.js b/pagure/static/issues_stats.js
|
||||
index 32b4c2a9..5e81a3ab 100644
|
||||
--- a/pagure/static/issues_stats.js
|
||||
+++ b/pagure/static/issues_stats.js
|
||||
@@ -70,7 +70,7 @@ function issues_history_stats_plot(data) {
|
||||
},
|
||||
title: {
|
||||
display: true,
|
||||
- text: 'Evolution of the number of commits over the last year'
|
||||
+ text: 'Evolution of the number of open tickets over the last year'
|
||||
}
|
||||
}
|
||||
});
|
||||
--
|
||||
2.26.2
|
||||
|
@ -1,30 +0,0 @@
|
||||
From 2691e9d47d45be9a72798bd84166d09b5c3c8d82 Mon Sep 17 00:00:00 2001
|
||||
From: Sergio Durigan Junior <sergiodj@sergiodj.net>
|
||||
Date: Sun, 7 Jun 2020 17:16:15 -0400
|
||||
Subject: [PATCH] Make sure authorized_keys file has mode 600.
|
||||
|
||||
Only the pagure user needs to be able to read and write the file.
|
||||
---
|
||||
pagure/lib/tasks.py | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/pagure/lib/tasks.py b/pagure/lib/tasks.py
|
||||
index eaef5cdb..73323ef7 100644
|
||||
--- a/pagure/lib/tasks.py
|
||||
+++ b/pagure/lib/tasks.py
|
||||
@@ -1270,6 +1270,7 @@ def add_key_to_authorized_keys(self, session, ssh_folder, username, sshkey):
|
||||
sshkey.strip(),
|
||||
)
|
||||
)
|
||||
+ os.chmod(fullpath, 0o600)
|
||||
|
||||
|
||||
@conn.task(queue=pagure_config.get("AUTHORIZED_KEYS_QUEUE", None), bind=True)
|
||||
@@ -1294,3 +1295,4 @@ def remove_key_from_authorized_keys(self, session, ssh_folder, sshkey):
|
||||
|
||||
with open(fullpath, "w") as stream:
|
||||
stream.write("\n".join(output))
|
||||
+ os.chmod(fullpath, 0o600)
|
||||
--
|
||||
2.26.2
|
||||
|
@ -1,38 +0,0 @@
|
||||
From 990a357f8edb2a25b791be249dd10c889422b353 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Yves Chibon <pingou@pingoured.fr>
|
||||
Date: Fri, 15 May 2020 14:19:30 +0200
|
||||
Subject: [PATCH] Make the stats page use the new stats API endpoint
|
||||
|
||||
We originally designed this code to use the existing API endpoint
|
||||
with an argument to say that it wants the detailed version of the
|
||||
stats. We later changed our mind and move the details to a new
|
||||
API endpoint, but apparently we forgot to update the UI to point
|
||||
to the new API endpoint (while all the JS code is compatible/expected
|
||||
this data).
|
||||
|
||||
Signed-off-by: Pierre-Yves Chibon <pingou@pingoured.fr>
|
||||
---
|
||||
pagure/templates/repo_stats.html | 5 ++---
|
||||
1 file changed, 2 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/pagure/templates/repo_stats.html b/pagure/templates/repo_stats.html
|
||||
index 0e92b674..1f67477c 100644
|
||||
--- a/pagure/templates/repo_stats.html
|
||||
+++ b/pagure/templates/repo_stats.html
|
||||
@@ -64,11 +64,10 @@ issues_history_stats_plot_call = function() {
|
||||
$("#commiter_list").hide();
|
||||
$(".commit_trend").hide();
|
||||
var _stats_url = "{{ url_for(
|
||||
- 'api_ns.api_view_issues_history_stats',
|
||||
+ 'api_ns.api_view_issues_history_detailed_stats',
|
||||
repo=g.repo.name,
|
||||
username=username,
|
||||
- namespace=g.repo.namespace,
|
||||
- detailed=True) }}";
|
||||
+ namespace=g.repo.namespace) }}";
|
||||
var _s = $("#data_stats_spinner");
|
||||
_s.html(
|
||||
"<img id='spinnergif' src='{{ url_for('static', filename='images/spinner.gif') }}?version={{ g.version}}'>"
|
||||
--
|
||||
2.26.1
|
||||
|
@ -1,33 +0,0 @@
|
||||
From 98d320cad34ed2defadeb4828a9d5d7690a06ffd Mon Sep 17 00:00:00 2001
|
||||
From: Pierre-Yves Chibon <pingou@pingoured.fr>
|
||||
Date: Sun, 31 May 2020 21:16:36 +0200
|
||||
Subject: [PATCH] Show the ACL name in addition to the description when
|
||||
creating API tokens
|
||||
|
||||
So in addition to the description of the ACL, we will now show the
|
||||
actual name of the ACL, which hopefully will help people when they
|
||||
meet documentation that says: create a token with the update_issue ACL.
|
||||
|
||||
Relates to https://pagure.io/pagure/issue/4765
|
||||
|
||||
Signed-off-by: Pierre-Yves Chibon <pingou@pingoured.fr>
|
||||
---
|
||||
pagure/templates/add_token.html | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/pagure/templates/add_token.html b/pagure/templates/add_token.html
|
||||
index 02f5a80a..bf8a571b 100644
|
||||
--- a/pagure/templates/add_token.html
|
||||
+++ b/pagure/templates/add_token.html
|
||||
@@ -44,7 +44,7 @@
|
||||
<label class="c-input c-checkbox">
|
||||
<input type="checkbox" name="acls" value="{{ acl.name }}">
|
||||
<span class="c-indicator"></span>
|
||||
- {{ acl.description }}
|
||||
+ {{ acl.description }} <span class="small">({{ acl.name }})</span>
|
||||
</label>
|
||||
</div>
|
||||
{% endfor %}
|
||||
--
|
||||
2.26.1
|
||||
|
@ -1,25 +0,0 @@
|
||||
From 656ef585dce90201f6e5e13f527284672a5fd7ee Mon Sep 17 00:00:00 2001
|
||||
From: Julen Landa Alustiza <jlanda@fedoraproject.org>
|
||||
Date: Wed, 27 May 2020 13:18:17 +0200
|
||||
Subject: [PATCH] api: fix apidoc format on
|
||||
api_view_issues_history_detailed_stats Fixes web api doc view template issues
|
||||
|
||||
---
|
||||
pagure/api/issue.py | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/pagure/api/issue.py b/pagure/api/issue.py
|
||||
index 99e3c7e6..3f9af2a6 100644
|
||||
--- a/pagure/api/issue.py
|
||||
+++ b/pagure/api/issue.py
|
||||
@@ -1568,6 +1568,7 @@ def api_view_issues_history_detailed_stats(
|
||||
^^^^^^^^^^^^^^^
|
||||
|
||||
::
|
||||
+
|
||||
{
|
||||
"stats": {
|
||||
"2020-03-26T19:21:51.348451": {
|
||||
--
|
||||
2.26.1
|
||||
|
@ -1,40 +0,0 @@
|
||||
From 27ab4efb3bfad27e036602e88c7d5de666c3d80b Mon Sep 17 00:00:00 2001
|
||||
From: midipix <writeonce@midipix.org>
|
||||
Date: Thu, 21 May 2020 15:09:30 +0000
|
||||
Subject: [PATCH 2/2] starttls support via SMTP_STARTTLS: provide additional
|
||||
documentation.
|
||||
|
||||
---
|
||||
doc/configuration.rst | 9 +++++++++
|
||||
1 file changed, 9 insertions(+)
|
||||
|
||||
diff --git a/doc/configuration.rst b/doc/configuration.rst
|
||||
index 25dee387..942aeb83 100644
|
||||
--- a/doc/configuration.rst
|
||||
+++ b/doc/configuration.rst
|
||||
@@ -938,6 +938,8 @@ sending emails.
|
||||
|
||||
Defaults to: ``localhost``.
|
||||
|
||||
+See also the SMTP_STARTTLS section.
|
||||
+
|
||||
|
||||
SMTP_PORT
|
||||
^^^^^^^^^
|
||||
@@ -967,6 +969,13 @@ SMTP_STARTTLS
|
||||
This configuration key specifies instructs pagure to starts connecting to
|
||||
the SMTP server via a `starttls` command.
|
||||
|
||||
+When enabling STARTTLS in conjunction with a local smtp server, you should
|
||||
+replace ``localhost`` with a host name that is included in the server's
|
||||
+certificate. If the server only relays messages originating from ``localhost``,
|
||||
+then you should also ensure that the above host name resolves to the same
|
||||
+tcp address as ``localhost``, for instance by adding an appropriate record
|
||||
+to */etc/hosts*.
|
||||
+
|
||||
Defaults to: ``False``
|
||||
|
||||
|
||||
--
|
||||
2.26.1
|
||||
|
@ -1,179 +0,0 @@
|
||||
From 89f18ee38de1e6cb3ac482f865e6352ed340d763 Mon Sep 17 00:00:00 2001
|
||||
From: Neal Gompa <ngompa13@gmail.com>
|
||||
Date: Sun, 31 May 2020 11:56:38 -0400
|
||||
Subject: [PATCH] Use WhiteNoise to serve static assets for the Pagure web
|
||||
interface
|
||||
|
||||
In order to make it easier to run Pagure in a containerized environment,
|
||||
the web frontend needs to be capable of serving all of the frontend static
|
||||
files. This change introduces WhiteNoise as a dependency that would enable
|
||||
the Flask application itself to serve the static assets correctly.
|
||||
|
||||
This makes it possible to run a Pagure server without Apache or Nginx at all
|
||||
in a containerized environment for all of the main functions.
|
||||
|
||||
Note that the releases folder is still not served through WhiteNoise, and
|
||||
deployments that have uploading releases enabled will need something to
|
||||
serve them.
|
||||
|
||||
Signed-off-by: Neal Gompa <ngompa13@gmail.com>
|
||||
---
|
||||
files/pagure-apache-httpd.conf | 3 ---
|
||||
files/pagure-nginx.conf | 9 ---------
|
||||
files/pagure.spec | 13 ++-----------
|
||||
pagure/docs_server.py | 9 +++++++++
|
||||
pagure/flask_app.py | 7 +++++++
|
||||
requirements.txt | 1 +
|
||||
6 files changed, 19 insertions(+), 23 deletions(-)
|
||||
|
||||
diff --git a/files/pagure-apache-httpd.conf b/files/pagure-apache-httpd.conf
|
||||
index cf61e7f4..5724deb4 100644
|
||||
--- a/files/pagure-apache-httpd.conf
|
||||
+++ b/files/pagure-apache-httpd.conf
|
||||
@@ -33,8 +33,6 @@
|
||||
#SSLCertificateChainFile /etc/pki/tls/....intermediate.crt
|
||||
#SSLCertificateKeyFile /etc/pki/tls/....key
|
||||
|
||||
- #Alias /static /usr/lib/pythonX.Y/site-packages/pagure/static/
|
||||
-
|
||||
#<Location />
|
||||
#WSGIProcessGroup paguredocs
|
||||
#<IfModule mod_authz_core.c>
|
||||
@@ -64,7 +62,6 @@
|
||||
#SSLCertificateChainFile /etc/pki/tls/....intermediate.crt
|
||||
#SSLCertificateKeyFile /etc/pki/tls/....key
|
||||
|
||||
- #Alias /static /usr/lib/pythonX.Y/site-packages/pagure/static/
|
||||
#Alias /releases /var/www/releases
|
||||
|
||||
## Section used to support cloning git repo over http (https in this case)
|
||||
diff --git a/files/pagure-nginx.conf b/files/pagure-nginx.conf
|
||||
index fe3ff832..a5d196a6 100644
|
||||
--- a/files/pagure-nginx.conf
|
||||
+++ b/files/pagure-nginx.conf
|
||||
@@ -27,11 +27,6 @@
|
||||
#try_files $uri @pagure_docs;
|
||||
#}
|
||||
|
||||
- #location /static {
|
||||
- #alias /usr/lib/pythonX.Y/site-packages/pagure/static/;
|
||||
- #try_files $uri $uri/;
|
||||
- #}
|
||||
-
|
||||
#}
|
||||
|
||||
#server {
|
||||
@@ -63,10 +58,6 @@
|
||||
#try_files $uri @pagure;
|
||||
#}
|
||||
|
||||
- #location /static {
|
||||
- #alias /usr/lib/pythonX.Y/site-packages/pagure/static/;
|
||||
- #}
|
||||
-
|
||||
#location /releases {
|
||||
#alias /var/www/releases/;
|
||||
#autoindex on;
|
||||
diff --git a/files/pagure.spec b/files/pagure.spec
|
||||
index 5c084436..24fd5b37 100644
|
||||
--- a/files/pagure.spec
|
||||
+++ b/files/pagure.spec
|
||||
@@ -75,6 +75,7 @@ Requires: python%{python_pkgversion}-requests
|
||||
Requires: python%{python_pkgversion}-six
|
||||
Requires: python%{python_pkgversion}-sqlalchemy >= 0.8
|
||||
Requires: python%{python_pkgversion}-straight-plugin
|
||||
+Requires: python%{python_pkgversion}-whitenoise
|
||||
Requires: python%{python_pkgversion}-wtforms
|
||||
%endif
|
||||
|
||||
@@ -365,22 +366,12 @@ sed -e "s|#!/usr/bin/env python|#!%{__python}|" -i \
|
||||
# Switch interpreter for systemd units
|
||||
sed -e "s|/usr/bin/python|%{__python}|g" -i $RPM_BUILD_ROOT/%{_unitdir}/*.service
|
||||
|
||||
-%if 0%{?rhel} && 0%{?rhel} < 8
|
||||
-# Change to correct static file path for apache httpd and nginx
|
||||
-sed -e "s/pythonX.Y/python%{python2_version}/g" -i \
|
||||
- $RPM_BUILD_ROOT/%{_sysconfdir}/httpd/conf.d/pagure.conf \
|
||||
- $RPM_BUILD_ROOT/%{_sysconfdir}/nginx/conf.d/pagure.conf
|
||||
-%else
|
||||
+%if ! (0%{?rhel} && 0%{?rhel} < 8)
|
||||
# Switch all systemd units to use the correct celery
|
||||
sed -e "s|/usr/bin/celery|/usr/bin/celery-3|g" -i $RPM_BUILD_ROOT/%{_unitdir}/*.service
|
||||
|
||||
# Switch all systemd units to use the correct gunicorn
|
||||
sed -e "s|/usr/bin/gunicorn|/usr/bin/gunicorn-3|g" -i $RPM_BUILD_ROOT/%{_unitdir}/*.service
|
||||
-
|
||||
-# Change to correct static file path for apache httpd and nginx
|
||||
-sed -e "s/pythonX.Y/python%{python3_version}/g" -i \
|
||||
- $RPM_BUILD_ROOT/%{_sysconfdir}/httpd/conf.d/pagure.conf \
|
||||
- $RPM_BUILD_ROOT/%{_sysconfdir}/nginx/conf.d/pagure.conf
|
||||
%endif
|
||||
|
||||
# Make log directories
|
||||
diff --git a/pagure/docs_server.py b/pagure/docs_server.py
|
||||
index fd7b2778..dc5e297b 100644
|
||||
--- a/pagure/docs_server.py
|
||||
+++ b/pagure/docs_server.py
|
||||
@@ -17,6 +17,7 @@ import flask
|
||||
import pygit2
|
||||
|
||||
from binaryornot.helpers import is_binary_string
|
||||
+from whitenoise import WhiteNoise
|
||||
|
||||
import pagure.config
|
||||
import pagure.doc_utils
|
||||
@@ -29,6 +30,14 @@ import pagure.forms
|
||||
# Create the application.
|
||||
APP = flask.Flask(__name__)
|
||||
|
||||
+# Setup WhiteNoise for serving static files
|
||||
+here = os.path.abspath(
|
||||
+ os.path.join(os.path.dirname(os.path.abspath(__file__)))
|
||||
+)
|
||||
+APP.wsgi_app = WhiteNoise(
|
||||
+ APP.wsgi_app, root=os.path.join(here, "static"), prefix="/static"
|
||||
+)
|
||||
+
|
||||
# set up FAS
|
||||
APP.config = pagure.config.reload_config()
|
||||
|
||||
diff --git a/pagure/flask_app.py b/pagure/flask_app.py
|
||||
index 7d533b63..34eb4783 100644
|
||||
--- a/pagure/flask_app.py
|
||||
+++ b/pagure/flask_app.py
|
||||
@@ -21,6 +21,8 @@ import warnings
|
||||
import flask
|
||||
import pygit2
|
||||
|
||||
+from whitenoise import WhiteNoise
|
||||
+
|
||||
import pagure.doc_utils
|
||||
import pagure.exceptions
|
||||
import pagure.forms
|
||||
@@ -188,6 +190,11 @@ def create_app(config=None):
|
||||
app.jinja_loader = jinja2.ChoiceLoader(templ_loaders)
|
||||
app.register_blueprint(themeblueprint)
|
||||
|
||||
+ # Setup WhiteNoise for serving static files
|
||||
+ app.wsgi_app = WhiteNoise(
|
||||
+ app.wsgi_app, root=os.path.join(here, "static"), prefix="/static"
|
||||
+ )
|
||||
+
|
||||
app.before_request(set_request)
|
||||
app.after_request(after_request)
|
||||
app.teardown_request(end_request)
|
||||
diff --git a/requirements.txt b/requirements.txt
|
||||
index dcde36ce..fa538676 100644
|
||||
--- a/requirements.txt
|
||||
+++ b/requirements.txt
|
||||
@@ -33,6 +33,7 @@ sqlalchemy >= 0.8
|
||||
# 1.4.0 is broken, 1.4.0-post-1 works but gives odd results on newer setuptools
|
||||
# the latest version 1.5.0 is also known to work
|
||||
straight.plugin
|
||||
+whitenoise
|
||||
wtforms
|
||||
|
||||
# Required only for the `oidc` authentication backend
|
||||
--
|
||||
2.26.2
|
||||
|
@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:2a2b60e85e35f19a4260aa049aa7508059604de40a07acc1bdb7a421e882542c
|
||||
size 21610760
|
3
pagure-5.11.2.tar.gz
Normal file
3
pagure-5.11.2.tar.gz
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:7a53d0abb3467fbd087bff0908baf23b2fed8dd65954e8fa14a7c355ba83eac3
|
||||
size 21878079
|
@ -1,3 +1,62 @@
|
||||
-------------------------------------------------------------------
|
||||
Tue Aug 4 13:00:36 UTC 2020 - Neal Gompa <ngompa13@gmail.com>
|
||||
|
||||
- Update to 5.11.2
|
||||
+ Allow having a dedicated logging configuration for the git hooks
|
||||
+ Increase logging to the pagure_auth logger
|
||||
+ Make work pagure-admin ensure-project-hooks when the target link exists but is
|
||||
broken
|
||||
+ Change the project icon when the project is mirrored from an external source
|
||||
+ Allow a theme or a blueprint to inject custom buttons in the navigation bar.
|
||||
+ Add API endpoint to get a pull-request comment
|
||||
+ Omit breaking original comment format in reply on pull-requests
|
||||
+ Let the milter announce when it reject an email based on its address
|
||||
+ Don't Let the milter process the email we send.
|
||||
+ Add a collaborator level to projects
|
||||
+ Allow setting the default git branch when creating projects via the API
|
||||
+ Allow creating mirrored project from the API
|
||||
+ Add the possibility to set the default branch at project creation
|
||||
+ Add API endpoint to set the default git branch and expose it in an existing
|
||||
endpoint
|
||||
+ Adjust the example configuration for logging to a file
|
||||
+ Allow project-less API token with the "modify_project" ACL to update watchers
|
||||
+ Add a new API endpoint to retrieve a commit's metadata/info
|
||||
+ Add a new API endpoint allowing to delete a project
|
||||
+ Add support for customizing the new issue page
|
||||
+ Introducing the boards feature
|
||||
+ Add an API endpoint to view the content of a git repo
|
||||
+ Port pagure's markdown extension to the new API
|
||||
+ Multiple small fixes for the vagrant-based development environment
|
||||
+ Use WhiteNoise to serve static assets for the Pagure web
|
||||
+ Fix the title of the graph showing the evolution of the number of open tickets
|
||||
on a project
|
||||
+ Do not assume there is a SMTP_STARTTLS configuration key set
|
||||
+ Bring back JS library used for the heatmap
|
||||
+ Show the ACL name in addition to the description when creating API tokens
|
||||
+ Allow editing the URL a project is mirrored from
|
||||
+ Add comments to the mirror service files for clarifying their purpose.
|
||||
+ Add a dedicated logger for everything that is auth related
|
||||
+ api: fix apidoc format on api_view_issues_history_detailed_stats Fixes web
|
||||
api doc view template issues
|
||||
+ doc: Add a page documenting known Pagure instances
|
||||
+ starttls support via SMTP_STARTTLS: provide additional documentation.
|
||||
+ Add support for smtp server requiring starttls to work
|
||||
+ Make the stats page use the new stats API endpoint
|
||||
- Drop patches included in this release
|
||||
+ Patch: 0001-Make-the-stats-page-use-the-new-stats-API-endpoint.patch
|
||||
+ Patch: 0001-Add-support-for-smtp-server-requiring-starttls-to-wo.patch
|
||||
+ Patch: 0002-starttls-support-via-SMTP_STARTTLS-provide-additiona.patch
|
||||
+ Patch: 0001-Do-not-assume-there-is-a-SMTP_STARTTLS-configuration.patch
|
||||
+ Patch: 0001-Fix-repotype-spelling.patch
|
||||
+ Patch: 0001-api-fix-apidoc-format-on-api_view_issues_history_det.patch
|
||||
+ Patch: 0001-Allow-editing-the-URL-a-project-is-mirrored-from.patch
|
||||
+ Patch: 0001-Show-the-ACL-name-in-addition-to-the-description-whe.patch
|
||||
+ Patch: 0001-Bring-back-JS-library-used-for-the-heatmap.patch
|
||||
+ Patch: 0001-Ensure-the-title-name-of-the-headers-are-strings.patch
|
||||
+ Patch: 0001-Fix-the-title-of-the-graph-showing-the-evolution-of-.patch
|
||||
+ Patch: 0001-Make-sure-authorized_keys-file-has-mode-600.patch
|
||||
+ Patch: 0101-Use-WhiteNoise-to-serve-static-assets-for-the-Pagure.patch
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Sun Jun 21 12:57:17 UTC 2020 - Neal Gompa <ngompa13@gmail.com>
|
||||
|
||||
|
36
pagure.spec
36
pagure.spec
@ -23,7 +23,7 @@
|
||||
|
||||
|
||||
Name: pagure
|
||||
Version: 5.10.0
|
||||
Version: 5.11.2
|
||||
Release: 0
|
||||
Summary: A git-centered forge
|
||||
Group: Development/Tools/Version Control
|
||||
@ -41,35 +41,6 @@ Source1: https://raw.githubusercontent.com/fedora-infra/python-fedora
|
||||
Source10: pagure-README.SUSE
|
||||
|
||||
|
||||
# Backports from upstream
|
||||
## Backport fix to make stats page work
|
||||
Patch0001: 0001-Make-the-stats-page-use-the-new-stats-API-endpoint.patch
|
||||
## Backport support for STARTTLS support for SMTP servers
|
||||
Patch0002: 0001-Add-support-for-smtp-server-requiring-starttls-to-wo.patch
|
||||
Patch0003: 0002-starttls-support-via-SMTP_STARTTLS-provide-additiona.patch
|
||||
Patch0004: 0001-Do-not-assume-there-is-a-SMTP_STARTTLS-configuration.patch
|
||||
## Fix access grants for docs repo
|
||||
Patch0005: 0001-Fix-repotype-spelling.patch
|
||||
## Fix visual bug on api documentation formatting
|
||||
Patch0006: 0001-api-fix-apidoc-format-on-api_view_issues_history_det.patch
|
||||
## Add setting for changing pull mirror source for projects
|
||||
Patch0007: 0001-Allow-editing-the-URL-a-project-is-mirrored-from.patch
|
||||
## Add descriptions to API scopes listed at API token creation page
|
||||
Patch0008: 0001-Show-the-ACL-name-in-addition-to-the-description-whe.patch
|
||||
## Restore heatmap JS library
|
||||
Patch0009: 0001-Bring-back-JS-library-used-for-the-heatmap.patch
|
||||
## Ensure header keys are rendered as strings
|
||||
Patch0010: 0001-Ensure-the-title-name-of-the-headers-are-strings.patch
|
||||
## Fix title of burndown graph
|
||||
Patch0011: 0001-Fix-the-title-of-the-graph-showing-the-evolution-of-.patch
|
||||
## Fix permissions for generated authorized_keys file
|
||||
Patch0012: 0001-Make-sure-authorized_keys-file-has-mode-600.patch
|
||||
|
||||
# Changes proposed upstream
|
||||
## Use whitenoise to render static assets
|
||||
## From: https://pagure.io/pagure/pull-request/4885
|
||||
Patch0101: 0101-Use-WhiteNoise-to-serve-static-assets-for-the-Pagure.patch
|
||||
|
||||
# SUSE-specific fixes
|
||||
## Change the defaults in the example config to match packaging
|
||||
Patch1000: pagure-5.0-default-example-cfg.patch
|
||||
@ -659,6 +630,7 @@ echo "See %{_docdir}/%{name}/README.SUSE to continue"
|
||||
%attr(-,git,git) %config(noreplace) /srv/gitolite/.gitolite/conf/gitolite.conf
|
||||
%attr(-,git,git) %config(noreplace) /srv/gitolite/.gitolite.rc
|
||||
%attr(-,git,git) %dir /srv/www/pagure-releases
|
||||
%attr(-,git,git) %dir %{_localstatedir}/log/pagure
|
||||
|
||||
|
||||
%files web-apache-httpd
|
||||
@ -674,8 +646,8 @@ echo "See %{_docdir}/%{name}/README.SUSE to continue"
|
||||
%config(noreplace) %{_sysconfdir}/nginx/vhosts.d/pagure.conf
|
||||
%{_unitdir}/pagure_web.service
|
||||
%{_unitdir}/pagure_docs_web.service
|
||||
%attr(-,git,git) %dir %{_localstatedir}/log/pagure
|
||||
%ghost %{_localstatedir}/log/pagure/*.log
|
||||
%ghost %{_localstatedir}/log/pagure/access_*.log
|
||||
%ghost %{_localstatedir}/log/pagure/error_*.log
|
||||
|
||||
|
||||
%files theme-upstream
|
||||
|
Loading…
x
Reference in New Issue
Block a user