[copr] master: 1077791 - add LICENSE to -doc subpackage (64eb4d7)
by Miroslav Suchý
Repository : http://git.fedorahosted.org/cgit/copr.git
On branch : master
>---------------------------------------------------------------
commit 64eb4d7270be02e6fc2eaa26f16dc0c43a82f573
Author: Miroslav Suchý <msuchy(a)redhat.com>
Date: Wed Apr 9 22:04:51 2014 +0200
1077791 - add LICENSE to -doc subpackage
>---------------------------------------------------------------
backend/copr-backend.spec | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
diff --git a/backend/copr-backend.spec b/backend/copr-backend.spec
index 89e6feb..fad964d 100644
--- a/backend/copr-backend.spec
+++ b/backend/copr-backend.spec
@@ -164,6 +164,7 @@ useradd -r -g copr -G lighttpd -s /bin/bash -c "COPR user" copr
%{_datadir}/copr/copr-be.py*
%files doc
+%doc LICENSE
%doc %{_pkgdocdir}/python-doc
%exclude %{_pkgdocdir}/lighttpd
%exclude %{_pkgdocdir}/playbooks
10 years
[copr] master: 1077791 - remove make as BR (c75d3cb)
by Miroslav Suchý
Repository : http://git.fedorahosted.org/cgit/copr.git
On branch : master
>---------------------------------------------------------------
commit c75d3cb3aefa015272323db69fbce0734b938a54
Author: Miroslav Suchý <msuchy(a)redhat.com>
Date: Wed Apr 9 22:04:09 2014 +0200
1077791 - remove make as BR
it is always presented in build root
>---------------------------------------------------------------
backend/copr-backend.spec | 1 -
1 files changed, 0 insertions(+), 1 deletions(-)
diff --git a/backend/copr-backend.spec b/backend/copr-backend.spec
index 1605eaa..89e6feb 100644
--- a/backend/copr-backend.spec
+++ b/backend/copr-backend.spec
@@ -30,7 +30,6 @@ BuildRequires: python-argparse
#for doc package
BuildRequires: epydoc
BuildRequires: graphviz
-BuildRequires: make
Requires: ansible >= 1.2
Requires: lighttpd
10 years
[copr] master: Automatic commit of package [copr-frontend] release [1.31-1]. (40f7e45)
by Miroslav Suchý
Repository : http://git.fedorahosted.org/cgit/copr.git
On branch : master
>---------------------------------------------------------------
commit 40f7e459c6dae025b30c7372f6afd9ce4dffcd80
Author: Miroslav Suchý <msuchy(a)redhat.com>
Date: Wed Apr 9 13:24:18 2014 +0200
Automatic commit of package [copr-frontend] release [1.31-1].
>---------------------------------------------------------------
frontend/copr-frontend.spec | 21 ++++++++++++++++++++-
rel-eng/packages/copr-frontend | 2 +-
2 files changed, 21 insertions(+), 2 deletions(-)
diff --git a/frontend/copr-frontend.spec b/frontend/copr-frontend.spec
index 7758d2a..7128de6 100644
--- a/frontend/copr-frontend.spec
+++ b/frontend/copr-frontend.spec
@@ -5,7 +5,7 @@
%endif
Name: copr-frontend
-Version: 1.30
+Version: 1.31
Release: 1%{?dist}
Summary: Frontend for Copr
@@ -160,6 +160,25 @@ service httpd condrestart
%doc %{_pkgdocdir}/python-doc
%changelog
+* Wed Apr 09 2014 Miroslav Suchý <msuchy(a)redhat.com> 1.31-1
+- validate chroots in POST requests with API
+- add /playground/list/ api call
+- add playground column to copr table
+- Make repo urls nicer so that last part matches filename
+- fixes and documentation for 66287cc8
+- use https for gravatar urls
+- We can choose chroots for new builds
+- [frontend] delete all builds with their project
+- [frontend] config comments
+- [frontend] sending emails when perms change
+- [frontend] typo s/Coper/Copr/
+- api: fix coprs.models.User usage in search
+- status page fix: long time
+- status page fix: project's owner
+- building pkgs separately
+- [frontend] let apache log in default location
+- api: fix KeyError in search
+
* Wed Mar 19 2014 Miroslav Suchý <msuchy(a)redhat.com> 1.30-1
- Fix typo in API doc HTML
- white background
diff --git a/rel-eng/packages/copr-frontend b/rel-eng/packages/copr-frontend
index 275d6e2..dd1e884 100644
--- a/rel-eng/packages/copr-frontend
+++ b/rel-eng/packages/copr-frontend
@@ -1 +1 @@
-1.30-1 frontend/
+1.31-1 frontend/
10 years
[copr] master: validate chroots in POST requests with API (8d83ed0)
by asamalik@fedoraproject.org
Repository : http://git.fedorahosted.org/cgit/copr.git
On branch : master
>---------------------------------------------------------------
commit 8d83ed0326209aa67138a403717e706cc46560a0
Author: Adam Samalik <asamalik(a)redhat.com>
Date: Tue Apr 8 15:37:59 2014 +0200
validate chroots in POST requests with API
>---------------------------------------------------------------
.../coprs/views/api_ns/api_general.py | 20 ++++++++++++++++++--
1 files changed, 18 insertions(+), 2 deletions(-)
diff --git a/frontend/coprs_frontend/coprs/views/api_ns/api_general.py b/frontend/coprs_frontend/coprs/views/api_ns/api_general.py
index 0a5cd9f..c5b43eb 100644
--- a/frontend/coprs_frontend/coprs/views/api_ns/api_general.py
+++ b/frontend/coprs_frontend/coprs/views/api_ns/api_general.py
@@ -68,7 +68,15 @@ def api_new_copr(username):
form = forms.CoprFormFactory.create_form_cls()(csrf_enabled=False)
httpcode = 200
- if form.validate_on_submit():
+
+ # are there any arguments in POST which our form doesn't know?
+ if sum([1 for post_key in flask.request.form.keys() \
+ if post_key not in form.__dict__.keys()]):
+ output = {"output": "notok", "error":
+ "Unknown arguments passed (non-existing chroot probably)"}
+ httpcode = 500
+
+ elif form.validate_on_submit():
infos = []
try:
copr = coprs_logic.CoprsLogic.add(
@@ -209,7 +217,15 @@ def copr_new_build(username, coprname):
else:
form = forms.BuildFormFactory.create_form_cls(
copr.active_chroots)(csrf_enabled=False)
- if form.validate_on_submit() and flask.g.user.can_build_in(copr):
+
+ # are there any arguments in POST which our form doesn't know?
+ if sum([1 for post_key in flask.request.form.keys() \
+ if post_key not in form.__dict__.keys()]):
+ output = {"output": "notok", "error":
+ "Unknown arguments passed (non-existing chroot probably)"}
+ httpcode = 500
+
+ elif form.validate_on_submit() and flask.g.user.can_build_in(copr):
# we're checking authorization above for now
# and also creating separate build for each package
pkgs=form.pkgs.data.replace('\n', ' ').split(" ")
10 years
[copr] master: adding HACKING (ac4e5af)
by Miroslav Suchý
Repository : http://git.fedorahosted.org/cgit/copr.git
On branch : master
>---------------------------------------------------------------
commit ac4e5af18849d576e1869270647148e8228712d4
Author: Miroslav Suchý <msuchy(a)redhat.com>
Date: Fri Apr 4 15:17:57 2014 +0200
adding HACKING
mostly notes for myself for stuff which is run very rarely
and I tend to forgot it
>---------------------------------------------------------------
HACKING | 8 ++++++++
1 files changed, 8 insertions(+), 0 deletions(-)
diff --git a/HACKING b/HACKING
new file mode 100644
index 0000000..50bec50
--- /dev/null
+++ b/HACKING
@@ -0,0 +1,8 @@
+
+* when you change models and you need to generate alembic upgrade file:
+ cd /usr/share/copr
+ alembic --revision --autogenerate -m "describe the change"
+
+* upgrade schema:
+ cd /usr/share/copr
+ alembic upgrade head
10 years
[copr] master: add /playground/list/ api call (1b3400b)
by Miroslav Suchý
Repository : http://git.fedorahosted.org/cgit/copr.git
On branch : master
>---------------------------------------------------------------
commit 1b3400b84ffb41f40a7ae1b96c150b1e971d7b00
Author: Miroslav Suchý <msuchy(a)redhat.com>
Date: Fri Apr 4 14:46:57 2014 +0200
add /playground/list/ api call
this list all projects which are included in playground fedora repo
>---------------------------------------------------------------
frontend/coprs_frontend/coprs/logic/coprs_logic.py | 19 +++++++++++++++----
.../coprs/views/api_ns/api_general.py | 14 ++++++++++++++
2 files changed, 29 insertions(+), 4 deletions(-)
diff --git a/frontend/coprs_frontend/coprs/logic/coprs_logic.py b/frontend/coprs_frontend/coprs/logic/coprs_logic.py
index 7cab264..73d20c9 100644
--- a/frontend/coprs_frontend/coprs/logic/coprs_logic.py
+++ b/frontend/coprs_frontend/coprs/logic/coprs_logic.py
@@ -17,17 +17,24 @@ class CoprsLogic(object):
"""
@classmethod
+ def get_all(cls):
+ """ Return all coprs without those which are deleted. """
+ query = (db.session.query(models.Copr)
+ .join(models.Copr.owner)
+ .options(db.contains_eager(models.Copr.owner))
+ .filter(models.Copr.deleted == False))
+ return query
+
+ @classmethod
def get(cls, user, username, coprname, **kwargs):
with_builds = kwargs.get("with_builds", False)
with_mock_chroots = kwargs.get("with_mock_chroots", False)
- query = (db.session.query(models.Copr)
- .join(models.Copr.owner)
- .options(db.contains_eager(models.Copr.owner))
+ query = (cls.get_all()
.filter(models.Copr.name == coprname)
.filter(models.User.openid_name ==
models.User.openidize_name(username))
- .filter(models.Copr.deleted == False))
+ )
if with_builds:
query = (query.outerjoin(models.Copr.builds)
@@ -92,6 +99,10 @@ class CoprsLogic(object):
return query
@classmethod
+ def get_playground(cls):
+ return cls.get_all().filter(models.Copr.playground == True)
+
+ @classmethod
def get_multiple_fulltext(cls, user, search_string):
query = (models.Copr.query.join(models.User)
.filter(models.Copr.deleted == False)
diff --git a/frontend/coprs_frontend/coprs/views/api_ns/api_general.py b/frontend/coprs_frontend/coprs/views/api_ns/api_general.py
index d50cc3d..0a5cd9f 100644
--- a/frontend/coprs_frontend/coprs/views/api_ns/api_general.py
+++ b/frontend/coprs_frontend/coprs/views/api_ns/api_general.py
@@ -431,3 +431,17 @@ def api_coprs_search_by_project(project=None):
jsonout = flask.jsonify(output)
jsonout.status_code = httpcode
return jsonout
+
+(a)api_ns.route("/playground/list/")
+def playground_list():
+ """ Return list of coprs which are part of playground """
+ query = coprs_logic.CoprsLogic.get_playground()
+ repos = query.all()
+ output = {"output": "ok", "repos": []}
+ for repo in repos:
+ output["repos"].append({"username": repo.owner.name,
+ "coprname": repo.name})
+
+ jsonout = flask.jsonify(output)
+ jsonout.status_code = 200
+ return jsonout
10 years
[copr] master: add playground column to copr table (ccd2020)
by Miroslav Suchý
Repository : http://git.fedorahosted.org/cgit/copr.git
On branch : master
>---------------------------------------------------------------
commit ccd2020b1be0d7b593f12d2618d006ac73ae4057
Author: Miroslav Suchý <msuchy(a)redhat.com>
Date: Fri Apr 4 13:28:59 2014 +0200
add playground column to copr table
>---------------------------------------------------------------
.../alembic/versions/5845661bb37d_foo.py | 26 ++++++++++++++++++++
frontend/coprs_frontend/coprs/models.py | 1 +
2 files changed, 27 insertions(+), 0 deletions(-)
diff --git a/frontend/coprs_frontend/alembic/versions/5845661bb37d_foo.py b/frontend/coprs_frontend/alembic/versions/5845661bb37d_foo.py
new file mode 100644
index 0000000..f37869f
--- /dev/null
+++ b/frontend/coprs_frontend/alembic/versions/5845661bb37d_foo.py
@@ -0,0 +1,26 @@
+"""add playgroung column
+
+Revision ID: 5845661bb37d
+Revises: 498884ac47db
+Create Date: 2014-04-04 11:25:36.216132
+
+"""
+
+# revision identifiers, used by Alembic.
+revision = '5845661bb37d'
+down_revision = '498884ac47db'
+
+from alembic import op
+import sqlalchemy as sa
+
+
+def upgrade():
+ ### commands auto generated by Alembic - please adjust! ###
+ op.add_column('copr', sa.Column('playground', sa.Boolean(), nullable=True))
+ ### end Alembic commands ###
+
+
+def downgrade():
+ ### commands auto generated by Alembic - please adjust! ###
+ op.drop_column('copr', 'playground')
+ ### end Alembic commands ###
diff --git a/frontend/coprs_frontend/coprs/models.py b/frontend/coprs_frontend/coprs/models.py
index db4968a..7d083be 100644
--- a/frontend/coprs_frontend/coprs/models.py
+++ b/frontend/coprs_frontend/coprs/models.py
@@ -143,6 +143,7 @@ class Copr(db.Model, helpers.Serializer):
description = db.Column(db.Text)
instructions = db.Column(db.Text)
deleted = db.Column(db.Boolean, default=False)
+ playground = db.Column(db.Boolean, default=False)
# relations
owner_id = db.Column(db.Integer, db.ForeignKey("user.id"))
10 years
[copr] master: Make repo urls nicer so that last part matches filename (01a79f6)
by Miroslav Suchý
Repository : http://git.fedorahosted.org/cgit/copr.git
On branch : master
>---------------------------------------------------------------
commit 01a79f6db70a06ff5b7bd76b136a3982ef8f4960
Author: Stanislav Ochotnicky <sochotnicky(a)redhat.com>
Date: Wed Mar 19 16:59:09 2014 +0100
Make repo urls nicer so that last part matches filename
>---------------------------------------------------------------
.../coprs/templates/coprs/detail/overview.html | 5 +++--
.../coprs/views/coprs_ns/coprs_general.py | 11 +++++++++--
2 files changed, 12 insertions(+), 4 deletions(-)
diff --git a/frontend/coprs_frontend/coprs/templates/coprs/detail/overview.html b/frontend/coprs_frontend/coprs/templates/coprs/detail/overview.html
index d88cb12..2eb5c88 100644
--- a/frontend/coprs_frontend/coprs/templates/coprs/detail/overview.html
+++ b/frontend/coprs_frontend/coprs/templates/coprs/detail/overview.html
@@ -51,8 +51,9 @@
'coprs_ns.generate_repo_file',
username=copr.owner.name,
coprname=copr.name,
- chroot=mock_chroot.name) }}">
- {{ copr.owner.name }}-{{ copr.name }}.repo</a></td>
+ chroot=mock_chroot.name,
+ repofile=copr.owner.name+'-'+copr.name+'-'+mock_chroot.name+'.repo') }}">
+ {{ copr.owner.name }}-{{ copr.name }}-{{mock_chroot.name}}.repo</a></td>
{% else %}
<td></td>
{% endif %}
diff --git a/frontend/coprs_frontend/coprs/views/coprs_ns/coprs_general.py b/frontend/coprs_frontend/coprs/views/coprs_ns/coprs_general.py
index 709cb1f..1d805ee 100644
--- a/frontend/coprs_frontend/coprs/views/coprs_ns/coprs_general.py
+++ b/frontend/coprs_frontend/coprs/views/coprs_ns/coprs_general.py
@@ -445,8 +445,9 @@ def copr_legal_flag(username, coprname):
coprname=coprname))
-(a)coprs_ns.route("/<username>/<coprname>/repo/<chroot>/")
-def generate_repo_file(username, coprname, chroot):
+(a)coprs_ns.route("/<username>/<coprname>/repo/<chroot>/", defaults={"repofile": None})
+(a)coprs_ns.route("/<username>/<coprname>/repo/<chroot>/<repofile>")
+def generate_repo_file(username, coprname, chroot, repofile):
""" Generate repo file for a given repo name.
Reponame = username-coprname """
# This solution is used because flask splits off the last part after a
@@ -455,6 +456,12 @@ def generate_repo_file(username, coprname, chroot):
reponame = "{0}-{1}".format(username, coprname)
+ if repofile is not None and repofile != username + '-' + coprname + '-' + chroot + '.repo':
+ return page_not_found(
+ "Repository filename does not match expected: {0}"
+ .format(repofile))
+
+
if "-" not in reponame:
return page_not_found(
"Bad repository name: {0}. Must be username-projectname"
10 years
[copr] master: fixes and documentation for 66287cc8 (67b33ac)
by asamalik@fedoraproject.org
Repository : http://git.fedorahosted.org/cgit/copr.git
On branch : master
>---------------------------------------------------------------
commit 67b33ac842852d792b6ad82df414c02e5ebb6ce4
Author: Adam Samalik <asamalik(a)redhat.com>
Date: Thu Apr 3 09:45:14 2014 +0200
fixes and documentation for 66287cc8
>---------------------------------------------------------------
cli/copr_cli/main.py | 4 ++--
cli/copr_cli/subcommands.py | 4 ++--
cli/man/copr-cli.1.asciidoc | 5 ++++-
frontend/coprs_frontend/coprs/static/copr.css | 2 +-
frontend/coprs_frontend/coprs/templates/api.html | 1 +
.../templates/coprs/detail/_builds_forms.html | 2 +-
6 files changed, 11 insertions(+), 7 deletions(-)
diff --git a/cli/copr_cli/main.py b/cli/copr_cli/main.py
index 35cf03f..a1dc532 100644
--- a/cli/copr_cli/main.py
+++ b/cli/copr_cli/main.py
@@ -106,8 +106,8 @@ def setup_parser():
)
parser_build.add_argument("pkgs", nargs="+",
help="URL of packages to build")
- parser_build.add_argument("--chroot", dest="chroots", action="append",
- help="If you don't need this build for all the project's chroots - you can use it several times for each chroot.")
+ parser_build.add_argument("-r", "--chroot", dest="chroots", action="append",
+ help="If you don't need this build for all the project's chroots. You can use it several times for each chroot you need.")
parser_build.add_argument("--memory", dest="memory",
help="")
parser_build.add_argument("--timeout", dest="timeout",
diff --git a/cli/copr_cli/subcommands.py b/cli/copr_cli/subcommands.py
index 36c681e..09e34e4 100644
--- a/cli/copr_cli/subcommands.py
+++ b/cli/copr_cli/subcommands.py
@@ -200,7 +200,7 @@ def cancel(build_id):
else:
return (False, output["error"])
-def build(copr, pkgs, memory, timeout, wait=True, result=None, chroots=[]):
+def build(copr, pkgs, memory, timeout, wait=True, result=None, chroots=None):
""" Build a new package into a given copr.
Result is dictionary where is returned "errmsg" in case of error.
@@ -226,7 +226,7 @@ def build(copr, pkgs, memory, timeout, wait=True, result=None, chroots=[]):
"timeout": timeout
}
- if chroots:
+ if chroots is not None:
for chroot in chroots:
data[chroot] = "y"
diff --git a/cli/man/copr-cli.1.asciidoc b/cli/man/copr-cli.1.asciidoc
index d8b87c7..518b456 100644
--- a/cli/man/copr-cli.1.asciidoc
+++ b/cli/man/copr-cli.1.asciidoc
@@ -73,9 +73,12 @@ Instructions for the project.
`copr-cli build [options]`
~~~~~~~~~~~~~~~~~~~~~~~~~~
-usage: copr-cli build [-h] [--memory MEMORY] [--timeout TIMEOUT] [--nowait]
+usage: copr-cli build [-h] [-r CHROOTS] [--memory MEMORY] [--timeout TIMEOUT] [--nowait]
project pkg_url [pkg_url ...]
+-r --chroot::
+If you don't need this build for all the project's chroots. You can use it several times for each chroot you need.
+
--memory::
Override memory for this build
diff --git a/frontend/coprs_frontend/coprs/static/copr.css b/frontend/coprs_frontend/coprs/static/copr.css
index 9607491..102e033 100644
--- a/frontend/coprs_frontend/coprs/static/copr.css
+++ b/frontend/coprs_frontend/coprs/static/copr.css
@@ -242,7 +242,7 @@ dt.field-label {
font-weight: bold;
}
-dl.field-label-help {
+dd.field-label-help {
margin-top: -15px;
margin-bottom: 15px;
color: #777;
diff --git a/frontend/coprs_frontend/coprs/templates/api.html b/frontend/coprs_frontend/coprs/templates/api.html
index 2d41745..66f7f48 100644
--- a/frontend/coprs_frontend/coprs/templates/api.html
+++ b/frontend/coprs_frontend/coprs/templates/api.html
@@ -191,6 +191,7 @@ copr_url = http://copr.fedoraproject.org
<h4>Parameters sent by POST:</h4>
<ul>
<li><b>pkgs</b> – Space separated list of package URLs (SRPMs) to be built</li>
+ <li><b>chroots</b> – (Optional) Chroots for this particular build (in case you do not need all project's chroots), specified as <span style="font-style:italic">chrootname=y</span>
</ul>
<h4>Example results</h4>
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 7331575..4023881 100644
--- a/frontend/coprs_frontend/coprs/templates/coprs/detail/_builds_forms.html
+++ b/frontend/coprs_frontend/coprs/templates/coprs/detail/_builds_forms.html
@@ -4,7 +4,7 @@
<form action="{{ url_for(view, username=copr.owner.name, coprname=copr.name) }}" method="post">
<dl>
<dt class="field-label">Build for all project's chroots?</dt>
- <dl class="field-label-help"> Applies just to these builds and will not cause any change to your project. </dl>
+ <dd class="field-label-help">Applies just to these builds and will not cause any changes to your project. </dd>
{% if form._mock_chroots_error %}
<p class="form-error">{{ form._mock_chroots_error }}</p>
10 years