Repository :
http://git.fedorahosted.org/cgit/copr.git
On branch : master
---------------------------------------------------------------
commit ffe7b4273ebd323b06092f8ee1dd1d88dc0b908f
Author: Valentin Gologuzov <vgologuz(a)redhat.com>
Date: Tue Oct 21 19:09:24 2014 +0200
[fronted] adding option to disable auto invokation of createrepo
---------------------------------------------------------------
...b1b27f9_copr_added_attribute_auto_createrepo.py | 24 ++++++++++++++++++++
frontend/coprs_frontend/coprs/forms.py | 6 +++-
frontend/coprs_frontend/coprs/models.py | 4 +++
.../coprs/templates/coprs/_coprs_forms.html | 10 ++++++++
.../coprs/views/api_ns/api_general.py | 15 +++++++-----
.../coprs/views/coprs_ns/coprs_general.py | 1 +
6 files changed, 52 insertions(+), 8 deletions(-)
diff --git
a/frontend/coprs_frontend/alembic/versions/1d5b5b1b27f9_copr_added_attribute_auto_createrepo.py
b/frontend/coprs_frontend/alembic/versions/1d5b5b1b27f9_copr_added_attribute_auto_createrepo.py
new file mode 100644
index 0000000..5e7bdea
--- /dev/null
+++
b/frontend/coprs_frontend/alembic/versions/1d5b5b1b27f9_copr_added_attribute_auto_createrepo.py
@@ -0,0 +1,24 @@
+"""Copr added attribute 'auto_createrepo'
+
+Revision ID: 1d5b5b1b27f9
+Revises: 2a4242380f24
+Create Date: 2014-10-21 14:32:45.062257
+
+"""
+
+# revision identifiers, used by Alembic.
+revision = '1d5b5b1b27f9'
+down_revision = '2a4242380f24'
+
+from alembic import op
+import sqlalchemy as sa
+
+
+def upgrade():
+ op.add_column('copr', sa.Column('auto_createrepo', sa.Boolean(),
+ default=True, server_default="true", nullable=False))
+
+
+def downgrade():
+ op.drop_column('copr', 'auto_createrepo')
+
diff --git a/frontend/coprs_frontend/coprs/forms.py
b/frontend/coprs_frontend/coprs/forms.py
index e6e962e..591b38c 100644
--- a/frontend/coprs_frontend/coprs/forms.py
+++ b/frontend/coprs_frontend/coprs/forms.py
@@ -99,10 +99,10 @@ class CoprFormFactory(object):
# that name already exists
id = wtforms.HiddenField()
- name = wtforms.TextField(
+ name = wtforms.StringField(
"Name",
validators=[
- wtforms.validators.Required(),
+ wtforms.validators.DataRequired(),
wtforms.validators.Regexp(
re.compile(r"^[\w.-]+$"),
message="Name must contain only letters,"
@@ -125,6 +125,8 @@ class CoprFormFactory(object):
validators=[UrlListValidator()],
filters=[StringListFilter()])
+ auto_createrepo = wtforms.BooleanField()
+
@property
def selected_chroots(self):
selected = []
diff --git a/frontend/coprs_frontend/coprs/models.py
b/frontend/coprs_frontend/coprs/models.py
index f2d8838..08356a3 100644
--- a/frontend/coprs_frontend/coprs/models.py
+++ b/frontend/coprs_frontend/coprs/models.py
@@ -118,6 +118,7 @@ class User(db.Model, helpers.Serializer):
except IOError:
return ""
+
class Copr(db.Model, helpers.Serializer):
"""
@@ -138,6 +139,9 @@ class Copr(db.Model, helpers.Serializer):
deleted = db.Column(db.Boolean, default=False)
playground = db.Column(db.Boolean, default=False)
+ # should copr run `createrepo` each time when build packages are changed
+ auto_createrepo = db.Column(db.Boolean, default=True)
+
# relations
owner_id = db.Column(db.Integer, db.ForeignKey("user.id"))
owner = db.relationship("User", backref=db.backref("coprs"))
diff --git a/frontend/coprs_frontend/coprs/templates/coprs/_coprs_forms.html
b/frontend/coprs_frontend/coprs/templates/coprs/_coprs_forms.html
index 910968c..f7ece5e 100644
--- a/frontend/coprs_frontend/coprs/templates/coprs/_coprs_forms.html
+++ b/frontend/coprs_frontend/coprs/templates/coprs/_coprs_forms.html
@@ -20,8 +20,14 @@
{% endif %}
{{ render_field(form.description, rows=5, cols=50, placeholder='Optional -
describe your project briefly.') }}
{{ render_field(form.instructions, rows=5, cols=50, placeholder='Optional -
describe how your project can be installed. Where users can report bugs and issues. Link
to wiki is good as well.') }}
+
+
+
+
<dd>You can use <a
href="http://daringfireball.net/projects/markdown/syntax">ma...
syntax</a>, inline HTML is forbidden..</dd>
<dt class="field-label required">Chroots</dt>
+
+
{% if form._mock_chroots_error %}
<p class="form-error">{{ form._mock_chroots_error }}</p>
{% endif %}
@@ -48,6 +54,10 @@
{% if copr is none %}{# we're creating the copr, so display initial builds area
#}
{{ render_field(form.initial_pkgs, rows=5, cols=50, placeholder='Optional -
list of src.rpm to build initially. Can be skipped and submitted later.') }}
{% endif %}
+
+ {{ render_field(form.auto_createrepo, label="Generate repo data after build
") }}
+
+
<dt><input type="submit" value="{% if copr %}Update{% else
%}Create{% endif %}"></dt>
</dl>
</form>
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 b1d13d6..3875883 100644
--- a/frontend/coprs_frontend/coprs/views/api_ns/api_general.py
+++ b/frontend/coprs_frontend/coprs/views/api_ns/api_general.py
@@ -225,12 +225,15 @@ def api_coprs_by_owner_detail(username, coprname):
yum_repos[release] = fix_protocol_for_backend(
urlparse.urljoin(build.results, release + '/'))
break
- output["detail"] = {"name": copr.name,
- "additional_repos": copr.repos,
- "yum_repos": yum_repos,
- "description": copr.description,
- "instructions": copr.instructions,
- "last_modified":
builds_logic.BuildsLogic.last_modified(copr)}
+ output["detail"] = {
+ "name": copr.name,
+ "additional_repos": copr.repos,
+ "yum_repos": yum_repos,
+ "description": copr.description,
+ "instructions": copr.instructions,
+ "last_modified": builds_logic.BuildsLogic.last_modified(copr),
+ "auto_createrepo": copr.auto_createrepo,
+ }
else:
output = {"output": "notok", "error": "Copr
with name {0} does not exist.".format(coprname)}
httpcode = 500
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 dc14a90..dab0160 100644
--- a/frontend/coprs_frontend/coprs/views/coprs_ns/coprs_general.py
+++ b/frontend/coprs_frontend/coprs/views/coprs_ns/coprs_general.py
@@ -259,6 +259,7 @@ def copr_update(username, coprname):
copr.repos = form.repos.data.replace("\n", " ")
copr.description = form.description.data
copr.instructions = form.instructions.data
+ copr.auto_createrepo = form.auto_createrepo.data
coprs_logic.CoprChrootsLogic.update_from_names(
flask.g.user, copr, form.selected_chroots)