[copr] master: Enable copr description and instructions (b5c7889)
bkabrda at fedoraproject.org
bkabrda at fedoraproject.org
Tue Jan 22 09:09:57 UTC 2013
Repository : http://git.fedorahosted.org/cgit/copr.git
On branch : master
>---------------------------------------------------------------
commit b5c7889abe4516d37f145fba04843e26516ae48d
Author: Bohuslav Kabrda <bkabrda at redhat.com>
Date: Tue Jan 22 10:04:56 2013 +0100
Enable copr description and instructions
>---------------------------------------------------------------
.../3c3cce7a5fe0_add_copr_desc_and_instruct.py | 28 ++++++++++++++++++++
coprs_frontend/coprs/forms.py | 2 +
coprs_frontend/coprs/models.py | 10 +++++++
.../coprs/templates/coprs/_coprs_forms.html | 6 +++-
.../coprs/templates/coprs/detail/.builds.html.swp | Bin 12288 -> 0 bytes
.../coprs/templates/coprs/detail/overview.html | 4 +-
coprs_frontend/coprs/templates/coprs/show.html | 2 +-
.../coprs/views/coprs_ns/coprs_general.py | 4 +++
8 files changed, 51 insertions(+), 5 deletions(-)
diff --git a/coprs_frontend/alembic/versions/3c3cce7a5fe0_add_copr_desc_and_instruct.py b/coprs_frontend/alembic/versions/3c3cce7a5fe0_add_copr_desc_and_instruct.py
new file mode 100644
index 0000000..a2ec329
--- /dev/null
+++ b/coprs_frontend/alembic/versions/3c3cce7a5fe0_add_copr_desc_and_instruct.py
@@ -0,0 +1,28 @@
+"""empty message
+
+Revision ID: 3c3cce7a5fe0
+Revises: 2fa80e062525
+Create Date: 2013-01-22 09:42:39.037642
+
+"""
+
+# revision identifiers, used by Alembic.
+revision = '3c3cce7a5fe0'
+down_revision = '2fa80e062525'
+
+from alembic import op
+import sqlalchemy as sa
+
+
+def upgrade():
+ ### commands auto generated by Alembic - please adjust! ###
+ op.add_column('copr', sa.Column('description', sa.Text(), nullable=True))
+ op.add_column('copr', sa.Column('instructions', sa.Text(), nullable=True))
+ ### end Alembic commands ###
+
+
+def downgrade():
+ ### commands auto generated by Alembic - please adjust! ###
+ op.drop_column('copr', 'instructions')
+ op.drop_column('copr', 'description')
+ ### end Alembic commands ###
diff --git a/coprs_frontend/coprs/forms.py b/coprs_frontend/coprs/forms.py
index cfca500..e5038f2 100644
--- a/coprs_frontend/coprs/forms.py
+++ b/coprs_frontend/coprs/forms.py
@@ -75,6 +75,8 @@ class CoprFormFactory(object):
validators = [wtf.Required(),
wtf.Regexp(re.compile(r'^[\w.-]+$'), message='Name must contain only letters, digits, underscores, dashes and dots.'),
CoprUniqueNameValidator()])
+ description = wtf.TextAreaField('Description')
+ instructions = wtf.TextAreaField('Instructions')
repos = wtf.TextAreaField('Repos',
validators = [UrlListValidator()],
filters = [StringListFilter()])
diff --git a/coprs_frontend/coprs/models.py b/coprs_frontend/coprs/models.py
index 573c472..49e8aee 100644
--- a/coprs_frontend/coprs/models.py
+++ b/coprs_frontend/coprs/models.py
@@ -108,6 +108,8 @@ class Copr(db.Model, Serializer):
name = db.Column(db.String(100), nullable = False)
repos = db.Column(db.Text)
created_on = db.Column(db.Integer)
+ description = db.Column(db.Text)
+ instructions = db.Column(db.Text)
# duplicate information, but speeds up a lot and makes queries simpler
build_count = db.Column(db.Integer, default = 0)
@@ -120,6 +122,14 @@ class Copr(db.Model, Serializer):
return self.repos.split()
@property
+ def description_or_not_filled(self):
+ return self.description or 'Description not filled in by author.'
+
+ @property
+ def instructions_or_not_filled(self):
+ return self.instructions or 'Instructions not filled in by author.'
+
+ @property
def mock_chroots(self):
if not hasattr(self, '_mock_chroots'):
self._mock_chroots = MockChroot.query.join(CoprChroot).\
diff --git a/coprs_frontend/coprs/templates/coprs/_coprs_forms.html b/coprs_frontend/coprs/templates/coprs/_coprs_forms.html
index 8c7daa7..b3f6742 100644
--- a/coprs_frontend/coprs/templates/coprs/_coprs_forms.html
+++ b/coprs_frontend/coprs/templates/coprs/_coprs_forms.html
@@ -7,6 +7,8 @@
{{ form.csrf_token }}
{{ render_field(form.id, hidden = True) }}
{{ render_field(form.name, label='Copr Name') }}
+ {{ render_field(form.description, rows=5, cols=50) }}
+ {{ render_field(form.instructions, rows=5, cols=50) }}
<dt class="field-label">Chroots</dt>
{% if form._mock_chroots_error %}
<p class="form-error">{{ form._mock_chroots_error }}</p>
@@ -20,9 +22,9 @@
{% endfor %}
</table>
{% endfor %}
- {{ render_field(form.repos, rows = 10, cols = 50) }}
+ {{ render_field(form.repos, rows=5, cols=50) }}
{% if copr is none %}{# we're creating the copr, so display initial builds area #}
- {{ render_field(form.initial_pkgs, rows = 10, cols = 50) }}
+ {{ render_field(form.initial_pkgs, rows=5, cols=50) }}
{% endif %}
<dt><input type="submit" value="{% if copr %}Update{% else %}Create{% endif %}"></dt>
</dl>
diff --git a/coprs_frontend/coprs/templates/coprs/detail/.builds.html.swp b/coprs_frontend/coprs/templates/coprs/detail/.builds.html.swp
deleted file mode 100644
index bfa2ee8..0000000
Binary files a/coprs_frontend/coprs/templates/coprs/detail/.builds.html.swp and /dev/null differ
diff --git a/coprs_frontend/coprs/templates/coprs/detail/overview.html b/coprs_frontend/coprs/templates/coprs/detail/overview.html
index a07d1ff..0d74561 100644
--- a/coprs_frontend/coprs/templates/coprs/detail/overview.html
+++ b/coprs_frontend/coprs/templates/coprs/detail/overview.html
@@ -3,9 +3,9 @@
{% block detail_body %}
<h2>Description</h2>
- <div class="shift-right">This is a description...</div>
+ <div class="shift-right">{{ copr.description_or_not_filled }}</div>
<h2>Installation Instructions</h2>
- <div class="shift-right">These are installation instructions...</div>
+ <div class="shift-right">{{ copr.instructions_or_not_filled}}</div>
<h2>Active Releases</h2>
<table class="releases">
<tr>
diff --git a/coprs_frontend/coprs/templates/coprs/show.html b/coprs_frontend/coprs/templates/coprs/show.html
index 08490af..7b4d3c9 100644
--- a/coprs_frontend/coprs/templates/coprs/show.html
+++ b/coprs_frontend/coprs/templates/coprs/show.html
@@ -20,7 +20,7 @@
{% for copr in coprs %}
<div class="copr">
<a href="{{ url_for('coprs_ns.copr_detail', username = copr.owner.name, coprname = copr.name) }}">{{ copr.owner.name }}/{{ copr.name }}</a>
- <p>description blah blah blah</p>
+ <p>{{ copr.description_or_not_filled }}</p>
<p class="repos">F18 blah blah</p>
</div>
{% else %}
diff --git a/coprs_frontend/coprs/views/coprs_ns/coprs_general.py b/coprs_frontend/coprs/views/coprs_ns/coprs_general.py
index a88a7b9..c2369d3 100644
--- a/coprs_frontend/coprs/views/coprs_ns/coprs_general.py
+++ b/coprs_frontend/coprs/views/coprs_ns/coprs_general.py
@@ -59,6 +59,8 @@ def copr_new():
form = forms.CoprFormFactory.create_form_cls()()
if form.validate_on_submit():
copr = models.Copr(name = form.name.data,
+ description = form.description.data,
+ instructions = form.instructions.data,
repos = form.repos.data.replace('\n', ' '),
owner = flask.g.user,
created_on = int(time.time()))
@@ -154,6 +156,8 @@ def copr_update(username, coprname):
# we don't change owner (yet)
copr.name = form.name.data
copr.repos = form.repos.data.replace('\n', ' ')
+ copr.description = form.description.data
+ copr.instructions = form.instructions.data
coprs_logic.CoprsChrootLogic.update_from_names(flask.g.user, copr, form.selected_chroots)
coprs_logic.CoprsLogic.update(flask.g.user, copr, check_for_duplicates = False) # form validation checks for duplicates
More information about the copr-devel
mailing list