Repository :
http://git.fedorahosted.org/cgit/copr.git
On branch : master
---------------------------------------------------------------
commit 6a5522605574760615a77ad5f54a1d0ee46eae96
Author: clime <clime(a)redhat.com>
Date: Wed Feb 17 09:43:46 2016 +0100
[frontend][dist-git] PyPI builds - finished all functionality without autorebuilds
---------------------------------------------------------------
backend/backend/actions.py | 3 -
backend/backend/mockremote/builder.py | 2 +-
dist-git/dist_git/dist_git_importer.py | 3 +-
frontend/coprs_frontend/coprs/filters.py | 1 +
frontend/coprs_frontend/coprs/forms.py | 4 ++
.../coprs/static/css/custom-styles.css | 23 +++++++++++
.../templates/coprs/detail/_builds_forms.html | 17 +++++++-
.../templates/coprs/detail/_describe_source.html | 7 +++
.../templates/coprs/detail/_package_forms.html | 42 ++++++++++++++++++++
.../coprs/templates/coprs/detail/add_build.html | 2 +-
.../templates/coprs/detail/add_build/pypi.html | 2 +-
.../coprs/templates/coprs/detail/add_package.html | 7 +++-
.../coprs/templates/coprs/detail/package_edit.html | 7 +++-
.../coprs_frontend/coprs/templates/layout.html | 1 +
.../coprs/views/coprs_ns/coprs_packages.py | 20 +++++++--
15 files changed, 126 insertions(+), 15 deletions(-)
diff --git a/backend/backend/actions.py b/backend/backend/actions.py
index 058721e..8048c15 100644
--- a/backend/backend/actions.py
+++ b/backend/backend/actions.py
@@ -246,9 +246,6 @@ class Action(object):
destdir = os.path.join(chrootdir, build)
self.log.debug("Copy directory: {} as {}".format(srcdir,
destdir))
shutil.copytree(srcdir, destdir)
-
- with open(os.path.join(destdir, "build.info"),
"a") as f:
-
f.write("\nfrom_chroot={}".format(data["rawhide_chroot"]))
except:
result.result = ActionResult.FAILURE
diff --git a/backend/backend/mockremote/builder.py
b/backend/backend/mockremote/builder.py
index 41a594a..934adc9 100644
--- a/backend/backend/mockremote/builder.py
+++ b/backend/backend/mockremote/builder.py
@@ -187,7 +187,7 @@ class Builder(object):
def download_job_pkg_to_builder(self):
repo_url = "{}/{}.git".format(self.opts.dist_git_url,
self.job.git_repo)
self.log.info("Cloning Dist Git repo {}, branch {}, hash {}".format(
- self.job.git_repo, self.job.git_branch, self.job.git_hash))
+ self.job.git_repo, self.job.git_hash, self.job.git_branch))
results = self._run_ansible(
"rm -rf /tmp/build_package_repo && "
"mkdir /tmp/build_package_repo && "
diff --git a/dist-git/dist_git/dist_git_importer.py
b/dist-git/dist_git/dist_git_importer.py
index eca9c29..58d6b7e 100755
--- a/dist-git/dist_git/dist_git_importer.py
+++ b/dist-git/dist_git/dist_git_importer.py
@@ -337,7 +337,7 @@ class PyPIProvider(SrpmBuilderProvider):
if self.task.pypi_package_version:
cmd += ['-v', self.task.pypi_package_version]
- log.info(cmd)
+ log.info(' '.join(cmd))
try:
proc = Popen(cmd, stdout=PIPE, stderr=PIPE)
@@ -349,6 +349,7 @@ class PyPIProvider(SrpmBuilderProvider):
log.error(error)
raise PyPIException(FailTypeEnum("srpm_build_error")) # pass error
message somehow?
+ log.info(output)
self.copy()
diff --git a/frontend/coprs_frontend/coprs/filters.py
b/frontend/coprs_frontend/coprs/filters.py
index ffe4599..dbab38a 100644
--- a/frontend/coprs_frontend/coprs/filters.py
+++ b/frontend/coprs_frontend/coprs/filters.py
@@ -174,6 +174,7 @@ def build_source_description(state):
"srpm_upload": "SRPM file upload",
"git_and_tito": "Tito build from a Git repository",
"mock_scm": "Mock build from a SCM repository",
+ "pypi": "Build from PyPI",
}
return description_map.get(state, "")
diff --git a/frontend/coprs_frontend/coprs/forms.py
b/frontend/coprs_frontend/coprs/forms.py
index bd87e74..6a0eeea 100644
--- a/frontend/coprs_frontend/coprs/forms.py
+++ b/frontend/coprs_frontend/coprs/forms.py
@@ -374,6 +374,10 @@ class PackageFormMock(BasePackageForm):
class PackageFormPyPI(BasePackageForm):
+ source_type = wtforms.HiddenField(
+ "Source Type",
+ validators=[wtforms.validators.AnyOf(["pypi"])])
+
package_version = wtforms.StringField(
"Package version",
validators=[
diff --git a/frontend/coprs_frontend/coprs/static/css/custom-styles.css
b/frontend/coprs_frontend/coprs/static/css/custom-styles.css
new file mode 100644
index 0000000..9b75599
--- /dev/null
+++ b/frontend/coprs_frontend/coprs/static/css/custom-styles.css
@@ -0,0 +1,23 @@
+div.pypi-python-version {
+ cursor: default;
+}
+
+div.pypi-python-version input {
+ margin-bottom: -1px;
+ vertical-align:middle;
+}
+
+div.pypi-python-version label {
+ margin-bottom: -5px;
+ vertical-align:middle;
+}
+
+div.anitya-rebuild input {
+ margin-bottom: -1px;
+ vertical-align:middle;
+}
+
+div.anitya-rebuild label {
+ margin-bottom: -5px;
+ vertical-align:middle;
+}
diff --git a/frontend/coprs_frontend/coprs/templates/coprs/detail/_builds_forms.html
b/frontend/coprs_frontend/coprs/templates/coprs/detail/_builds_forms.html
index 8011eeb..1b8d46c 100644
--- a/frontend/coprs_frontend/coprs/templates/coprs/detail/_builds_forms.html
+++ b/frontend/coprs_frontend/coprs/templates/coprs/detail/_builds_forms.html
@@ -190,8 +190,21 @@
{{ source_description('This method uses <a
href="https://github.com/fedora-python/pyp2rpm">pyp2rpm</... to create
the RPM for you automatically from PyPI - the Python Package Index. Please provide the
package name.')}}
{{ render_field(form.package_name, placeholder="Package name in the Python
Package Index.") }}
- {{ render_field(form.package_version, placeholder="Optional - Version of the
package") }}
- {{ render_field(form.python_version, placeholder="Base python version that you
want to build for") }}
+ {{ render_field(form.package_version, placeholder="Optional - Version of the
package PyPI") }}
+
+ <div class="form-group">
+ <label class="col-sm-2 control-label">
+ <label for="python_version">Base Python version</label>:
+ </label>
+ <div class="col-sm-10 pypi-python-version">
+ <input id="python_version-0" name="python_version"
value="2" type="radio" {% if form.python_version.data == '2'
%}checked="checked"{% endif %}>
+ <label
for="python_version-0">2</label>
+ <input id="python_version-1" name="python_version"
value="3" type="radio" {% if form.python_version.data == '3'
%}checked="checked"{% endif %}>
+ <label for="python_version-1">3</label>
+ </div>
+ </div>
+
+ <input type="hidden" name="source_type" value="pypi"
/>
{{ copr_build_form_end(form, view, copr) }}
{% endmacro %}
diff --git a/frontend/coprs_frontend/coprs/templates/coprs/detail/_describe_source.html
b/frontend/coprs_frontend/coprs/templates/coprs/detail/_describe_source.html
index 9c4bc7c..9d4ce44 100644
--- a/frontend/coprs_frontend/coprs/templates/coprs/detail/_describe_source.html
+++ b/frontend/coprs_frontend/coprs/templates/coprs/detail/_describe_source.html
@@ -37,6 +37,13 @@
<dt>Path to .spec file:</dt>
<dd>{{ build.source_json_dict["spec"] }}</dd>
+
+ {% elif build.source_type_text == "pypi" %}
+ <dt>Package name</dt>
+ <dd>{{ build.source_json_dict["package_name"] }}</dd>
+
+ <dt>Base python version</dt>
+ <dd>{{ build.source_json_dict["python_version"] }}</dd>
{% endif %}
{% endmacro %}
diff --git a/frontend/coprs_frontend/coprs/templates/coprs/detail/_package_forms.html
b/frontend/coprs_frontend/coprs/templates/coprs/detail/_package_forms.html
index 144ddeb..ca3d4dd 100644
--- a/frontend/coprs_frontend/coprs/templates/coprs/detail/_package_forms.html
+++ b/frontend/coprs_frontend/coprs/templates/coprs/detail/_package_forms.html
@@ -66,3 +66,45 @@
{{ copr_package_form_end(form, package, 'mock_scm') }}
{% endmacro %}
+
+
+{% macro copr_package_form_pypi(form, view, copr, package) %}
+ {{ render_form_errors(form) }}
+
+ {% if not package.name %} {# Add package #}
+ <form class="form-horizontal" action="{{ copr_url(view, copr)
}}" method="post" enctype="multipart/form-data">
+ {{ render_field(form.package_name) }}
+ {% else %} {# Edit package #}
+ <form class="form-horizontal" action="{{ copr_url(view, copr,
package_name=package.name) }}" method="post"
enctype="multipart/form-data">
+ <input type="hidden" name="package_name" value="{{
package.name }}" />
+ {% endif %}
+
+ {{ render_field(form.package_name, placeholder="Package name in the Python
Package Index.") }}
+
+ <div class="form-group">
+ <label class="col-sm-2 control-label">
+ <label for="python_version">Base Python version</label>:
+ </label>
+ <div class="col-sm-10 pypi-python-version">
+ <input id="python_version-0" name="python_version"
value="2" type="radio" {% if form.python_version.data == '2'
%}checked="checked"{% endif %}>
+ <label
for="python_version-0">2</label>
+ <input id="python_version-1" name="python_version"
value="3" type="radio" {% if form.python_version.data == '3'
%}checked="checked"{% endif %}>
+ <label for="python_version-1">3</label>
+ </div>
+ </div>
+
+ <div class="form-group">
+ <label class="col-sm-2 control-label"
for="textInput-markup">
+ Anitya rebuild
+ </label>
+ <div class="col-sm-10 anitya-rebuild">
+ <input type="checkbox" name="webhook_rebuild"
id="anitya_rebuild" {% if form.webhook_rebuild.data == True
%}checked="checked"{% endif %}/>
+ <label for="webhook_rebuild">Use Anitya emitted message to
rebuild this package (you also need to register respective PyPI package on <a
href="https://release-monitoring.org/">release-monitoring.or...
+ </div>
+ </div>
+ <input type="hidden" name="source_type" value="pypi"
/>
+ {{ form.csrf_token }}
+ <input class="btn btn-primary pull-right" type="submit"
value="Submit">
+
+ </form>
+{% endmacro %}
diff --git a/frontend/coprs_frontend/coprs/templates/coprs/detail/add_build.html
b/frontend/coprs_frontend/coprs/templates/coprs/detail/add_build.html
index 3715af9..ebc887c 100644
--- a/frontend/coprs_frontend/coprs/templates/coprs/detail/add_build.html
+++ b/frontend/coprs_frontend/coprs/templates/coprs/detail/add_build.html
@@ -1,5 +1,5 @@
{% extends "coprs/detail.html" %}
-{% from "_helpers.html" import nav_element, copr_url %}
+{% from "_helpers.html" import copr_url %}
{% block title %}Adding Build for {{ copr.owner.name }}/{{ copr.name }}{% endblock %}
{% set selected_tab = "builds" %}
diff --git a/frontend/coprs_frontend/coprs/templates/coprs/detail/add_build/pypi.html
b/frontend/coprs_frontend/coprs/templates/coprs/detail/add_build/pypi.html
index 707a4b9..17b2c08 100644
--- a/frontend/coprs_frontend/coprs/templates/coprs/detail/add_build/pypi.html
+++ b/frontend/coprs_frontend/coprs/templates/coprs/detail/add_build/pypi.html
@@ -1,7 +1,7 @@
{% extends "coprs/detail/add_build.html" %}
{% from "coprs/detail/_builds_forms.html" import copr_build_form_pypi with
context %}
-{% set add_build_tab = "PyPI" %}
+{% set add_build_tab = "pypi" %}
{% block build_form %}
diff --git a/frontend/coprs_frontend/coprs/templates/coprs/detail/add_package.html
b/frontend/coprs_frontend/coprs/templates/coprs/detail/add_package.html
index 0a0199e..343d9f0 100644
--- a/frontend/coprs_frontend/coprs/templates/coprs/detail/add_package.html
+++ b/frontend/coprs_frontend/coprs/templates/coprs/detail/add_package.html
@@ -1,6 +1,6 @@
{% extends "coprs/detail.html" %}
{% from "coprs/detail/_package_helpers.html" import nav_element, badge with
context %}
-{% from "coprs/detail/_package_forms.html" import copr_package_form_tito,
copr_package_form_mock with context %}
+{% from "coprs/detail/_package_forms.html" import copr_package_form_tito,
copr_package_form_mock, copr_package_form_pypi with context %}
{% block title %}New package in {{ copr.owner.name }}/{{ copr.name }}{% endblock %}
{% set selected_tab = "packages" %}
@@ -24,6 +24,7 @@ create a <a href="{{ copr_url('coprs_ns.copr_add_build',
copr) }}">New Build</a>
<ul class="nav nav-tabs nav-tabs-pf">
{{ nav_element("git_and_tito", "Git and Tito",
copr_url('coprs_ns.copr_add_package', copr, source_type="git_and_tito"))
}}
{{ nav_element("mock_scm", "Mock SCM",
copr_url('coprs_ns.copr_add_package', copr, source_type="mock_scm")) }}
+ {{ nav_element("pypi", "PyPI",
copr_url('coprs_ns.copr_add_package', copr, source_type="pypi")) }}
</ul>
{% if source_type == "git_and_tito" %}
@@ -34,6 +35,10 @@ create a <a href="{{
copr_url('coprs_ns.copr_add_build', copr) }}">New Build</a>
<h3>Mock {{ badge('mock_scm') }}</h3>
{{ copr_package_form_mock(form_mock, view, copr, package) }}
+{% elif source_type == "pypi" %}
+ <h3>PyPI {{ badge('pypi') }}</h3>
+ {{ copr_package_form_pypi(form_pypi, view, copr, package) }}
+
{% else %}
<h3>Wrong source type</h3>
diff --git a/frontend/coprs_frontend/coprs/templates/coprs/detail/package_edit.html
b/frontend/coprs_frontend/coprs/templates/coprs/detail/package_edit.html
index cb4e6e9..27ab908 100644
--- a/frontend/coprs_frontend/coprs/templates/coprs/detail/package_edit.html
+++ b/frontend/coprs_frontend/coprs/templates/coprs/detail/package_edit.html
@@ -1,6 +1,6 @@
{% extends "coprs/detail.html" %}
{% from "coprs/detail/_package_helpers.html" import nav_element, badge with
context %}
-{% from "coprs/detail/_package_forms.html" import copr_package_form_tito,
copr_package_form_mock with context %}
+{% from "coprs/detail/_package_forms.html" import copr_package_form_tito,
copr_package_form_mock, copr_package_form_pypi with context %}
{% block title %}Package {{ package.name }} in {{ package.copr.owner.name }}/{{
package.copr.name }}{% endblock %}
{% set selected_tab = "packages" %}
@@ -20,6 +20,7 @@
<ul class="nav nav-tabs nav-tabs-pf">
{{ nav_element("git_and_tito", "Git and Tito",
copr_url('coprs_ns.copr_edit_package', copr, package_name=package.name,
source_type="git_and_tito")) }}
{{ nav_element("mock_scm", "Mock SCM",
copr_url('coprs_ns.copr_edit_package', copr, package_name=package.name,
source_type="mock_scm")) }}
+ {{ nav_element("pypi", "PyPI",
copr_url('coprs_ns.copr_edit_package', copr, package_name=package.name,
source_type="pypi")) }}
</ul>
{% if source_type == "git_and_tito" %}
@@ -30,6 +31,10 @@
<h3>Mock {{ badge('mock_scm') }}</h3>
{{ copr_package_form_mock(form_mock, view, copr, package) }}
+{% elif source_type == "pypi" %}
+ <h3>PyPI {{ badge('pypi') }}</h3>
+ {{ copr_package_form_pypi(form_pypi, view, copr, package) }}
+
{% else %}
<h3>Wrong source type</h3>
diff --git a/frontend/coprs_frontend/coprs/templates/layout.html
b/frontend/coprs_frontend/coprs/templates/layout.html
index 9baa331..59caf33 100644
--- a/frontend/coprs_frontend/coprs/templates/layout.html
+++ b/frontend/coprs_frontend/coprs/templates/layout.html
@@ -10,6 +10,7 @@
<link rel="shortcut icon" href="{{ url_for('static',
filename='favicon.ico') }}" type="image/vnd.microsoft.icon">
<link rel="shortcut icon" href="{{ url_for('static',
filename='favicon.ico') }}" type="image/x-icon">
<link href="{{ url_for('static',
filename='css/patternfly.min.css') }}" rel="stylesheet"
media="screen, print">
+ <link href="{{ url_for('static',
filename='css/custom-styles.css') }}" rel="stylesheet"
media="screen, print">
<!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries
-->
<!--[if lt IE 9]>
<script
src="../components/html5shiv/dist/html5shiv.min.js"></script>
diff --git a/frontend/coprs_frontend/coprs/views/coprs_ns/coprs_packages.py
b/frontend/coprs_frontend/coprs/views/coprs_ns/coprs_packages.py
index 9a81504..7d10853 100644
--- a/frontend/coprs_frontend/coprs/views/coprs_ns/coprs_packages.py
+++ b/frontend/coprs_frontend/coprs/views/coprs_ns/coprs_packages.py
@@ -7,7 +7,7 @@ from coprs import forms
from coprs import helpers
from coprs.models import Package, Build
from coprs.views.coprs_ns import coprs_ns
-from coprs.views.coprs_ns.coprs_builds import render_add_build_tito,
render_add_build_mock
+from coprs.views.coprs_ns.coprs_builds import render_add_build_tito,
render_add_build_mock, render_add_build_pypi
from coprs.views.misc import login_required, page_not_found, req_with_copr,
req_with_copr
from coprs.logic.complex_logic import ComplexLogic
from coprs.logic.packages_logic import PackagesLogic
@@ -48,6 +48,10 @@ def copr_rebuild_package(copr, package_name):
form = forms.BuildFormMockFactory
f = render_add_build_mock
view_suffix = "_mock"
+ elif package.source_type_text == "pypi":
+ form = forms.BuildFormPyPIFactory
+ f = render_add_build_pypi
+ view_suffix = "_pypi"
else:
flask.flash("Package {} has not the default source which is required for
rebuild. Please configure some source"
.format(package_name, copr.full_name))
@@ -66,7 +70,8 @@ def copr_rebuild_package(copr, package_name):
def copr_add_package(copr, source_type="git_and_tito", **kwargs):
form = {
"git_and_tito": forms.PackageFormTito(),
- "mock_scm": forms.PackageFormMock()
+ "mock_scm": forms.PackageFormMock(),
+ "pypi": forms.PackageFormPyPI(),
}
if "form" in kwargs:
@@ -74,7 +79,7 @@ def copr_add_package(copr, source_type="git_and_tito",
**kwargs):
return flask.render_template("coprs/detail/add_package.html", copr=copr,
package=None,
source_type=source_type,
view="coprs_ns.copr_new_package",
- form_tito=form["git_and_tito"],
form_mock=form["mock_scm"])
+ form_tito=form["git_and_tito"],
form_mock=form["mock_scm"], form_pypi=form["pypi"])
@coprs_ns.route("/<username>/<coprname>/package/new",
methods=["POST"])
@@ -105,6 +110,7 @@ def copr_edit_package(copr, package_name, source_type=None,
**kwargs):
form_classes = {
"git_and_tito": forms.PackageFormTito,
"mock_scm": forms.PackageFormMock,
+ "pypi": forms.PackageFormPyPI,
}
form = {k: v(formdata=None) for k, v in form_classes.items()}
@@ -117,7 +123,7 @@ def copr_edit_package(copr, package_name, source_type=None,
**kwargs):
return flask.render_template("coprs/detail/package_edit.html",
package=package, copr=copr,
source_type=source_type,
view="coprs_ns.copr_edit_package",
- form_tito=form["git_and_tito"],
form_mock=form["mock_scm"])
+ form_tito=form["git_and_tito"],
form_mock=form["mock_scm"], form_pypi=form["pypi"])
@coprs_ns.route("/<username>/<coprname>/package/<package_name>/edit",
methods=["POST"])
@@ -138,6 +144,8 @@ def process_save_package(copr, package_name, view, view_method,
url_on_success):
form = forms.PackageFormTito()
elif flask.request.form["source_type"] == "mock_scm":
form = forms.PackageFormMock()
+ elif flask.request.form["source_type"] == "pypi":
+ form = forms.PackageFormPyPI()
else:
raise Exception("Wrong source type")
@@ -162,6 +170,10 @@ def process_save_package(copr, package_name, view, view_method,
url_on_success):
"scm_url": form.scm_url.data,
"scm_branch": form.scm_branch.data,
"spec": form.spec.data})
+ elif package.source_type == helpers.BuildSourceEnum("pypi"):
+ package.source_json = json.dumps({
+ "package_name": form.package_name.data,
+ "python_version": form.python_version.data})
try:
db.session.add(package)