Repository :
http://git.fedorahosted.org/cgit/copr.git
On branch : master
---------------------------------------------------------------
commit 7844859d1a530cba49a4dcf84e50475f69f13e6e
Author: Jakub Kadl����k <jkadlcik(a)redhat.com>
Date: Mon Dec 21 15:03:41 2015 +0100
[frontend] re-design source options for packages to tabs
---------------------------------------------------------------
.../templates/coprs/detail/_package_helpers.html | 13 ++++++++
.../coprs/templates/coprs/detail/add_package.html | 30 ++++++++++---------
.../coprs/templates/coprs/detail/package_edit.html | 24 ++++++++-------
.../coprs/views/coprs_ns/coprs_packages.py | 24 +++++++++++----
4 files changed, 59 insertions(+), 32 deletions(-)
diff --git a/frontend/coprs_frontend/coprs/templates/coprs/detail/_package_helpers.html
b/frontend/coprs_frontend/coprs/templates/coprs/detail/_package_helpers.html
new file mode 100644
index 0000000..3261708
--- /dev/null
+++ b/frontend/coprs_frontend/coprs/templates/coprs/detail/_package_helpers.html
@@ -0,0 +1,13 @@
+{% macro badge(source_type) %}
+ {% if package.source_type_text == source_type %}
+ <span class="badge"><span class="fa
fa-check"></span></span>
+ {% endif %}
+{% endmacro %}
+
+{% macro nav_element(tab_name, tab_title, href) %}
+ <li class="{% if source_type == tab_name %}active{% endif %}">
+ <a href="{{ href }}">
+ {{ tab_title }}
+ </a>
+ </li>
+{% endmacro %}
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 e845ee5..c85c43e 100644
--- a/frontend/coprs_frontend/coprs/templates/coprs/detail/add_package.html
+++ b/frontend/coprs_frontend/coprs/templates/coprs/detail/add_package.html
@@ -1,4 +1,5 @@
{% 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 %}
{% block title %}New package in {{ copr.owner.name }}/{{ copr.name }}{% endblock %}
@@ -14,22 +15,23 @@
<p>You can choose and configure <b>exactly one</b> default source for
the {{ package.name }} package.</p>
-{% macro badge(source_type) %}
- {% if package.source_type_text == source_type %}
- <span class="badge"><span class="fa
fa-check"></span></span>
- {% endif %}
-{% endmacro %}
+<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")) }}
+</ul>
-<div class="clearfix">
- <h3>Tito {{ badge('git_and_tito') }}</h3>
- {{ copr_package_form_tito(form_tito, view, copr, package) }}
-</div>
+{% if source_type == "git_and_tito" %}
+ <h3>Tito {{ badge('git_and_tito') }}</h3>
+ {{ copr_package_form_tito(form_tito, view, copr, package) }}
-<hr>
+{% elif source_type == "mock_scm" %}
+ <h3>Mock {{ badge('mock_scm') }}</h3>
+ {{ copr_package_form_mock(form_mock, view, copr, package) }}
+
+{% else %}
+ <h3>Wrong source type</h3>
+
+{% endif %}
-<div class="clearfix">
- <h3>Mock {{ badge('mock_scm') }}</h3>
- {{ copr_package_form_mock(form_mock, view, copr, package) }}
-</div>
{% endblock %}
\ No newline at end of file
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 f46fb06..cb4e6e9 100644
--- a/frontend/coprs_frontend/coprs/templates/coprs/detail/package_edit.html
+++ b/frontend/coprs_frontend/coprs/templates/coprs/detail/package_edit.html
@@ -1,4 +1,5 @@
{% 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 %}
{% block title %}Package {{ package.name }} in {{ package.copr.owner.name }}/{{
package.copr.name }}{% endblock %}
@@ -15,22 +16,23 @@
<p>You can choose and configure <b>exactly one</b> default source for
the {{ package.name }} package.</p>
-{% macro badge(source_type) %}
- {% if package.source_type_text == source_type %}
- <span class="badge"><span class="fa
fa-check"></span></span>
- {% endif %}
-{% endmacro %}
-<div class="clearfix">
+<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")) }}
+</ul>
+
+{% if source_type == "git_and_tito" %}
<h3>Tito {{ badge('git_and_tito') }}</h3>
{{ copr_package_form_tito(form_tito, view, copr, package) }}
-</div>
-
-<hr>
-<div class="clearfix">
+{% elif source_type == "mock_scm" %}
<h3>Mock {{ badge('mock_scm') }}</h3>
{{ copr_package_form_mock(form_mock, view, copr, package) }}
-</div>
+
+{% else %}
+ <h3>Wrong source type</h3>
+
+{% endif %}
{% endblock %}
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 3ab9026..ed56f10 100644
--- a/frontend/coprs_frontend/coprs/views/coprs_ns/coprs_packages.py
+++ b/frontend/coprs_frontend/coprs/views/coprs_ns/coprs_packages.py
@@ -53,10 +53,12 @@ def copr_rebuild_package(copr, package_name):
@coprs_ns.route("/<username>/<coprname>/package/add")
+@coprs_ns.route("/<username>/<coprname>/package/add/<source_type>")
@coprs_ns.route("/g/<group_name>/<coprname>/package/add")
+@coprs_ns.route("/g/<group_name>/<coprname>/package/add/<source_type>")
@login_required
@req_with_copr
-def copr_add_package(copr, package_name=None):
+def copr_add_package(copr, source_type="git_and_tito", package_name=None):
form = {
"git_and_tito": forms.PackageFormTito(),
"mock_scm": forms.PackageFormMock()
@@ -66,8 +68,8 @@ def copr_add_package(copr, package_name=None):
form[flask.request.form["source_type"]].validate()
return flask.render_template("coprs/detail/add_package.html", copr=copr,
package=None,
- view="coprs_ns.copr_new_package",
form_tito=form["git_and_tito"],
- form_mock=form["mock_scm"])
+ source_type=source_type,
view="coprs_ns.copr_new_package",
+ form_tito=form["git_and_tito"],
form_mock=form["mock_scm"])
@coprs_ns.route("/<username>/<coprname>/package/new",
methods=["POST"])
@@ -81,13 +83,20 @@ def copr_new_package(copr):
@coprs_ns.route("/<username>/<coprname>/package/<package_name>/edit")
+@coprs_ns.route("/<username>/<coprname>/package/<package_name>/edit/<source_type>")
@coprs_ns.route("/g/<group_name>/<coprname>/package/<package_name>/edit")
+@coprs_ns.route("/g/<group_name>/<coprname>/package/<package_name>/edit/<source_type>")
@req_with_copr
-def copr_edit_package(copr, package_name):
+def copr_edit_package(copr, package_name, source_type=None):
package = ComplexLogic.get_package_safe(copr, package_name)
data = package.source_json_dict
data["webhook_rebuild"] = package.webhook_rebuild
+ if package.source_type and not source_type:
+ source_type = package.source_type_text
+ elif not source_type:
+ source_type = "git_and_tito"
+
form_classes = {
"git_and_tito": forms.PackageFormTito,
"mock_scm": forms.PackageFormMock,
@@ -102,8 +111,8 @@ def copr_edit_package(copr, package_name):
form[package.source_type_text] =
form_classes[package.source_type_text](data=data)
return flask.render_template("coprs/detail/package_edit.html",
package=package, copr=copr,
- form_tito=form["git_and_tito"],
form_mock=form["mock_scm"],
- view="coprs_ns.copr_edit_package")
+ source_type=source_type,
view="coprs_ns.copr_edit_package",
+ form_tito=form["git_and_tito"],
form_mock=form["mock_scm"])
@coprs_ns.route("/<username>/<coprname>/package/<package_name>/edit",
methods=["POST"])
@@ -157,7 +166,8 @@ def process_save_package(copr, package_name, view, view_method,
url_on_success):
return flask.redirect(url_on_success)
- return view_method(username=copr.owner.name, coprname=copr.name,
package_name=package_name)
+ return view_method(username=copr.owner.name, coprname=copr.name,
+ package_name=package_name, source_type=form.source_type.data)
def copr_url(view, copr, **kwargs):