From a404d90c64640dade8b9fb3f44f8ed7bee7c9207 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?An=C3=ADbal=20Lim=C3=B3n?= Date: Mon, 16 Feb 2015 16:51:11 -0600 Subject: [PATCH] rrs: Add support for Release MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- rrs/admin.py | 8 +- rrs/fixtures/initial_data.json | 265 ++++++++++++++++++++++++------- rrs/migrations/0001_initial.py | 23 ++- rrs/migrations/__init__.py | 0 rrs/models.py | 56 +++++-- rrs/urls.py | 16 +- rrs/views.py | 84 ++++++---- templates/rrs/base_toplevel.html | 59 ++++--- templates/rrs/maintainers.html | 83 +++++----- templates/rrs/recipedetail.html | 6 +- templates/rrs/recipes.html | 24 +-- 11 files changed, 440 insertions(+), 184 deletions(-) delete mode 100644 rrs/migrations/__init__.py diff --git a/rrs/admin.py b/rrs/admin.py index 264f02a..cef0b8b 100644 --- a/rrs/admin.py +++ b/rrs/admin.py @@ -7,12 +7,17 @@ from django.contrib import admin 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, \ RecipeUpstreamHistory +class ReleaseAdmin(admin.ModelAdmin): + search_fields = ['name'] + model = Release + class MilestoneAdmin(admin.ModelAdmin): search_fields = ['name'] + list_filter = ['release__name'] model = Milestone class MaintainerAdmin(admin.ModelAdmin): @@ -53,6 +58,7 @@ class RecipeUpstreamAdmin(admin.ModelAdmin): 'type', ('date', DateFieldListFilter), 'history'] model = RecipeUpstream +admin.site.register(Release, ReleaseAdmin) admin.site.register(Milestone, MilestoneAdmin) admin.site.register(Maintainer, MaintainerAdmin) admin.site.register(RecipeMaintainerHistory, RecipeMaintainerHistoryAdmin) diff --git a/rrs/fixtures/initial_data.json b/rrs/fixtures/initial_data.json index 6d954d5..fb55997 100644 --- a/rrs/fixtures/initial_data.json +++ b/rrs/fixtures/initial_data.json @@ -7,7 +7,6 @@ "email": "" } }, - { "pk": 1, "model": "rrs.maintainer", @@ -17,9 +16,10 @@ } }, + { "pk": 1, - "model": "rrs.milestone", + "model": "rrs.release", "fields": { "name": "1.0", "end_date": "2011-04-15", @@ -27,44 +27,60 @@ } }, { - "pk": 2, + "pk": 41, "model": "rrs.milestone", "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", "end_date": "2010-11-08", "start_date": "2010-06-20" } }, { - "pk": 3, + "pk": 2, "model": "rrs.milestone", "fields": { + "release" : 1, "name": "1.0M2", "end_date": "2010-12-24", "start_date": "2010-11-08" } }, { - "pk": 4, + "pk": 3, "model": "rrs.milestone", "fields": { + "release" : 1, "name": "1.0M3", "end_date": "2011-02-08", "start_date": "2010-12-20" } }, { - "pk": 5, + "pk": 4, "model": "rrs.milestone", "fields": { + "release" : 1, "name": "1.0M4", "end_date": "2011-04-15", "start_date": "2011-02-07" } }, + + { - "pk": 6, - "model": "rrs.milestone", + "pk": 2, + "model": "rrs.release", "fields": { "name": "1.1", "end_date": "2011-10-06", @@ -72,44 +88,60 @@ } }, { - "pk": 7, + "pk": 42, "model": "rrs.milestone", "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", "end_date": "2011-06-13", "start_date": "2011-04-18" } }, { - "pk": 8, + "pk": 6, "model": "rrs.milestone", "fields": { + "release" : 2, "name": "1.1M2", "end_date": "2011-07-25", "start_date": "2011-05-30" } }, { - "pk": 9, + "pk": 7, "model": "rrs.milestone", "fields": { + "release" : 2, "name": "1.1M3", "end_date": "2011-08-15", "start_date": "2011-07-11" } }, { - "pk": 10, + "pk": 8, "model": "rrs.milestone", "fields": { + "release" : 2, "name": "1.1M4", "end_date": "2011-10-06", "start_date": "2011-08-15" } }, + + { - "pk": 11, - "model": "rrs.milestone", + "pk": 3, + "model": "rrs.release", "fields": { "name": "1.2", "end_date": "2012-04-27", @@ -117,44 +149,60 @@ } }, { - "pk": 12, + "pk": 43, "model": "rrs.milestone", "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", "end_date": "2011-12-23", "start_date": "2011-10-31" } }, { - "pk": 13, + "pk": 10, "model": "rrs.milestone", "fields": { + "release" : 3, "name": "1.2M2", "end_date": "2012-02-03", "start_date": "2011-12-12" } }, { - "pk": 14, + "pk": 11, "model": "rrs.milestone", "fields": { + "release" : 3, "name": "1.2M3", "end_date": "2012-03-16", "start_date": "2012-01-23" } }, { - "pk": 15, + "pk": 12, "model": "rrs.milestone", "fields": { + "release" : 3, "name": "1.2M4", "end_date": "2012-04-27", "start_date": "2012-03-05" } }, + + { - "pk": 16, - "model": "rrs.milestone", + "pk": 4, + "model": "rrs.release", "fields": { "name": "1.3", "end_date": "2012-10-26", @@ -162,53 +210,70 @@ } }, { - "pk": 17, + "pk": 44, "model": "rrs.milestone", "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", "end_date": "2012-06-29", "start_date": "2012-05-14" } }, { - "pk": 18, + "pk": 14, "model": "rrs.milestone", "fields": { + "release" : 4, "name": "1.3M2", "end_date": "2012-07-27", "start_date": "2012-06-11" } }, { - "pk": 19, + "pk": 15, "model": "rrs.milestone", "fields": { + "release" : 4, "name": "1.3M3", "end_date": "2012-08-24", "start_date": "2012-07-08" } }, { - "pk": 20, + "pk": 16, "model": "rrs.milestone", "fields": { + "release" : 4, "name": "1.3M4", "end_date": "2012-09-21", "start_date": "2012-08-06" } }, { - "pk": 21, + "pk": 17, "model": "rrs.milestone", "fields": { + "release" : 4, "name": "1.3M5", "end_date": "2012-10-26", "start_date": "2012-09-19" } }, + + { - "pk": 22, - "model": "rrs.milestone", + "pk": 5, + "model": "rrs.release", "fields": { "name": "1.4", "end_date": "2013-04-26", @@ -216,62 +281,80 @@ } }, { - "pk": 23, + "pk": 45, "model": "rrs.milestone", "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", "end_date": "2012-12-14", "start_date": "2012-10-29" } }, { - "pk": 24, + "pk": 19, "model": "rrs.milestone", "fields": { + "release" : 5, "name": "1.4M2", "end_date": "2013-01-11", "start_date": "2012-11-26" } }, { - "pk": 25, + "pk": 20, "model": "rrs.milestone", "fields": { + "release" : 5, "name": "1.4M3", "end_date": "2013-02-08", "start_date": "2012-12-24" } }, { - "pk": 26, + "pk": 21, "model": "rrs.milestone", "fields": { + "release" : 5, "name": "1.4M4", "end_date": "2013-03-08", "start_date": "2013-01-21" } }, { - "pk": 27, + "pk": 22, "model": "rrs.milestone", "fields": { + "release" : 5, "name": "1.4M5", "end_date": "2013-04-05", "start_date": "2013-02-18" } }, { - "pk": 28, + "pk": 23, "model": "rrs.milestone", "fields": { + "release" : 5, "name": "1.4M6", "end_date": "2013-04-26", "start_date": "2013-03-18" } }, + + { - "pk": 29, - "model": "rrs.milestone", + "pk": 6, + "model": "rrs.release", "fields": { "name": "1.5", "end_date": "2013-10-18", @@ -279,53 +362,70 @@ } }, { - "pk": 30, + "pk": 46, "model": "rrs.milestone", "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", "end_date": "2013-06-21", "start_date": "2013-05-06" } }, { - "pk": 31, + "pk": 24, "model": "rrs.milestone", "fields": { + "release" : 6, "name": "1.5M2", "end_date": "2013-07-19", "start_date": "2013-06-03" } }, { - "pk": 32, + "pk": 25, "model": "rrs.milestone", "fields": { + "release" : 6, "name": "1.5M3", "end_date": "2013-08-16", "start_date": "2013-07-01" } }, { - "pk": 33, + "pk": 26, "model": "rrs.milestone", "fields": { + "release" : 6, "name": "1.5M4", "end_date": "2013-09-13", "start_date": "2013-07-29" } }, { - "pk": 34, + "pk": 27, "model": "rrs.milestone", "fields": { + "release" : 6, "name": "1.5M5", "end_date": "2013-10-18", "start_date": "2013-08-26" } }, + + { - "pk": 35, - "model": "rrs.milestone", + "pk": 7, + "model": "rrs.release", "fields": { "name": "1.6", "end_date": "2014-05-25", @@ -333,53 +433,70 @@ } }, { - "pk": 36, + "pk": 47, "model": "rrs.milestone", "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", "end_date": "2013-12-20", "start_date": "2013-11-11" } }, { - "pk": 37, + "pk": 29, "model": "rrs.milestone", "fields": { + "release" : 7, "name": "1.6M2", "end_date": "2014-01-31", "start_date": "2013-12-09" } }, { - "pk": 38, + "pk": 30, "model": "rrs.milestone", "fields": { + "release" : 7, "name": "1.6M3", "end_date": "2014-02-28", "start_date": "2014-01-13" } }, { - "pk": 39, + "pk": 31, "model": "rrs.milestone", "fields": { + "release" : 7, "name": "1.6M4", "end_date": "2014-03-28", "start_date": "2014-02-10" } }, { - "pk": 40, + "pk": 32, "model": "rrs.milestone", "fields": { + "release" : 7, "name": "1.6M5", "end_date": "2014-05-25", "start_date": "2014-03-25" } }, + + { - "pk": 41, - "model": "rrs.milestone", + "pk": 8, + "model": "rrs.release", "fields": { "name": "1.7", "end_date": "2014-10-31", @@ -387,44 +504,60 @@ } }, { - "pk": 42, + "pk": 48, "model": "rrs.milestone", "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", "end_date": "2014-07-11", "start_date": "2014-05-19" } }, { - "pk": 43, + "pk": 34, "model": "rrs.milestone", "fields": { + "release" : 8, "name": "1.7M2", "end_date": "2014-08-15", "start_date": "2014-06-30" } }, { - "pk": 44, + "pk": 35, "model": "rrs.milestone", "fields": { + "release" : 8, "name": "1.7M3", "end_date": "2014-09-19", "start_date": "2014-08-04" } }, { - "pk": 45, + "pk": 36, "model": "rrs.milestone", "fields": { + "release" : 8, "name": "1.7M4", "end_date": "2014-10-31", "start_date": "2014-09-08" } }, + + { - "pk": 46, - "model": "rrs.milestone", + "pk": 9, + "model": "rrs.release", "fields": { "name": "1.8", "end_date": "2015-04-24", @@ -432,36 +565,50 @@ } }, { - "pk": 47, + "pk": 49, "model": "rrs.milestone", "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", "end_date": "2014-12-19", "start_date": "2014-11-03" } }, { - "pk": 48, + "pk": 38, "model": "rrs.milestone", "fields": { + "release" : 9, "name": "1.8M2", "end_date": "2015-01-30", "start_date": "2014-12-03" } }, { - "pk": 49, + "pk": 39, "model": "rrs.milestone", "fields": { + "release" : 9, "name": "1.8M3", "end_date": "2015-03-06", "start_date": "2015-01-14" } }, { - "pk": 50, + "pk": 40, "model": "rrs.milestone", "fields": { + "release" : 9, "name": "1.8M4", "end_date": "2015-04-24", "start_date": "2015-02-19" diff --git a/rrs/migrations/0001_initial.py b/rrs/migrations/0001_initial.py index b46ebef..1fb2452 100644 --- a/rrs/migrations/0001_initial.py +++ b/rrs/migrations/0001_initial.py @@ -8,9 +8,19 @@ from django.db import models class Migration(SchemaMigration): 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' db.create_table('rrs_milestone', ( ('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)), ('start_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): + # Deleting model 'Release' + db.delete_table('rrs_release') + # Deleting model 'Milestone' db.delete_table('rrs_milestone') @@ -167,7 +180,7 @@ class Migration(SchemaMigration): 'layerbranch': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['layerindex.LayerBranch']"}), 'license': ('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'}), 'section': ('django.db.models.fields.CharField', [], {'max_length': '100', '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', [], {}), 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), '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', [], {}) }, 'rrs.recipedistro': { @@ -236,6 +250,13 @@ class Migration(SchemaMigration): 'end_date': ('django.db.models.fields.DateTimeField', [], {}), 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), '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', [], {}) } } diff --git a/rrs/migrations/__init__.py b/rrs/migrations/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/rrs/models.py b/rrs/models.py index 343f257..3eb99c9 100644 --- a/rrs/models.py +++ b/rrs/models.py @@ -15,29 +15,55 @@ from django.db import models from django.db.models.query import Q from layerindex.models import Recipe -class Milestone(models.Model): +class Release(models.Model): name = models.CharField(max_length=100, unique=True) start_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 def get_current(): current = date.today() - current_milestone = Milestone.get_by_date(current) - return current_milestone or Milestone.objects.filter().order_by('-id')[0] + current_release = Release.get_by_date(current) - """ 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 - def get_by_date(date): - milestone_set = Milestone.objects.filter(start_date__lte = date, - end_date__gte = date).order_by('-id') + def get_by_release_and_date(release, date): + milestone_set = Milestone.objects.filter(release = release, + start_date__lte = date, end_date__gte = date).order_by('-end_date') if milestone_set: return milestone_set[0] else: 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 """ def get_week_intervals(self): from datetime import timedelta @@ -60,7 +86,7 @@ class Milestone(models.Model): return weeks def __unicode__(self): - return '%s' % (self.name) + return '%s: %s - %s' % (self.name, self.start_date, self.end_date) class Maintainer(models.Model): name = models.CharField(max_length=255, unique=True) @@ -256,14 +282,10 @@ class RecipeUpgrade(models.Model): commit_date = models.DateTimeField() @staticmethod - def get_by_recipe_and_date(recipe, current_date): - rup_qry = RecipeUpgrade.objects.filter(recipe = recipe, - commit_date__lte = current_date).order_by('commit_date') - - if rup_qry: - return rup_qry[0] - else: - return None + def get_by_recipe_and_date(recipe, end_date): + ru = RecipeUpgrade.objects.filter(recipe = recipe, + commit_date__lte = end_date) + return ru[0] if ru else None def short_sha1(self): return self.sha1[0:6] diff --git a/rrs/urls.py b/rrs/urls.py index 5850615..2117363 100644 --- a/rrs/urls.py +++ b/rrs/urls.py @@ -6,13 +6,21 @@ from django.conf.urls import patterns, url from layerindex.views import EditProfileFormView -from rrs.models import Milestone +from rrs.models import Release, Milestone from rrs.views import RecipeListView, RecipeDetailView, MaintainerListView 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'), - url(r'^recipes/(?P.*)/$', + url(r'^recipes/(?P.*)/(?P.*)/$', RecipeListView.as_view( template_name='rrs/recipes.html'), name='recipes'), @@ -20,7 +28,7 @@ urlpatterns = patterns('', RecipeDetailView.as_view( template_name='rrs/recipedetail.html'), name='recipedetail'), - url(r'^maintainers/(?P.*)/$', + url(r'^maintainers/(?P.*)/(?P.*)/$', MaintainerListView.as_view( template_name='rrs/maintainers.html'), name="maintainers"), diff --git a/rrs/views.py b/rrs/views.py index 6039d14..cb11e17 100644 --- a/rrs/views.py +++ b/rrs/views.py @@ -7,7 +7,7 @@ from django.views.generic import ListView, DetailView from django.core.urlresolvers import resolve from layerindex.models import Recipe -from rrs.models import Milestone, Maintainer, RecipeMaintainerHistory, \ +from rrs.models import Release, Milestone, Maintainer, RecipeMaintainerHistory, \ RecipeMaintainer, RecipeUpstreamHistory, RecipeUpstream, \ RecipeDistro, RecipeUpgrade @@ -49,9 +49,6 @@ def _get_milestone_statistics(milestone, maintainer_name=None): RecipeUpstream.get_recipes_cant_be_updated(recipe_upstream_history).count() milestone_statistics['unknown'] = \ RecipeUpstream.get_recipes_unknown(recipe_upstream_history).count() - milestone_statistics['percentage'] = "%.0f" % \ - ((float(milestone_statistics['up_to_date']) / - float(milestone_statistics['all'])) * 100) else: recipe_maintainer_history = RecipeMaintainerHistory.get_by_end_date( milestone.end_date) @@ -81,6 +78,9 @@ def _get_milestone_statistics(milestone, maintainer_name=None): else: milestone_statistics['unknown'] += 1 + if milestone_statistics['all'] == 0: + milestone_statistics['percentage'] = 0 + else: milestone_statistics['percentage'] = "%.0f" % \ ((float(milestone_statistics['up_to_date']) / float(milestone_statistics['all'])) * 100) @@ -105,8 +105,11 @@ class RecipeListView(ListView): context_object_name = 'recipe_list' 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'] - 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(): 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['release_name'] = self.release_name + context['all_releases'] = Release.objects.filter().order_by('-end_date') 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_up_to_date'] = self.milestone_statistics['up_to_date'] @@ -223,6 +229,7 @@ class RecipeListView(ListView): class RecipeUpgradeDetail(): title = None version = None + release_name = None milestone_name = None date = None maintainer_name = None @@ -230,10 +237,11 @@ class RecipeUpgradeDetail(): commit = 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): self.title = title self.version = version + self.release_name = release_name self.milestone_name = milestone_name self.date = date self.maintainer_name = maintainer_name @@ -242,14 +250,19 @@ class RecipeUpgradeDetail(): self.commit_url = commit_url def _get_recipe_upgrade_detail(recipe_upgrade): - milestone = Milestone.get_by_date(recipe_upgrade.commit_date) - if milestone is None: - milestone_name = '' - recipe_maintainer_history = None - else: - milestone_name = milestone.name - recipe_maintainer_history = RecipeMaintainerHistory.get_by_end_date( - milestone.end_date) + release_name = '' + milestone_name = '' + recipe_maintainer_history = None + + release = Release.get_by_date(recipe_upgrade.commit_date) + if release: + release_name = release.name + 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 maintainer_name = '' @@ -267,8 +280,8 @@ def _get_recipe_upgrade_detail(recipe_upgrade): '/commit/?id=' + recipe_upgrade.sha1 rud = RecipeUpgradeDetail(recipe_upgrade.title, recipe_upgrade.version, \ - milestone_name, recipe_upgrade.commit_date, maintainer_name, \ - is_recipe_maintainer, commit, commit_url) + release_name, milestone_name, recipe_upgrade.commit_date, \ + maintainer_name, is_recipe_maintainer, commit, commit_url) return rud @@ -279,22 +292,28 @@ class RecipeDetailView(DetailView): context = super(RecipeDetailView, self).get_context_data(**kwargs) 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['upstream_status'] = '' + context['upstream_version'] = '' + context['upstream_no_update_reason'] = '' recipe_upstream_history = RecipeUpstreamHistory.get_last_by_date_range( milestone.start_date, milestone.end_date ) - recipe_upstream = RecipeUpstream.get_by_recipe_and_history( - recipe, recipe_upstream_history) - if recipe_upstream.status == 'N' and recipe_upstream.no_update_reason: - recipe_upstream.status = 'C' - context['upstream_status'] = \ - 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 - + if recipe_upstream_history: + recipe_upstream = RecipeUpstream.get_by_recipe_and_history( + recipe, recipe_upstream_history) + if recipe_upstream: + if recipe_upstream.status == 'N' and recipe_upstream.no_update_reason: + recipe_upstream.status = 'C' + context['upstream_status'] = \ + 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() recipe_maintainer = RecipeMaintainer.objects.filter(recipe = recipe, @@ -345,8 +364,12 @@ class MaintainerListView(ListView): maintainer_list = [] 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'] - 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() 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['release_name'] = self.release_name + context['all_releases'] = Release.objects.filter().order_by('-end_date') 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_up_to_date'] = self.milestone_statistics['up_to_date'] diff --git a/templates/rrs/base_toplevel.html b/templates/rrs/base_toplevel.html index f97d925..c09a6be 100644 --- a/templates/rrs/base_toplevel.html +++ b/templates/rrs/base_toplevel.html @@ -14,6 +14,43 @@ {% endcomment %} {% block topfunctions %} + {% endblock %} {% block content %} @@ -21,24 +58,8 @@ @@ -33,27 +34,27 @@
No maintainers found View all maintainers
- - - - - - - - - - +
MaintainerAssigned recipesUp-to-dateNot updatedCan't be updatedUnknown% done
+ + + + + + + + + - {% for w in milestone_weeks %} - {% if current_week == forloop.counter0 %} - - {% endfor %} - + {% for w in milestone_weeks %} + {% if current_week == forloop.counter0 %} + + {% endfor %} + {% for ml in maintainer_list %} @@ -62,27 +63,27 @@ {{ ml.name }} @@ -103,7 +104,6 @@ {% endblock %} {% block scripts %} -{% if maintainer_count > 0 %} -{% endif %} {% endblock %} diff --git a/templates/rrs/recipedetail.html b/templates/rrs/recipedetail.html index 57743c3..1e24707 100644 --- a/templates/rrs/recipedetail.html +++ b/templates/rrs/recipedetail.html @@ -45,7 +45,7 @@
  • Upstream version: {{ upstream_version }}
  • {% endif %}
  • -
  • Maintainer: {{ maintainer_name }}
  • +
  • Maintainer: {{ maintainer_name }}
  • @@ -79,14 +79,14 @@ {% if rud.milestone_name %} - + {% else %} {% endif %} {% if rud.is_recipe_maintainer %} - + {% else %} {% endif %} diff --git a/templates/rrs/recipes.html b/templates/rrs/recipes.html index 2d971b2..d823517 100644 --- a/templates/rrs/recipes.html +++ b/templates/rrs/recipes.html @@ -212,17 +212,6 @@ $(document).ready(function() { 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 ) { upstreamStatus = 'All' maintainer = 'All' @@ -253,6 +242,19 @@ $(document).ready(function() { 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() updateRecipeCount() });
    MaintainerAssigned recipesUp-to-dateNot updatedCan't be updatedUnknown% done - {% else %} - - {% endif %} - wk{{ w }} -
    + {% else %} + + {% endif %} + wk{{ w }} +
    - + {{ ml.recipes_all }} - + {{ ml.recipes_up_to_date }} - + {{ ml.recipes_not_updated }} - + {{ ml.recipes_cant_be_updated }} - + {{ ml.recipes_unknown }} {{ rud.title }} {{ rud.version }}{{ rud.milestone_name }}{{ rud.milestone_name }}{{ rud.milestone_name }}{{ rud.date }}{{ rud.maintainer_name }}{{ rud.maintainer_name }}{{ rud.maintainer_name }}