You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@allura.apache.org by jo...@apache.org on 2013/03/27 20:56:37 UTC
[1/3] git commit: [#5951] Fixed javascript error when adding
milestones on field management page
Updated Branches:
refs/heads/cj/5951 [created] 219b51f70
[#5951] Fixed javascript error when adding milestones on field management page
Signed-off-by: Cory Johns <cj...@slashdotmedia.com>
Project: http://git-wip-us.apache.org/repos/asf/incubator-allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-allura/commit/28311098
Tree: http://git-wip-us.apache.org/repos/asf/incubator-allura/tree/28311098
Diff: http://git-wip-us.apache.org/repos/asf/incubator-allura/diff/28311098
Branch: refs/heads/cj/5951
Commit: 28311098ad0e7c9d93b040a2443f90c9d886a3d9
Parents: aced859
Author: Cory Johns <cj...@slashdotmedia.com>
Authored: Wed Mar 27 17:24:16 2013 +0000
Committer: Cory Johns <cj...@slashdotmedia.com>
Committed: Wed Mar 27 17:40:14 2013 +0000
----------------------------------------------------------------------
.../resources/js/sortable_repeated_field.js | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/28311098/Allura/allura/lib/widgets/resources/js/sortable_repeated_field.js
----------------------------------------------------------------------
diff --git a/Allura/allura/lib/widgets/resources/js/sortable_repeated_field.js b/Allura/allura/lib/widgets/resources/js/sortable_repeated_field.js
index 251274c..7b46bef 100644
--- a/Allura/allura/lib/widgets/resources/js/sortable_repeated_field.js
+++ b/Allura/allura/lib/widgets/resources/js/sortable_repeated_field.js
@@ -79,7 +79,7 @@
.removeClass(self.opts.stub_cls)
.addClass(self.opts.field_cls)
.show()
- .find(':input[name^='+tpl_name+']').each(function() {
+ .find(':input[name^="'+tpl_name+'"]').each(function() {
var $this = $(this);
var name = $this.attr('name');
if(name){
@@ -120,7 +120,7 @@
var prefix = self.fld_name() + '-';
var regex = new RegExp(prefix + /\d+/.source)
self.data.$flist.children().each(function(index) {
- $(this).find(':input[name^='+prefix+']').each(function() {
+ $(this).find(':input[name^="'+prefix+'"]').each(function() {
var $this=$(this);
var name=$this.attr('name');
var newname = name.replace(regex, prefix + index);
[3/3] git commit: [#5951] Display closed milestones in an optgroup
Posted by jo...@apache.org.
[#5951] Display closed milestones in an optgroup
Signed-off-by: Cory Johns <cj...@slashdotmedia.com>
Project: http://git-wip-us.apache.org/repos/asf/incubator-allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-allura/commit/219b51f7
Tree: http://git-wip-us.apache.org/repos/asf/incubator-allura/tree/219b51f7
Diff: http://git-wip-us.apache.org/repos/asf/incubator-allura/diff/219b51f7
Branch: refs/heads/cj/5951
Commit: 219b51f700819453a0fb9937c3b3aa5026e50800
Parents: 2c2ea6c
Author: Cory Johns <cj...@slashdotmedia.com>
Authored: Wed Mar 27 19:56:22 2013 +0000
Committer: Cory Johns <cj...@slashdotmedia.com>
Committed: Wed Mar 27 19:56:22 2013 +0000
----------------------------------------------------------------------
.../forgetracker/tests/functional/test_root.py | 19 ++++++--
ForgeTracker/forgetracker/widgets/ticket_form.py | 36 ++++++++++++---
2 files changed, 44 insertions(+), 11 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/219b51f7/ForgeTracker/forgetracker/tests/functional/test_root.py
----------------------------------------------------------------------
diff --git a/ForgeTracker/forgetracker/tests/functional/test_root.py b/ForgeTracker/forgetracker/tests/functional/test_root.py
index b7f4ae2..d638cf8 100644
--- a/ForgeTracker/forgetracker/tests/functional/test_root.py
+++ b/ForgeTracker/forgetracker/tests/functional/test_root.py
@@ -116,16 +116,25 @@ class TestMilestones(TrackerTestController):
}
self.app.post('/bugs/update_milestones', d)
r = self.app.get('/bugs/1/')
+ closed = r.html.find('optgroup', label='Closed')
+ assert closed
+ closed = str(closed)
assert '<option selected value="1.0">1.0</option>' in r
+ assert '<option selected value="1.0">1.0</option>' not in closed
assert '<option value="2.0">2.0</option>' in r
- assert '<option value="3.0">3.0</option>' not in r
- assert '<option value="4.0">4.0</option>' not in r
+ assert '<option value="2.0">2.0</option>' not in closed
+ assert '<option value="3.0">3.0</option>' in closed
+ assert '<option value="4.0">4.0</option>' in closed
r = self.app.get('/bugs/new/')
+ closed = r.html.find('optgroup', label='Closed')
+ assert closed
+ closed = str(closed)
assert '<option selected value="1.0">1.0</option>' not in r
- assert '<option value="1.0">1.0</option>' not in r
+ assert '<option value="1.0">1.0</option>' in closed
assert '<option value="2.0">2.0</option>' in r
- assert '<option value="3.0">3.0</option>' not in r
- assert '<option value="4.0">4.0</option>' not in r
+ assert '<option value="2.0">2.0</option>' not in closed
+ assert '<option value="3.0">3.0</option>' in closed
+ assert '<option value="4.0">4.0</option>' in closed
def post_install_create_ticket_permission(app):
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/219b51f7/ForgeTracker/forgetracker/widgets/ticket_form.py
----------------------------------------------------------------------
diff --git a/ForgeTracker/forgetracker/widgets/ticket_form.py b/ForgeTracker/forgetracker/widgets/ticket_form.py
index aaba037..4394fbb 100644
--- a/ForgeTracker/forgetracker/widgets/ticket_form.py
+++ b/ForgeTracker/forgetracker/widgets/ticket_form.py
@@ -179,9 +179,33 @@ class TicketCustomField(object):
return factory(field)
class MilestoneField(ew.SingleSelectField):
- def display(self, *args, **kwargs):
- milestone_value = kwargs['value']
- for milestone in reversed(self.options): # reverse so del hits the correct indexes
- if milestone.complete and (milestone.py_value != milestone_value):
- del self.options[self.options.index(milestone)]
- return super(MilestoneField, self).display(*args, **kwargs)
+ template=ew.Snippet('''<select {{widget.j2_attrs({
+ 'id':id,
+ 'name':rendered_name,
+ 'multiple':multiple,
+ 'class':css_class},
+ attrs)}}>
+ {% for o in open_milestones %}
+ <option{% if o.selected%} selected{% endif %} value="{{o.html_value}}">{{o.label|e}}</option>
+ {% endfor %}
+ {% if closed_milestones %}
+ <optgroup label="Closed">
+ {% for o in closed_milestones %}
+ <option{% if o.selected%} selected{% endif %} value="{{o.html_value}}">{{o.label|e}}</option>
+ {% endfor %}
+ </optgroup>
+ {% endif %}
+ </select>''', 'jinja2')
+
+ def prepare_context(self, context):
+ context = super(MilestoneField, self).prepare_context(context)
+
+ # group open / closed milestones
+ context['open_milestones'] = [opt for opt in self.options if not opt.complete]
+ context['closed_milestones'] = [opt for opt in self.options if opt.complete]
+
+ # filter closed milestones entirely
+ #value = context['value']
+ #context['options'] = [opt for opt in self.options if not opt.complete or value == opt.py_value]
+
+ return context
[2/3] git commit: [#5951] Fixed AttributeError when _milestone field
not of type milestone,
and made behavior of all milestone-type field consistent
Posted by jo...@apache.org.
[#5951] Fixed AttributeError when _milestone field not of type milestone, and made behavior of all milestone-type field consistent
Signed-off-by: Cory Johns <cj...@slashdotmedia.com>
Project: http://git-wip-us.apache.org/repos/asf/incubator-allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-allura/commit/2c2ea6c5
Tree: http://git-wip-us.apache.org/repos/asf/incubator-allura/tree/2c2ea6c5
Diff: http://git-wip-us.apache.org/repos/asf/incubator-allura/diff/2c2ea6c5
Branch: refs/heads/cj/5951
Commit: 2c2ea6c54878f0cbda553cc47649ff052aede5f7
Parents: 2831109
Author: Cory Johns <cj...@slashdotmedia.com>
Authored: Wed Mar 27 18:41:35 2013 +0000
Committer: Cory Johns <cj...@slashdotmedia.com>
Committed: Wed Mar 27 18:41:35 2013 +0000
----------------------------------------------------------------------
.../forgetracker/templates/tracker/ticket.html | 2 +
ForgeTracker/forgetracker/widgets/ticket_form.py | 18 ++++++++------
2 files changed, 12 insertions(+), 8 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/2c2ea6c5/ForgeTracker/forgetracker/templates/tracker/ticket.html
----------------------------------------------------------------------
diff --git a/ForgeTracker/forgetracker/templates/tracker/ticket.html b/ForgeTracker/forgetracker/templates/tracker/ticket.html
index 1d229fe..333b371 100644
--- a/ForgeTracker/forgetracker/templates/tracker/ticket.html
+++ b/ForgeTracker/forgetracker/templates/tracker/ticket.html
@@ -88,6 +88,8 @@
{% else %}
nobody
{% endif %}
+ {% elif field.type == 'milestone' %}
+ <a href="{{c.app.url}}{{field.name[1:]}}/{{ticket.custom_fields[field.name]}}">{{ticket.custom_fields[field.name]}}</a>
{% else %}
{{ticket.custom_fields[field.name]}}
{% endif %}
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/2c2ea6c5/ForgeTracker/forgetracker/widgets/ticket_form.py
----------------------------------------------------------------------
diff --git a/ForgeTracker/forgetracker/widgets/ticket_form.py b/ForgeTracker/forgetracker/widgets/ticket_form.py
index 465dce5..aaba037 100644
--- a/ForgeTracker/forgetracker/widgets/ticket_form.py
+++ b/ForgeTracker/forgetracker/widgets/ticket_form.py
@@ -37,13 +37,7 @@ class GenericTicketForm(ew.SimpleForm):
def display_field_by_name(self, idx, ignore_errors=False):
field = self.fields[idx]
ctx = self.context_for(field)
- if idx == '_milestone':
- milestone_value = ctx.value
- for milestone in reversed(field.options): # reverse so del hits the correct indexes
- if milestone.complete and (milestone.py_value != milestone_value):
- del field.options[field.options.index(milestone)]
- ctx = self.context_for(field)
- elif idx == 'assigned_to':
+ if idx == 'assigned_to':
self._add_current_value_to_user_field(field, ctx.get('value'))
elif idx == 'custom_fields':
for cf in c.app.globals.custom_fields:
@@ -154,7 +148,7 @@ class TicketCustomField(object):
py_value=m.name,
complete=bool(m.complete)))
- ssf = ew.SingleSelectField(
+ ssf = MilestoneField(
label=field.label, name=str(field.name),
options=options)
return ssf
@@ -183,3 +177,11 @@ class TicketCustomField(object):
def make(cls, field):
factory = cls.SELECTOR.get(field.get('type'), cls._default)
return factory(field)
+
+class MilestoneField(ew.SingleSelectField):
+ def display(self, *args, **kwargs):
+ milestone_value = kwargs['value']
+ for milestone in reversed(self.options): # reverse so del hits the correct indexes
+ if milestone.complete and (milestone.py_value != milestone_value):
+ del self.options[self.options.index(milestone)]
+ return super(MilestoneField, self).display(*args, **kwargs)