rrs: Add support for Release

Now Recipes and Maintainers page can be access by Release and Milestone,
to support this a url namespace was add also update views/templates
handle new URL's.

rrs/models.py: Add support model for store Release also foregin key in
Milestone.
rrs/admin.py: Add admin site for Release model.
rrs/fixtures/initial_data.json: Add initial data with Release/Milestone
relation.
rrs/{views, urls}.py: Add support for handle Release/Milestone.
templates/rrs: Update to handle new URL's.

Signed-off-by: Aníbal Limón <anibal.limon@linux.intel.com>
This commit is contained in:
Aníbal Limón 2015-02-16 16:51:11 -06:00
parent 8c4d41b87b
commit a0053f426f
11 changed files with 440 additions and 184 deletions

View File

@ -7,12 +7,17 @@
from django.contrib import admin from django.contrib import admin
from django.contrib.admin import DateFieldListFilter from django.contrib.admin import DateFieldListFilter
from rrs.models import Milestone, Maintainer, RecipeMaintainerHistory, \ from rrs.models import Release, Milestone, Maintainer, RecipeMaintainerHistory, \
RecipeMaintainer, RecipeDistro, RecipeUpgrade, RecipeUpstream, \ RecipeMaintainer, RecipeDistro, RecipeUpgrade, RecipeUpstream, \
RecipeUpstreamHistory RecipeUpstreamHistory
class ReleaseAdmin(admin.ModelAdmin):
search_fields = ['name']
model = Release
class MilestoneAdmin(admin.ModelAdmin): class MilestoneAdmin(admin.ModelAdmin):
search_fields = ['name'] search_fields = ['name']
list_filter = ['release__name']
model = Milestone model = Milestone
class MaintainerAdmin(admin.ModelAdmin): class MaintainerAdmin(admin.ModelAdmin):
@ -53,6 +58,7 @@ class RecipeUpstreamAdmin(admin.ModelAdmin):
'type', ('date', DateFieldListFilter), 'history'] 'type', ('date', DateFieldListFilter), 'history']
model = RecipeUpstream model = RecipeUpstream
admin.site.register(Release, ReleaseAdmin)
admin.site.register(Milestone, MilestoneAdmin) admin.site.register(Milestone, MilestoneAdmin)
admin.site.register(Maintainer, MaintainerAdmin) admin.site.register(Maintainer, MaintainerAdmin)
admin.site.register(RecipeMaintainerHistory, RecipeMaintainerHistoryAdmin) admin.site.register(RecipeMaintainerHistory, RecipeMaintainerHistoryAdmin)

View File

@ -7,7 +7,6 @@
"email": "" "email": ""
} }
}, },
{ {
"pk": 1, "pk": 1,
"model": "rrs.maintainer", "model": "rrs.maintainer",
@ -17,9 +16,10 @@
} }
}, },
{ {
"pk": 1, "pk": 1,
"model": "rrs.milestone", "model": "rrs.release",
"fields": { "fields": {
"name": "1.0", "name": "1.0",
"end_date": "2011-04-15", "end_date": "2011-04-15",
@ -27,44 +27,60 @@
} }
}, },
{ {
"pk": 2, "pk": 41,
"model": "rrs.milestone", "model": "rrs.milestone",
"fields": { "fields": {
"release" : 1,
"name": "1.0All",
"end_date": "2011-04-15",
"start_date": "2010-06-20"
}
},
{
"pk": 1,
"model": "rrs.milestone",
"fields": {
"release" : 1,
"name": "1.0M1", "name": "1.0M1",
"end_date": "2010-11-08", "end_date": "2010-11-08",
"start_date": "2010-06-20" "start_date": "2010-06-20"
} }
}, },
{ {
"pk": 3, "pk": 2,
"model": "rrs.milestone", "model": "rrs.milestone",
"fields": { "fields": {
"release" : 1,
"name": "1.0M2", "name": "1.0M2",
"end_date": "2010-12-24", "end_date": "2010-12-24",
"start_date": "2010-11-08" "start_date": "2010-11-08"
} }
}, },
{ {
"pk": 4, "pk": 3,
"model": "rrs.milestone", "model": "rrs.milestone",
"fields": { "fields": {
"release" : 1,
"name": "1.0M3", "name": "1.0M3",
"end_date": "2011-02-08", "end_date": "2011-02-08",
"start_date": "2010-12-20" "start_date": "2010-12-20"
} }
}, },
{ {
"pk": 5, "pk": 4,
"model": "rrs.milestone", "model": "rrs.milestone",
"fields": { "fields": {
"release" : 1,
"name": "1.0M4", "name": "1.0M4",
"end_date": "2011-04-15", "end_date": "2011-04-15",
"start_date": "2011-02-07" "start_date": "2011-02-07"
} }
}, },
{ {
"pk": 6, "pk": 2,
"model": "rrs.milestone", "model": "rrs.release",
"fields": { "fields": {
"name": "1.1", "name": "1.1",
"end_date": "2011-10-06", "end_date": "2011-10-06",
@ -72,44 +88,60 @@
} }
}, },
{ {
"pk": 7, "pk": 42,
"model": "rrs.milestone", "model": "rrs.milestone",
"fields": { "fields": {
"release" : 2,
"name": "1.1All",
"end_date": "2011-10-06",
"start_date": "2011-04-18"
}
},
{
"pk": 5,
"model": "rrs.milestone",
"fields": {
"release" : 2,
"name": "1.1M1", "name": "1.1M1",
"end_date": "2011-06-13", "end_date": "2011-06-13",
"start_date": "2011-04-18" "start_date": "2011-04-18"
} }
}, },
{ {
"pk": 8, "pk": 6,
"model": "rrs.milestone", "model": "rrs.milestone",
"fields": { "fields": {
"release" : 2,
"name": "1.1M2", "name": "1.1M2",
"end_date": "2011-07-25", "end_date": "2011-07-25",
"start_date": "2011-05-30" "start_date": "2011-05-30"
} }
}, },
{ {
"pk": 9, "pk": 7,
"model": "rrs.milestone", "model": "rrs.milestone",
"fields": { "fields": {
"release" : 2,
"name": "1.1M3", "name": "1.1M3",
"end_date": "2011-08-15", "end_date": "2011-08-15",
"start_date": "2011-07-11" "start_date": "2011-07-11"
} }
}, },
{ {
"pk": 10, "pk": 8,
"model": "rrs.milestone", "model": "rrs.milestone",
"fields": { "fields": {
"release" : 2,
"name": "1.1M4", "name": "1.1M4",
"end_date": "2011-10-06", "end_date": "2011-10-06",
"start_date": "2011-08-15" "start_date": "2011-08-15"
} }
}, },
{ {
"pk": 11, "pk": 3,
"model": "rrs.milestone", "model": "rrs.release",
"fields": { "fields": {
"name": "1.2", "name": "1.2",
"end_date": "2012-04-27", "end_date": "2012-04-27",
@ -117,44 +149,60 @@
} }
}, },
{ {
"pk": 12, "pk": 43,
"model": "rrs.milestone", "model": "rrs.milestone",
"fields": { "fields": {
"release" : 3,
"name": "1.2All",
"end_date": "2012-04-27",
"start_date": "2011-10-31"
}
},
{
"pk": 9,
"model": "rrs.milestone",
"fields": {
"release" : 3,
"name": "1.2M1", "name": "1.2M1",
"end_date": "2011-12-23", "end_date": "2011-12-23",
"start_date": "2011-10-31" "start_date": "2011-10-31"
} }
}, },
{ {
"pk": 13, "pk": 10,
"model": "rrs.milestone", "model": "rrs.milestone",
"fields": { "fields": {
"release" : 3,
"name": "1.2M2", "name": "1.2M2",
"end_date": "2012-02-03", "end_date": "2012-02-03",
"start_date": "2011-12-12" "start_date": "2011-12-12"
} }
}, },
{ {
"pk": 14, "pk": 11,
"model": "rrs.milestone", "model": "rrs.milestone",
"fields": { "fields": {
"release" : 3,
"name": "1.2M3", "name": "1.2M3",
"end_date": "2012-03-16", "end_date": "2012-03-16",
"start_date": "2012-01-23" "start_date": "2012-01-23"
} }
}, },
{ {
"pk": 15, "pk": 12,
"model": "rrs.milestone", "model": "rrs.milestone",
"fields": { "fields": {
"release" : 3,
"name": "1.2M4", "name": "1.2M4",
"end_date": "2012-04-27", "end_date": "2012-04-27",
"start_date": "2012-03-05" "start_date": "2012-03-05"
} }
}, },
{ {
"pk": 16, "pk": 4,
"model": "rrs.milestone", "model": "rrs.release",
"fields": { "fields": {
"name": "1.3", "name": "1.3",
"end_date": "2012-10-26", "end_date": "2012-10-26",
@ -162,53 +210,70 @@
} }
}, },
{ {
"pk": 17, "pk": 44,
"model": "rrs.milestone", "model": "rrs.milestone",
"fields": { "fields": {
"release" : 4,
"name": "1.3All",
"end_date": "2012-10-26",
"start_date": "2012-05-14"
}
},
{
"pk": 13,
"model": "rrs.milestone",
"fields": {
"release" : 4,
"name": "1.3M1", "name": "1.3M1",
"end_date": "2012-06-29", "end_date": "2012-06-29",
"start_date": "2012-05-14" "start_date": "2012-05-14"
} }
}, },
{ {
"pk": 18, "pk": 14,
"model": "rrs.milestone", "model": "rrs.milestone",
"fields": { "fields": {
"release" : 4,
"name": "1.3M2", "name": "1.3M2",
"end_date": "2012-07-27", "end_date": "2012-07-27",
"start_date": "2012-06-11" "start_date": "2012-06-11"
} }
}, },
{ {
"pk": 19, "pk": 15,
"model": "rrs.milestone", "model": "rrs.milestone",
"fields": { "fields": {
"release" : 4,
"name": "1.3M3", "name": "1.3M3",
"end_date": "2012-08-24", "end_date": "2012-08-24",
"start_date": "2012-07-08" "start_date": "2012-07-08"
} }
}, },
{ {
"pk": 20, "pk": 16,
"model": "rrs.milestone", "model": "rrs.milestone",
"fields": { "fields": {
"release" : 4,
"name": "1.3M4", "name": "1.3M4",
"end_date": "2012-09-21", "end_date": "2012-09-21",
"start_date": "2012-08-06" "start_date": "2012-08-06"
} }
}, },
{ {
"pk": 21, "pk": 17,
"model": "rrs.milestone", "model": "rrs.milestone",
"fields": { "fields": {
"release" : 4,
"name": "1.3M5", "name": "1.3M5",
"end_date": "2012-10-26", "end_date": "2012-10-26",
"start_date": "2012-09-19" "start_date": "2012-09-19"
} }
}, },
{ {
"pk": 22, "pk": 5,
"model": "rrs.milestone", "model": "rrs.release",
"fields": { "fields": {
"name": "1.4", "name": "1.4",
"end_date": "2013-04-26", "end_date": "2013-04-26",
@ -216,62 +281,80 @@
} }
}, },
{ {
"pk": 23, "pk": 45,
"model": "rrs.milestone", "model": "rrs.milestone",
"fields": { "fields": {
"release" : 5,
"name": "1.4All",
"end_date": "2013-04-26",
"start_date": "2012-10-29"
}
},
{
"pk": 18,
"model": "rrs.milestone",
"fields": {
"release" : 5,
"name": "1.4M1", "name": "1.4M1",
"end_date": "2012-12-14", "end_date": "2012-12-14",
"start_date": "2012-10-29" "start_date": "2012-10-29"
} }
}, },
{ {
"pk": 24, "pk": 19,
"model": "rrs.milestone", "model": "rrs.milestone",
"fields": { "fields": {
"release" : 5,
"name": "1.4M2", "name": "1.4M2",
"end_date": "2013-01-11", "end_date": "2013-01-11",
"start_date": "2012-11-26" "start_date": "2012-11-26"
} }
}, },
{ {
"pk": 25, "pk": 20,
"model": "rrs.milestone", "model": "rrs.milestone",
"fields": { "fields": {
"release" : 5,
"name": "1.4M3", "name": "1.4M3",
"end_date": "2013-02-08", "end_date": "2013-02-08",
"start_date": "2012-12-24" "start_date": "2012-12-24"
} }
}, },
{ {
"pk": 26, "pk": 21,
"model": "rrs.milestone", "model": "rrs.milestone",
"fields": { "fields": {
"release" : 5,
"name": "1.4M4", "name": "1.4M4",
"end_date": "2013-03-08", "end_date": "2013-03-08",
"start_date": "2013-01-21" "start_date": "2013-01-21"
} }
}, },
{ {
"pk": 27, "pk": 22,
"model": "rrs.milestone", "model": "rrs.milestone",
"fields": { "fields": {
"release" : 5,
"name": "1.4M5", "name": "1.4M5",
"end_date": "2013-04-05", "end_date": "2013-04-05",
"start_date": "2013-02-18" "start_date": "2013-02-18"
} }
}, },
{ {
"pk": 28, "pk": 23,
"model": "rrs.milestone", "model": "rrs.milestone",
"fields": { "fields": {
"release" : 5,
"name": "1.4M6", "name": "1.4M6",
"end_date": "2013-04-26", "end_date": "2013-04-26",
"start_date": "2013-03-18" "start_date": "2013-03-18"
} }
}, },
{ {
"pk": 29, "pk": 6,
"model": "rrs.milestone", "model": "rrs.release",
"fields": { "fields": {
"name": "1.5", "name": "1.5",
"end_date": "2013-10-18", "end_date": "2013-10-18",
@ -279,53 +362,70 @@
} }
}, },
{ {
"pk": 30, "pk": 46,
"model": "rrs.milestone", "model": "rrs.milestone",
"fields": { "fields": {
"release" : 6,
"name": "1.5All",
"end_date": "2013-10-18",
"start_date": "2013-05-06"
}
},
{
"pk": 23,
"model": "rrs.milestone",
"fields": {
"release" : 6,
"name": "1.5M1", "name": "1.5M1",
"end_date": "2013-06-21", "end_date": "2013-06-21",
"start_date": "2013-05-06" "start_date": "2013-05-06"
} }
}, },
{ {
"pk": 31, "pk": 24,
"model": "rrs.milestone", "model": "rrs.milestone",
"fields": { "fields": {
"release" : 6,
"name": "1.5M2", "name": "1.5M2",
"end_date": "2013-07-19", "end_date": "2013-07-19",
"start_date": "2013-06-03" "start_date": "2013-06-03"
} }
}, },
{ {
"pk": 32, "pk": 25,
"model": "rrs.milestone", "model": "rrs.milestone",
"fields": { "fields": {
"release" : 6,
"name": "1.5M3", "name": "1.5M3",
"end_date": "2013-08-16", "end_date": "2013-08-16",
"start_date": "2013-07-01" "start_date": "2013-07-01"
} }
}, },
{ {
"pk": 33, "pk": 26,
"model": "rrs.milestone", "model": "rrs.milestone",
"fields": { "fields": {
"release" : 6,
"name": "1.5M4", "name": "1.5M4",
"end_date": "2013-09-13", "end_date": "2013-09-13",
"start_date": "2013-07-29" "start_date": "2013-07-29"
} }
}, },
{ {
"pk": 34, "pk": 27,
"model": "rrs.milestone", "model": "rrs.milestone",
"fields": { "fields": {
"release" : 6,
"name": "1.5M5", "name": "1.5M5",
"end_date": "2013-10-18", "end_date": "2013-10-18",
"start_date": "2013-08-26" "start_date": "2013-08-26"
} }
}, },
{ {
"pk": 35, "pk": 7,
"model": "rrs.milestone", "model": "rrs.release",
"fields": { "fields": {
"name": "1.6", "name": "1.6",
"end_date": "2014-05-25", "end_date": "2014-05-25",
@ -333,53 +433,70 @@
} }
}, },
{ {
"pk": 36, "pk": 47,
"model": "rrs.milestone", "model": "rrs.milestone",
"fields": { "fields": {
"release" : 7,
"name": "1.6All",
"end_date": "2014-05-25",
"start_date": "2013-11-11"
}
},
{
"pk": 28,
"model": "rrs.milestone",
"fields": {
"release" : 7,
"name": "1.6M1", "name": "1.6M1",
"end_date": "2013-12-20", "end_date": "2013-12-20",
"start_date": "2013-11-11" "start_date": "2013-11-11"
} }
}, },
{ {
"pk": 37, "pk": 29,
"model": "rrs.milestone", "model": "rrs.milestone",
"fields": { "fields": {
"release" : 7,
"name": "1.6M2", "name": "1.6M2",
"end_date": "2014-01-31", "end_date": "2014-01-31",
"start_date": "2013-12-09" "start_date": "2013-12-09"
} }
}, },
{ {
"pk": 38, "pk": 30,
"model": "rrs.milestone", "model": "rrs.milestone",
"fields": { "fields": {
"release" : 7,
"name": "1.6M3", "name": "1.6M3",
"end_date": "2014-02-28", "end_date": "2014-02-28",
"start_date": "2014-01-13" "start_date": "2014-01-13"
} }
}, },
{ {
"pk": 39, "pk": 31,
"model": "rrs.milestone", "model": "rrs.milestone",
"fields": { "fields": {
"release" : 7,
"name": "1.6M4", "name": "1.6M4",
"end_date": "2014-03-28", "end_date": "2014-03-28",
"start_date": "2014-02-10" "start_date": "2014-02-10"
} }
}, },
{ {
"pk": 40, "pk": 32,
"model": "rrs.milestone", "model": "rrs.milestone",
"fields": { "fields": {
"release" : 7,
"name": "1.6M5", "name": "1.6M5",
"end_date": "2014-05-25", "end_date": "2014-05-25",
"start_date": "2014-03-25" "start_date": "2014-03-25"
} }
}, },
{ {
"pk": 41, "pk": 8,
"model": "rrs.milestone", "model": "rrs.release",
"fields": { "fields": {
"name": "1.7", "name": "1.7",
"end_date": "2014-10-31", "end_date": "2014-10-31",
@ -387,44 +504,60 @@
} }
}, },
{ {
"pk": 42, "pk": 48,
"model": "rrs.milestone", "model": "rrs.milestone",
"fields": { "fields": {
"release" : 8,
"name": "1.7All",
"end_date": "2014-10-31",
"start_date": "2014-05-19"
}
},
{
"pk": 33,
"model": "rrs.milestone",
"fields": {
"release" : 8,
"name": "1.7M1", "name": "1.7M1",
"end_date": "2014-07-11", "end_date": "2014-07-11",
"start_date": "2014-05-19" "start_date": "2014-05-19"
} }
}, },
{ {
"pk": 43, "pk": 34,
"model": "rrs.milestone", "model": "rrs.milestone",
"fields": { "fields": {
"release" : 8,
"name": "1.7M2", "name": "1.7M2",
"end_date": "2014-08-15", "end_date": "2014-08-15",
"start_date": "2014-06-30" "start_date": "2014-06-30"
} }
}, },
{ {
"pk": 44, "pk": 35,
"model": "rrs.milestone", "model": "rrs.milestone",
"fields": { "fields": {
"release" : 8,
"name": "1.7M3", "name": "1.7M3",
"end_date": "2014-09-19", "end_date": "2014-09-19",
"start_date": "2014-08-04" "start_date": "2014-08-04"
} }
}, },
{ {
"pk": 45, "pk": 36,
"model": "rrs.milestone", "model": "rrs.milestone",
"fields": { "fields": {
"release" : 8,
"name": "1.7M4", "name": "1.7M4",
"end_date": "2014-10-31", "end_date": "2014-10-31",
"start_date": "2014-09-08" "start_date": "2014-09-08"
} }
}, },
{ {
"pk": 46, "pk": 9,
"model": "rrs.milestone", "model": "rrs.release",
"fields": { "fields": {
"name": "1.8", "name": "1.8",
"end_date": "2015-04-24", "end_date": "2015-04-24",
@ -432,36 +565,50 @@
} }
}, },
{ {
"pk": 47, "pk": 49,
"model": "rrs.milestone", "model": "rrs.milestone",
"fields": { "fields": {
"release" : 9,
"name": "1.8All",
"end_date": "2014-12-19",
"start_date": "2014-11-03"
}
},
{
"pk": 37,
"model": "rrs.milestone",
"fields": {
"release" : 9,
"name": "1.8M1", "name": "1.8M1",
"end_date": "2014-12-19", "end_date": "2014-12-19",
"start_date": "2014-11-03" "start_date": "2014-11-03"
} }
}, },
{ {
"pk": 48, "pk": 38,
"model": "rrs.milestone", "model": "rrs.milestone",
"fields": { "fields": {
"release" : 9,
"name": "1.8M2", "name": "1.8M2",
"end_date": "2015-01-30", "end_date": "2015-01-30",
"start_date": "2014-12-03" "start_date": "2014-12-03"
} }
}, },
{ {
"pk": 49, "pk": 39,
"model": "rrs.milestone", "model": "rrs.milestone",
"fields": { "fields": {
"release" : 9,
"name": "1.8M3", "name": "1.8M3",
"end_date": "2015-03-06", "end_date": "2015-03-06",
"start_date": "2015-01-14" "start_date": "2015-01-14"
} }
}, },
{ {
"pk": 50, "pk": 40,
"model": "rrs.milestone", "model": "rrs.milestone",
"fields": { "fields": {
"release" : 9,
"name": "1.8M4", "name": "1.8M4",
"end_date": "2015-04-24", "end_date": "2015-04-24",
"start_date": "2015-02-19" "start_date": "2015-02-19"

View File

@ -8,9 +8,19 @@ from django.db import models
class Migration(SchemaMigration): class Migration(SchemaMigration):
def forwards(self, orm): def forwards(self, orm):
# Adding model 'Release'
db.create_table('rrs_release', (
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
('name', self.gf('django.db.models.fields.CharField')(unique=True, max_length=100)),
('start_date', self.gf('django.db.models.fields.DateField')()),
('end_date', self.gf('django.db.models.fields.DateField')()),
))
db.send_create_signal('rrs', ['Release'])
# Adding model 'Milestone' # Adding model 'Milestone'
db.create_table('rrs_milestone', ( db.create_table('rrs_milestone', (
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
('release', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['rrs.Release'])),
('name', self.gf('django.db.models.fields.CharField')(unique=True, max_length=100)), ('name', self.gf('django.db.models.fields.CharField')(unique=True, max_length=100)),
('start_date', self.gf('django.db.models.fields.DateField')()), ('start_date', self.gf('django.db.models.fields.DateField')()),
('end_date', self.gf('django.db.models.fields.DateField')()), ('end_date', self.gf('django.db.models.fields.DateField')()),
@ -89,6 +99,9 @@ class Migration(SchemaMigration):
def backwards(self, orm): def backwards(self, orm):
# Deleting model 'Release'
db.delete_table('rrs_release')
# Deleting model 'Milestone' # Deleting model 'Milestone'
db.delete_table('rrs_milestone') db.delete_table('rrs_milestone')
@ -167,7 +180,7 @@ class Migration(SchemaMigration):
'layerbranch': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['layerindex.LayerBranch']"}), 'layerbranch': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['layerindex.LayerBranch']"}),
'license': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}), 'license': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
'pn': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}), 'pn': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
'provides': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), 'provides': ('django.db.models.fields.CharField', [], {'max_length': '2048', 'blank': 'True'}),
'pv': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}), 'pv': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
'section': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}), 'section': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
'src_uri': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}), 'src_uri': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
@ -185,6 +198,7 @@ class Migration(SchemaMigration):
'end_date': ('django.db.models.fields.DateField', [], {}), 'end_date': ('django.db.models.fields.DateField', [], {}),
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}), 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}),
'release': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['rrs.Release']"}),
'start_date': ('django.db.models.fields.DateField', [], {}) 'start_date': ('django.db.models.fields.DateField', [], {})
}, },
'rrs.recipedistro': { 'rrs.recipedistro': {
@ -236,6 +250,13 @@ class Migration(SchemaMigration):
'end_date': ('django.db.models.fields.DateTimeField', [], {}), 'end_date': ('django.db.models.fields.DateTimeField', [], {}),
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'start_date': ('django.db.models.fields.DateTimeField', [], {}) 'start_date': ('django.db.models.fields.DateTimeField', [], {})
},
'rrs.release': {
'Meta': {'object_name': 'Release'},
'end_date': ('django.db.models.fields.DateField', [], {}),
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}),
'start_date': ('django.db.models.fields.DateField', [], {})
} }
} }

View File

@ -15,29 +15,55 @@ from django.db import models
from django.db.models.query import Q from django.db.models.query import Q
from layerindex.models import Recipe from layerindex.models import Recipe
class Milestone(models.Model): class Release(models.Model):
name = models.CharField(max_length=100, unique=True) name = models.CharField(max_length=100, unique=True)
start_date = models.DateField() start_date = models.DateField()
end_date = models.DateField() end_date = models.DateField()
""" Get current milestone """ @staticmethod
def get_by_date(date):
release_qry = Release.objects.filter(start_date__lte = date,
end_date__gte = date).order_by('-end_date')
if release_qry:
return release_qry[0]
else:
return None
@staticmethod @staticmethod
def get_current(): def get_current():
current = date.today() current = date.today()
current_milestone = Milestone.get_by_date(current) current_release = Release.get_by_date(current)
return current_milestone or Milestone.objects.filter().order_by('-id')[0]
""" Get milestone by date """ return current_release or Release.objects.filter().order_by('-end_date')[0]
def __unicode__(self):
return '%s: %s - %s' % (self.name, self.start_date, self.end_date)
class Milestone(models.Model):
release = models.ForeignKey(Release)
name = models.CharField(max_length=100, unique=True)
start_date = models.DateField()
end_date = models.DateField()
""" Get milestone by release and date """
@staticmethod @staticmethod
def get_by_date(date): def get_by_release_and_date(release, date):
milestone_set = Milestone.objects.filter(start_date__lte = date, milestone_set = Milestone.objects.filter(release = release,
end_date__gte = date).order_by('-id') start_date__lte = date, end_date__gte = date).order_by('-end_date')
if milestone_set: if milestone_set:
return milestone_set[0] return milestone_set[0]
else: else:
return None return None
""" Get current milestone """
@staticmethod
def get_current(release):
current = date.today()
current_milestone = Milestone.get_by_release_and_date(release, current)
return current_milestone or Milestone.objects.filter().order_by('-end_date')[0]
""" Get week intervals from start and end of Milestone """ """ Get week intervals from start and end of Milestone """
def get_week_intervals(self): def get_week_intervals(self):
from datetime import timedelta from datetime import timedelta
@ -60,7 +86,7 @@ class Milestone(models.Model):
return weeks return weeks
def __unicode__(self): def __unicode__(self):
return '%s' % (self.name) return '%s: %s - %s' % (self.name, self.start_date, self.end_date)
class Maintainer(models.Model): class Maintainer(models.Model):
name = models.CharField(max_length=255, unique=True) name = models.CharField(max_length=255, unique=True)
@ -256,14 +282,10 @@ class RecipeUpgrade(models.Model):
commit_date = models.DateTimeField() commit_date = models.DateTimeField()
@staticmethod @staticmethod
def get_by_recipe_and_date(recipe, current_date): def get_by_recipe_and_date(recipe, end_date):
rup_qry = RecipeUpgrade.objects.filter(recipe = recipe, ru = RecipeUpgrade.objects.filter(recipe = recipe,
commit_date__lte = current_date).order_by('commit_date') commit_date__lte = end_date)
return ru[0] if ru else None
if rup_qry:
return rup_qry[0]
else:
return None
def short_sha1(self): def short_sha1(self):
return self.sha1[0:6] return self.sha1[0:6]

View File

@ -6,13 +6,21 @@ from django.conf.urls import patterns, url
from layerindex.views import EditProfileFormView from layerindex.views import EditProfileFormView
from rrs.models import Milestone from rrs.models import Release, Milestone
from rrs.views import RecipeListView, RecipeDetailView, MaintainerListView from rrs.views import RecipeListView, RecipeDetailView, MaintainerListView
urlpatterns = patterns('', urlpatterns = patterns('',
url(r'^$', redirect_to, {'url' : reverse_lazy('recipes', args=(Milestone.get_current().name,))}, url(r'^$', redirect_to,
{'url' :
reverse_lazy('recipes',
args = (
Release.get_current().name,
Milestone.get_current(Release.get_current()).name,
)
)
},
name='frontpage'), name='frontpage'),
url(r'^recipes/(?P<milestone_name>.*)/$', url(r'^recipes/(?P<release_name>.*)/(?P<milestone_name>.*)/$',
RecipeListView.as_view( RecipeListView.as_view(
template_name='rrs/recipes.html'), template_name='rrs/recipes.html'),
name='recipes'), name='recipes'),
@ -20,7 +28,7 @@ urlpatterns = patterns('',
RecipeDetailView.as_view( RecipeDetailView.as_view(
template_name='rrs/recipedetail.html'), template_name='rrs/recipedetail.html'),
name='recipedetail'), name='recipedetail'),
url(r'^maintainers/(?P<milestone_name>.*)/$', url(r'^maintainers/(?P<release_name>.*)/(?P<milestone_name>.*)/$',
MaintainerListView.as_view( MaintainerListView.as_view(
template_name='rrs/maintainers.html'), template_name='rrs/maintainers.html'),
name="maintainers"), name="maintainers"),

View File

@ -7,7 +7,7 @@ from django.views.generic import ListView, DetailView
from django.core.urlresolvers import resolve from django.core.urlresolvers import resolve
from layerindex.models import Recipe from layerindex.models import Recipe
from rrs.models import Milestone, Maintainer, RecipeMaintainerHistory, \ from rrs.models import Release, Milestone, Maintainer, RecipeMaintainerHistory, \
RecipeMaintainer, RecipeUpstreamHistory, RecipeUpstream, \ RecipeMaintainer, RecipeUpstreamHistory, RecipeUpstream, \
RecipeDistro, RecipeUpgrade RecipeDistro, RecipeUpgrade
@ -49,9 +49,6 @@ def _get_milestone_statistics(milestone, maintainer_name=None):
RecipeUpstream.get_recipes_cant_be_updated(recipe_upstream_history).count() RecipeUpstream.get_recipes_cant_be_updated(recipe_upstream_history).count()
milestone_statistics['unknown'] = \ milestone_statistics['unknown'] = \
RecipeUpstream.get_recipes_unknown(recipe_upstream_history).count() RecipeUpstream.get_recipes_unknown(recipe_upstream_history).count()
milestone_statistics['percentage'] = "%.0f" % \
((float(milestone_statistics['up_to_date']) /
float(milestone_statistics['all'])) * 100)
else: else:
recipe_maintainer_history = RecipeMaintainerHistory.get_by_end_date( recipe_maintainer_history = RecipeMaintainerHistory.get_by_end_date(
milestone.end_date) milestone.end_date)
@ -81,6 +78,9 @@ def _get_milestone_statistics(milestone, maintainer_name=None):
else: else:
milestone_statistics['unknown'] += 1 milestone_statistics['unknown'] += 1
if milestone_statistics['all'] == 0:
milestone_statistics['percentage'] = 0
else:
milestone_statistics['percentage'] = "%.0f" % \ milestone_statistics['percentage'] = "%.0f" % \
((float(milestone_statistics['up_to_date']) / ((float(milestone_statistics['up_to_date']) /
float(milestone_statistics['all'])) * 100) float(milestone_statistics['all'])) * 100)
@ -105,8 +105,11 @@ class RecipeListView(ListView):
context_object_name = 'recipe_list' context_object_name = 'recipe_list'
def get_queryset(self): def get_queryset(self):
self.release_name = self.kwargs['release_name']
release = get_object_or_404(Release, name=self.release_name)
self.milestone_name = self.kwargs['milestone_name'] self.milestone_name = self.kwargs['milestone_name']
milestone = get_object_or_404(Milestone, name=self.milestone_name) milestone = get_object_or_404(Milestone, release = release, name=self.milestone_name)
if 'upstream_status' in self.request.GET.keys(): if 'upstream_status' in self.request.GET.keys():
self.upstream_status = self.request.GET['upstream_status'] self.upstream_status = self.request.GET['upstream_status']
@ -185,8 +188,11 @@ class RecipeListView(ListView):
context['this_url_name'] = resolve(self.request.path_info).url_name context['this_url_name'] = resolve(self.request.path_info).url_name
context['release_name'] = self.release_name
context['all_releases'] = Release.objects.filter().order_by('-end_date')
context['milestone_name'] = self.milestone_name context['milestone_name'] = self.milestone_name
context['all_milestones'] = Milestone.objects.filter().order_by('-end_date') context['all_milestones'] = Milestone.objects.filter(release__name =
self.release_name).order_by('-end_date')
context['recipes_percentage'] = self.milestone_statistics['percentage'] context['recipes_percentage'] = self.milestone_statistics['percentage']
context['recipes_up_to_date'] = self.milestone_statistics['up_to_date'] context['recipes_up_to_date'] = self.milestone_statistics['up_to_date']
@ -223,6 +229,7 @@ class RecipeListView(ListView):
class RecipeUpgradeDetail(): class RecipeUpgradeDetail():
title = None title = None
version = None version = None
release_name = None
milestone_name = None milestone_name = None
date = None date = None
maintainer_name = None maintainer_name = None
@ -230,10 +237,11 @@ class RecipeUpgradeDetail():
commit = None commit = None
commit_url = None commit_url = None
def __init__(self, title, version, milestone_name, date, def __init__(self, title, version, release_name, milestone_name, date,
maintainer_name, is_recipe_maintainer, commit, commit_url): maintainer_name, is_recipe_maintainer, commit, commit_url):
self.title = title self.title = title
self.version = version self.version = version
self.release_name = release_name
self.milestone_name = milestone_name self.milestone_name = milestone_name
self.date = date self.date = date
self.maintainer_name = maintainer_name self.maintainer_name = maintainer_name
@ -242,14 +250,19 @@ class RecipeUpgradeDetail():
self.commit_url = commit_url self.commit_url = commit_url
def _get_recipe_upgrade_detail(recipe_upgrade): def _get_recipe_upgrade_detail(recipe_upgrade):
milestone = Milestone.get_by_date(recipe_upgrade.commit_date) release_name = ''
if milestone is None: milestone_name = ''
milestone_name = '' recipe_maintainer_history = None
recipe_maintainer_history = None
else: release = Release.get_by_date(recipe_upgrade.commit_date)
milestone_name = milestone.name if release:
recipe_maintainer_history = RecipeMaintainerHistory.get_by_end_date( release_name = release.name
milestone.end_date) milestone = Milestone.get_by_release_and_date(release,
recipe_upgrade.commit_date)
if milestone:
milestone_name = milestone.name
recipe_maintainer_history = RecipeMaintainerHistory.get_by_end_date(
milestone.end_date)
is_recipe_maintainer = False is_recipe_maintainer = False
maintainer_name = '' maintainer_name = ''
@ -267,8 +280,8 @@ def _get_recipe_upgrade_detail(recipe_upgrade):
'/commit/?id=' + recipe_upgrade.sha1 '/commit/?id=' + recipe_upgrade.sha1
rud = RecipeUpgradeDetail(recipe_upgrade.title, recipe_upgrade.version, \ rud = RecipeUpgradeDetail(recipe_upgrade.title, recipe_upgrade.version, \
milestone_name, recipe_upgrade.commit_date, maintainer_name, \ release_name, milestone_name, recipe_upgrade.commit_date, \
is_recipe_maintainer, commit, commit_url) maintainer_name, is_recipe_maintainer, commit, commit_url)
return rud return rud
@ -279,22 +292,28 @@ class RecipeDetailView(DetailView):
context = super(RecipeDetailView, self).get_context_data(**kwargs) context = super(RecipeDetailView, self).get_context_data(**kwargs)
recipe = self.get_object() recipe = self.get_object()
milestone = Milestone.get_current() release = Release.get_current()
context['release_name'] = release.name
milestone = Milestone.get_current(release)
context['milestone_name'] = milestone.name context['milestone_name'] = milestone.name
context['upstream_status'] = ''
context['upstream_version'] = ''
context['upstream_no_update_reason'] = ''
recipe_upstream_history = RecipeUpstreamHistory.get_last_by_date_range( recipe_upstream_history = RecipeUpstreamHistory.get_last_by_date_range(
milestone.start_date, milestone.start_date,
milestone.end_date milestone.end_date
) )
recipe_upstream = RecipeUpstream.get_by_recipe_and_history( if recipe_upstream_history:
recipe, recipe_upstream_history) recipe_upstream = RecipeUpstream.get_by_recipe_and_history(
if recipe_upstream.status == 'N' and recipe_upstream.no_update_reason: recipe, recipe_upstream_history)
recipe_upstream.status = 'C' if recipe_upstream:
context['upstream_status'] = \ if recipe_upstream.status == 'N' and recipe_upstream.no_update_reason:
RecipeUpstream.RECIPE_UPSTREAM_STATUS_CHOICES_DICT[recipe_upstream.status] recipe_upstream.status = 'C'
context['upstream_version'] = recipe_upstream.version context['upstream_status'] = \
context['upstream_no_update_reason'] = recipe_upstream.no_update_reason RecipeUpstream.RECIPE_UPSTREAM_STATUS_CHOICES_DICT[recipe_upstream.status]
context['upstream_version'] = recipe_upstream.version
context['upstream_no_update_reason'] = recipe_upstream.no_update_reason
self.recipe_maintainer_history = RecipeMaintainerHistory.get_last() self.recipe_maintainer_history = RecipeMaintainerHistory.get_last()
recipe_maintainer = RecipeMaintainer.objects.filter(recipe = recipe, recipe_maintainer = RecipeMaintainer.objects.filter(recipe = recipe,
@ -345,8 +364,12 @@ class MaintainerListView(ListView):
maintainer_list = [] maintainer_list = []
self.maintainer_count = 0 self.maintainer_count = 0
self.release_name = self.kwargs['release_name']
release = get_object_or_404(Release, name=self.release_name)
self.milestone_name = self.kwargs['milestone_name'] self.milestone_name = self.kwargs['milestone_name']
milestone = get_object_or_404(Milestone, name=self.milestone_name) milestone = get_object_or_404(Milestone, release = release,
name=self.milestone_name)
milestone_week_intervals = milestone.get_week_intervals() milestone_week_intervals = milestone.get_week_intervals()
self.milestone_statistics = _get_milestone_statistics(milestone) self.milestone_statistics = _get_milestone_statistics(milestone)
@ -394,8 +417,11 @@ class MaintainerListView(ListView):
context['this_url_name'] = resolve(self.request.path_info).url_name context['this_url_name'] = resolve(self.request.path_info).url_name
context['release_name'] = self.release_name
context['all_releases'] = Release.objects.filter().order_by('-end_date')
context['milestone_name'] = self.milestone_name context['milestone_name'] = self.milestone_name
context['all_milestones'] = Milestone.objects.filter().order_by('-id') context['all_milestones'] = Milestone.objects.filter(release__name =
self.release_name).order_by('-end_date')
context['recipes_percentage'] = self.milestone_statistics['percentage'] context['recipes_percentage'] = self.milestone_statistics['percentage']
context['recipes_up_to_date'] = self.milestone_statistics['up_to_date'] context['recipes_up_to_date'] = self.milestone_statistics['up_to_date']

View File

@ -14,6 +14,43 @@
{% endcomment %} {% endcomment %}
{% block topfunctions %} {% block topfunctions %}
<ul class="nav">
<li class="divider-vertical" style="display; list-item;"/>
{% block release_selector %}
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
Release: <b>{{ release_name }}</b>
<b class="caret"></b>
</a>
<ul class="dropdown-menu">
{% for r in all_releases %}
<li><a href="{% url this_url_name r.name r.name|add:"All" %}{{ extra_url_param }}">
{% if r.name = release_name %}<b>{% endif %}
{{ r.name }}
{% if r.name = release_name %}</b>{% endif %}
</a></li>
{% endfor %}
</ul>
</li>
{% endblock %}
{% block milestone_selector %}
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
Milestone: <b>{{ milestone_name }}</b>
<b class="caret"></b>
</a>
<ul class="dropdown-menu">
{% for m in all_milestones %}
<li><a href="{% url this_url_name release_name m.name %}{{ extra_url_param }}">
{% if m.name = milestone_name %}<b>{% endif %}
{{ m.name }}
{% if m.name = milestone_name %}</b>{% endif %}
</a></li>
{% endfor %}
</ul>
</li>
{% endblock %}
</ul>
{% endblock %} {% endblock %}
{% block content %} {% block content %}
@ -21,24 +58,8 @@
<div class="navbar"> <div class="navbar">
<div class="navbar-inner"> <div class="navbar-inner">
<span class="brand">{{ milestone_name }}</span>
<ul class="nav"> <ul class="nav">
{% block milestone_selector %}
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
Milestone: <b>{{ milestone_name }}</b>
<b class="caret"></b>
</a>
<ul class="dropdown-menu">
{% for m in all_milestones %}
<li><a href="{% url this_url_name m.name %}{{ extra_url_param }}">
{% if m.name = milestone_name %}<b>{% endif %}
{{ m.name }}
{% if m.name = milestone_name %}</b>{% endif %}
</a></li>
{% endfor %}
</ul>
</li>
{% endblock %}
<li class="divider-vertical"></li> <li class="divider-vertical"></li>
<li class="lead" id="percentage"><strong>{{ recipes_percentage }}%</strong> done</li> <li class="lead" id="percentage"><strong>{{ recipes_percentage }}%</strong> done</li>
<li class="divider-vertical"></li> <li class="divider-vertical"></li>
@ -64,7 +85,7 @@
<a href="#"> <a href="#">
{% else %} {% else %}
<li> <li>
<a href="{% url 'recipes' milestone_name %}{{ extra_url_param }}"> <a href="{% url 'recipes' release_name milestone_name %}{{ extra_url_param }}">
{% endif %} {% endif %}
Recipes status</a> Recipes status</a>
</li> </li>
@ -74,7 +95,7 @@
<a href="#"> <a href="#">
{% else %} {% else %}
<li> <li>
<a href="{% url 'maintainers' milestone_name %}"> <a href="{% url 'maintainers' release_name milestone_name %}">
{% endif %} {% endif %}
Maintainer statistics</a> Maintainer statistics</a>
</li> </li>

View File

@ -24,8 +24,9 @@
<span class="badge" style="margin-top:11px;"></span> <span class="badge" style="margin-top:11px;"></span>
</li> </li>
</ul> </ul>
<form class="navbar-form pull-right"> <form id="form-search" class="navbar-form pull-right">
<input type="text" class="input-xxlarge pull-right" placeholder="Search maintainers" id="filter"> <input type="text" class="input-xxlarge" placeholder="Search maintainers" id="filter">
<button type="submit" value="Search" class="btn btn-info" id="btn-search">Search</button>
</form> </form>
</div> </div>
</div> </div>
@ -33,27 +34,27 @@
<div id="no_maintainers_alert" class="alert"> <div id="no_maintainers_alert" class="alert">
No maintainers found <a href="#" id="view-all-maintainers" style="margin-left:10px;">View all maintainers</a> No maintainers found <a href="#" id="view-all-maintainers" style="margin-left:10px;">View all maintainers</a>
</div> </div>
<table class="table table-bordered table-hovere" id="statistics-table"> <table class="table table-bordered table-hover" id="statistics-table">
<thead> <thead>
<tr> <tr>
<th class="sorted">Maintainer<b class="caret"/></th> <th class="sorted">Maintainer<b class="caret"/></th>
<th class="muted">Assigned recipes</th> <th class="muted">Assigned recipes</th>
<th class="muted">Up-to-date</th> <th class="muted">Up-to-date</th>
<th>Not updated</th> <th>Not updated</th>
<th class="muted">Can't be updated</th> <th class="muted">Can't be updated</th>
<th class="muted">Unknown</th> <th class="muted">Unknown</th>
<th>% done</th> <th>% done</th>
{% for w in milestone_weeks %} {% for w in milestone_weeks %}
{% if current_week == forloop.counter0 %} {% if current_week == forloop.counter0 %}
<th class="current-wk"> <th class="current-wk">
{% else %} {% else %}
<th class="muted"> <th class="muted">
{% endif %} {% endif %}
wk{{ w }} wk{{ w }}
</th> </th>
{% endfor %} {% endfor %}
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
{% for ml in maintainer_list %} {% for ml in maintainer_list %}
@ -62,27 +63,27 @@
{{ ml.name }} {{ ml.name }}
</td> </td>
<td> <td>
<a href="{% url 'recipes' milestone_name %}?maintainer_name={{ ml.name|urlencode }}"> <a href="{% url 'recipes' release_name milestone_name %}?maintainer_name={{ ml.name|urlencode }}">
{{ ml.recipes_all }} {{ ml.recipes_all }}
</a> </a>
</td> </td>
<td> <td>
<a href="{% url 'recipes' milestone_name %}?upstream_status={{ "Up-to-date"|urlencode }}&maintainer_name={{ ml.name|urlencode }}"> <a href="{% url 'recipes' release_name milestone_name %}?upstream_status={{ "Up-to-date"|urlencode }}&maintainer_name={{ ml.name|urlencode }}">
{{ ml.recipes_up_to_date }} {{ ml.recipes_up_to_date }}
</a> </a>
</td> </td>
<td> <td>
<a href="{% url 'recipes' milestone_name %}?upstream_status={{ "Not updated"|urlencode }}&maintainer_name={{ ml.name|urlencode }}"> <a href="{% url 'recipes' release_name milestone_name %}?upstream_status={{ "Not updated"|urlencode }}&maintainer_name={{ ml.name|urlencode }}">
{{ ml.recipes_not_updated }} {{ ml.recipes_not_updated }}
</a> </a>
</td> </td>
<td> <td>
<a href="{% url 'recipes' milestone_name %}?upstream_status={{ "Can't be updated"|urlencode }}&maintainer_name={{ ml.name|urlencode }}"> <a href="{% url 'recipes' release_name milestone_name %}?upstream_status={{ "Can't be updated"|urlencode }}&maintainer_name={{ ml.name|urlencode }}">
{{ ml.recipes_cant_be_updated }} {{ ml.recipes_cant_be_updated }}
</a> </a>
</td> </td>
<td> <td>
<a href="{% url 'recipes' milestone_name %}?upstream_status={{ "Unknown"|urlencode }}&maintainer_name={{ ml.name|urlencode }}"> <a href="{% url 'recipes' release_name milestone_name %}?upstream_status={{ "Unknown"|urlencode }}&maintainer_name={{ ml.name|urlencode }}">
{{ ml.recipes_unknown }} {{ ml.recipes_unknown }}
</a> </a>
</td> </td>
@ -103,7 +104,6 @@
{% endblock %} {% endblock %}
{% block scripts %} {% block scripts %}
{% if maintainer_count > 0 %}
<script src="{% static "js/uitablefilter.js" %}"></script> <script src="{% static "js/uitablefilter.js" %}"></script>
<script src="{% static "js/jquery.tablesorter.js" %}"></script> <script src="{% static "js/jquery.tablesorter.js" %}"></script>
<script> <script>
@ -131,6 +131,20 @@ $(document).ready(function() {
} }
} }
$("#form-search").submit(function( event ) {
search_text = $("#filter").val()
$.uiTableFilter(statisticsTable, search_text);
updateMaintainerCount()
event.preventDefault();
});
$("#view-all-maintainers").click(function() {
$.uiTableFilter(statisticsTable, '');
$("#filter").val('')
updateMaintainerCount()
});
{% if maintainer_count > 0 %}
$(statisticsTable).tablesorter({ $(statisticsTable).tablesorter({
sortList: [[0,0]], sortList: [[0,0]],
headers: { headers: {
@ -150,20 +164,9 @@ $(document).ready(function() {
14: { sorter: false }, 14: { sorter: false },
} }
}); });
{% endif %}
$("#filter").keyup(function() {
$.uiTableFilter(statisticsTable, this.value);
updateMaintainerCount()
});
$("#view-all-maintainers").click(function() {
$.uiTableFilter(statisticsTable, '');
$("#filter").val('')
updateMaintainerCount()
});
updateMaintainerCount() updateMaintainerCount()
}); });
</script> </script>
{% endif %}
{% endblock %} {% endblock %}

View File

@ -45,7 +45,7 @@
<li class="lead">Upstream version: <strong>{{ upstream_version }}</strong></li> <li class="lead">Upstream version: <strong>{{ upstream_version }}</strong></li>
{% endif %} {% endif %}
<li class="divider-vertical"></li> <li class="divider-vertical"></li>
<li class="lead">Maintainer: <strong><a href="{% url recipes milestone_name %}?maintainer_name={{ maintainer_name|urlencode }}">{{ maintainer_name }}</a></strong></li> <li class="lead">Maintainer: <strong><a href="{% url recipes release_name milestone_name %}?maintainer_name={{ maintainer_name|urlencode }}">{{ maintainer_name }}</a></strong></li>
<li class="divider-vertical"></li> <li class="divider-vertical"></li>
</ul> </ul>
</div> </div>
@ -79,14 +79,14 @@
<td>{{ rud.title }}</td> <td>{{ rud.title }}</td>
<td>{{ rud.version }}</td> <td>{{ rud.version }}</td>
{% if rud.milestone_name %} {% if rud.milestone_name %}
<td><a href="{% url recipes rud.milestone_name %}">{{ rud.milestone_name }}</a></td> <td><a href="{% url recipes rud.release_name rud.milestone_name %}">{{ rud.milestone_name }}</a></td>
{% else %} {% else %}
<td>{{ rud.milestone_name }}</td> <td>{{ rud.milestone_name }}</td>
{% endif %} {% endif %}
<td>{{ rud.date }}</td> <td>{{ rud.date }}</td>
{% if rud.is_recipe_maintainer %} {% if rud.is_recipe_maintainer %}
<td><a href="{% url recipes rud.milestone_name %}?maintainer_name={{ rud.maintainer_name|urlencode }}">{{ rud.maintainer_name }}</a></td> <td><a href="{% url recipes rud.release_name rud.milestone_name %}?maintainer_name={{ rud.maintainer_name|urlencode }}">{{ rud.maintainer_name }}</a></td>
{% else %} {% else %}
<td>{{ rud.maintainer_name }}</a></td> <td>{{ rud.maintainer_name }}</a></td>
{% endif %} {% endif %}

View File

@ -212,17 +212,6 @@ $(document).ready(function() {
updateMaintainerSelected() updateMaintainerSelected()
} }
$(recipesTable).tablesorter({
sortList: [[0,0]],
headers: {
1: { sorter: false },
2: { sorter: false },
3: { sorter: false },
4: { sorter: false },
5: { sorter: false },
}
});
$("#form-search").submit(function( event ) { $("#form-search").submit(function( event ) {
upstreamStatus = 'All' upstreamStatus = 'All'
maintainer = 'All' maintainer = 'All'
@ -253,6 +242,19 @@ $(document).ready(function() {
updateRecipeCount() updateRecipeCount()
}); });
{% if recipe_list_count > 0 %}
$(recipesTable).tablesorter({
sortList: [[0,0]],
headers: {
1: { sorter: false },
2: { sorter: false },
3: { sorter: false },
4: { sorter: false },
5: { sorter: false },
}
});
{% endif %}
applyFilters() applyFilters()
updateRecipeCount() updateRecipeCount()
}); });