rrs: Add application

Add models for store Milestone, Maintainer and Recipe{Maintainer,
Upgrade, Upstream, Distro}, add initial data for Milestone and
Maintainer, initial migration and admin sites.

Add rrs/context_processors.py for return the site_name and application
for use in templates.

Signed-off-by: Aníbal Limón <anibal.limon@linux.intel.com>
This commit is contained in:
Aníbal Limón 2015-01-08 10:56:26 -06:00
parent e10eb3c7f5
commit eae7b91a11
8 changed files with 859 additions and 0 deletions

0
rrs/__init__.py Normal file
View File

48
rrs/admin.py Normal file
View File

@ -0,0 +1,48 @@
# rrs-web - admin interface definitions
#
# Copyright (C) 2014 Intel Corporation
#
# Licensed under the MIT license, see COPYING.MIT for details
from django.contrib import admin
from django.contrib.admin import DateFieldListFilter
from rrs.models import Milestone, Maintainer, RecipeMaintainer, RecipeDistro, \
RecipeUpgrade, RecipeUpstream
class MilestoneAdmin(admin.ModelAdmin):
search_fields = ['name']
model = Milestone
class MaintainerAdmin(admin.ModelAdmin):
search_fields = ['name']
model = Maintainer
class RecipeMaintainerAdmin(admin.ModelAdmin):
search_fields = ['recipe__pn']
list_filter = ['recipe__layerbranch__layer__name', 'maintainer__name']
model = RecipeMaintainer
class RecipeDistroAdmin(admin.ModelAdmin):
search_fields = ['recipe__pn']
list_filter = ['recipe__layerbranch__layer__name', 'distro']
model = RecipeDistro
class RecipeUpgradeAdmin(admin.ModelAdmin):
search_fields = ['recipe__pn']
list_filter = ['recipe__layerbranch__layer__name',
('commit_date', DateFieldListFilter), 'maintainer__name']
model = RecipeUpgrade
class RecipeUpstreamAdmin(admin.ModelAdmin):
search_fields = ['recipe__pn']
list_filter = ['recipe__layerbranch__layer__name', 'status',
'type', ('date', DateFieldListFilter)]
model = RecipeUpstream
admin.site.register(Milestone, MilestoneAdmin)
admin.site.register(Maintainer, MaintainerAdmin)
admin.site.register(RecipeMaintainer, RecipeMaintainerAdmin)
admin.site.register(RecipeDistro, RecipeDistroAdmin)
admin.site.register(RecipeUpgrade, RecipeUpgradeAdmin)
admin.site.register(RecipeUpstream, RecipeUpstreamAdmin)

19
rrs/context_processors.py Normal file
View File

@ -0,0 +1,19 @@
# rrs-web - custom context processor
#
# Copyright (C) 2014 Intel Corporation
#
# Licensed under the MIT license, see COPYING.MIT for details
import settings
from django.contrib.sites.models import Site
def rrs_context(request):
site = Site.objects.get_current()
if site and site.name and site.name != 'example.com':
site_name = site.name
else:
site_name = 'Recipe reporting system'
return {
'site_name': site_name,
'application' : settings.APPLICATION
}

View File

@ -0,0 +1,461 @@
[
{
"pk": 0,
"model": "rrs.maintainer",
"fields": {
"name": "No Maintainer",
"email": ""
}
},
{
"pk": 1,
"model": "rrs.milestone",
"fields": {
"name": "Release 1.0",
"end_date": "2011-04-15",
"start_date": "2010-06-20"
}
},
{
"pk": 2,
"model": "rrs.milestone",
"fields": {
"name": "Release 1.0_M1",
"end_date": "2010-11-08",
"start_date": "2010-06-20"
}
},
{
"pk": 3,
"model": "rrs.milestone",
"fields": {
"name": "Release 1.0_M2",
"end_date": "2010-12-24",
"start_date": "2010-11-08"
}
},
{
"pk": 4,
"model": "rrs.milestone",
"fields": {
"name": "Release 1.0_M3",
"end_date": "2011-02-08",
"start_date": "2010-12-20"
}
},
{
"pk": 5,
"model": "rrs.milestone",
"fields": {
"name": "Release 1.0_M4",
"end_date": "2011-04-15",
"start_date": "2011-02-07"
}
},
{
"pk": 6,
"model": "rrs.milestone",
"fields": {
"name": "Release 1.1",
"end_date": "2011-10-06",
"start_date": "2011-04-18"
}
},
{
"pk": 7,
"model": "rrs.milestone",
"fields": {
"name": "Release 1.1_M1",
"end_date": "2011-06-13",
"start_date": "2011-04-18"
}
},
{
"pk": 8,
"model": "rrs.milestone",
"fields": {
"name": "Release 1.1_M2",
"end_date": "2011-07-25",
"start_date": "2011-05-30"
}
},
{
"pk": 9,
"model": "rrs.milestone",
"fields": {
"name": "Release 1.1_M3",
"end_date": "2011-08-15",
"start_date": "2011-07-11"
}
},
{
"pk": 10,
"model": "rrs.milestone",
"fields": {
"name": "Release 1.1_M4",
"end_date": "2011-10-06",
"start_date": "2011-08-15"
}
},
{
"pk": 11,
"model": "rrs.milestone",
"fields": {
"name": "Release 1.2",
"end_date": "2012-04-27",
"start_date": "2011-10-31"
}
},
{
"pk": 12,
"model": "rrs.milestone",
"fields": {
"name": "Release 1.2_M1",
"end_date": "2011-12-23",
"start_date": "2011-10-31"
}
},
{
"pk": 13,
"model": "rrs.milestone",
"fields": {
"name": "Release 1.2_M2",
"end_date": "2012-02-03",
"start_date": "2011-12-12"
}
},
{
"pk": 14,
"model": "rrs.milestone",
"fields": {
"name": "Release 1.2_M3",
"end_date": "2012-03-16",
"start_date": "2012-01-23"
}
},
{
"pk": 15,
"model": "rrs.milestone",
"fields": {
"name": "Release 1.2_M4",
"end_date": "2012-04-27",
"start_date": "2012-03-05"
}
},
{
"pk": 16,
"model": "rrs.milestone",
"fields": {
"name": "Release 1.3",
"end_date": "2012-10-26",
"start_date": "2012-05-14"
}
},
{
"pk": 17,
"model": "rrs.milestone",
"fields": {
"name": "Release 1.3_M1",
"end_date": "2012-06-29",
"start_date": "2012-05-14"
}
},
{
"pk": 18,
"model": "rrs.milestone",
"fields": {
"name": "Release 1.3_M2",
"end_date": "2012-07-27",
"start_date": "2012-06-11"
}
},
{
"pk": 19,
"model": "rrs.milestone",
"fields": {
"name": "Release 1.3_M3",
"end_date": "2012-08-24",
"start_date": "2012-07-08"
}
},
{
"pk": 20,
"model": "rrs.milestone",
"fields": {
"name": "Release 1.3_M4",
"end_date": "2012-09-21",
"start_date": "2012-08-06"
}
},
{
"pk": 21,
"model": "rrs.milestone",
"fields": {
"name": "Release 1.3_M5",
"end_date": "2012-10-26",
"start_date": "2012-09-19"
}
},
{
"pk": 22,
"model": "rrs.milestone",
"fields": {
"name": "Release 1.4",
"end_date": "2013-04-26",
"start_date": "2012-10-29"
}
},
{
"pk": 23,
"model": "rrs.milestone",
"fields": {
"name": "Release 1.4_M1",
"end_date": "2012-12-14",
"start_date": "2012-10-29"
}
},
{
"pk": 24,
"model": "rrs.milestone",
"fields": {
"name": "Release 1.4_M2",
"end_date": "2013-01-11",
"start_date": "2012-11-26"
}
},
{
"pk": 25,
"model": "rrs.milestone",
"fields": {
"name": "Release 1.4_M3",
"end_date": "2013-02-08",
"start_date": "2012-12-24"
}
},
{
"pk": 26,
"model": "rrs.milestone",
"fields": {
"name": "Release 1.4_M4",
"end_date": "2013-03-08",
"start_date": "2013-01-21"
}
},
{
"pk": 27,
"model": "rrs.milestone",
"fields": {
"name": "Release 1.4_M5",
"end_date": "2013-04-05",
"start_date": "2013-02-18"
}
},
{
"pk": 28,
"model": "rrs.milestone",
"fields": {
"name": "Release 1.4_M6",
"end_date": "2013-04-26",
"start_date": "2013-03-18"
}
},
{
"pk": 29,
"model": "rrs.milestone",
"fields": {
"name": "Release 1.5",
"end_date": "2013-10-18",
"start_date": "2013-05-06"
}
},
{
"pk": 30,
"model": "rrs.milestone",
"fields": {
"name": "Release 1.5_M1",
"end_date": "2013-06-21",
"start_date": "2013-05-06"
}
},
{
"pk": 31,
"model": "rrs.milestone",
"fields": {
"name": "Release 1.5_M2",
"end_date": "2013-07-19",
"start_date": "2013-06-03"
}
},
{
"pk": 32,
"model": "rrs.milestone",
"fields": {
"name": "Release 1.5_M3",
"end_date": "2013-08-16",
"start_date": "2013-07-01"
}
},
{
"pk": 33,
"model": "rrs.milestone",
"fields": {
"name": "Release 1.5_M4",
"end_date": "2013-09-13",
"start_date": "2013-07-29"
}
},
{
"pk": 34,
"model": "rrs.milestone",
"fields": {
"name": "Release 1.5_M5",
"end_date": "2013-10-18",
"start_date": "2013-08-26"
}
},
{
"pk": 35,
"model": "rrs.milestone",
"fields": {
"name": "Release 1.6",
"end_date": "2014-05-25",
"start_date": "2013-11-11"
}
},
{
"pk": 36,
"model": "rrs.milestone",
"fields": {
"name": "Release 1.6_M1",
"end_date": "2013-12-20",
"start_date": "2013-11-11"
}
},
{
"pk": 37,
"model": "rrs.milestone",
"fields": {
"name": "Release 1.6_M2",
"end_date": "2014-01-31",
"start_date": "2013-12-09"
}
},
{
"pk": 38,
"model": "rrs.milestone",
"fields": {
"name": "Release 1.6_M3",
"end_date": "2014-02-28",
"start_date": "2014-01-13"
}
},
{
"pk": 39,
"model": "rrs.milestone",
"fields": {
"name": "Release 1.6_M4",
"end_date": "2014-03-28",
"start_date": "2014-02-10"
}
},
{
"pk": 40,
"model": "rrs.milestone",
"fields": {
"name": "Release 1.6_M5",
"end_date": "2014-05-25",
"start_date": "2014-03-25"
}
},
{
"pk": 41,
"model": "rrs.milestone",
"fields": {
"name": "Release 1.7",
"end_date": "2014-10-31",
"start_date": "2014-05-19"
}
},
{
"pk": 42,
"model": "rrs.milestone",
"fields": {
"name": "Release 1.7_M1",
"end_date": "2014-07-11",
"start_date": "2014-05-19"
}
},
{
"pk": 43,
"model": "rrs.milestone",
"fields": {
"name": "Release 1.7_M2",
"end_date": "2014-08-15",
"start_date": "2014-06-30"
}
},
{
"pk": 44,
"model": "rrs.milestone",
"fields": {
"name": "Release 1.7_M3",
"end_date": "2014-09-19",
"start_date": "2014-08-04"
}
},
{
"pk": 45,
"model": "rrs.milestone",
"fields": {
"name": "Release 1.7_M4",
"end_date": "2014-10-31",
"start_date": "2014-09-08"
}
},
{
"pk": 46,
"model": "rrs.milestone",
"fields": {
"name": "Release 1.8",
"end_date": "2015-04-24",
"start_date": "2014-11-03"
}
},
{
"pk": 47,
"model": "rrs.milestone",
"fields": {
"name": "Release 1.8_M1",
"end_date": "2014-12-19",
"start_date": "2014-11-03"
}
},
{
"pk": 48,
"model": "rrs.milestone",
"fields": {
"name": "Release 1.8_M2",
"end_date": "2015-01-30",
"start_date": "2014-12-03"
}
},
{
"pk": 49,
"model": "rrs.milestone",
"fields": {
"name": "Release 1.8_M3",
"end_date": "2015-03-06",
"start_date": "2015-01-14"
}
},
{
"pk": 50,
"model": "rrs.milestone",
"fields": {
"name": "Release 1.8_M4",
"end_date": "2015-04-24",
"start_date": "2015-02-19"
}
}
]

View File

@ -0,0 +1,200 @@
# -*- coding: utf-8 -*-
from south.utils import datetime_utils as datetime
from south.db import db
from south.v2 import SchemaMigration
from django.db import models
class Migration(SchemaMigration):
def forwards(self, orm):
# Adding model 'Milestone'
db.create_table('rrs_milestone', (
('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', ['Milestone'])
# Adding model 'Maintainer'
db.create_table('rrs_maintainer', (
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
('name', self.gf('django.db.models.fields.CharField')(unique=True, max_length=255)),
('email', self.gf('django.db.models.fields.CharField')(max_length=255, blank=True)),
))
db.send_create_signal('rrs', ['Maintainer'])
# Adding model 'RecipeMaintainer'
db.create_table('rrs_recipemaintainer', (
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
('recipe', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['layerindex.Recipe'])),
('maintainer', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['rrs.Maintainer'])),
))
db.send_create_signal('rrs', ['RecipeMaintainer'])
# Adding model 'RecipeUpstream'
db.create_table('rrs_recipeupstream', (
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
('recipe', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['layerindex.Recipe'])),
('version', self.gf('django.db.models.fields.CharField')(max_length=100, blank=True)),
('type', self.gf('django.db.models.fields.CharField')(max_length=1, blank=True)),
('status', self.gf('django.db.models.fields.CharField')(max_length=1, blank=True)),
('no_update_reason', self.gf('django.db.models.fields.CharField')(max_length=255, blank=True)),
('date', self.gf('django.db.models.fields.DateTimeField')()),
))
db.send_create_signal('rrs', ['RecipeUpstream'])
# Adding model 'RecipeDistro'
db.create_table('rrs_recipedistro', (
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
('recipe', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['layerindex.Recipe'])),
('distro', self.gf('django.db.models.fields.CharField')(max_length=100, blank=True)),
('alias', self.gf('django.db.models.fields.CharField')(max_length=100, blank=True)),
))
db.send_create_signal('rrs', ['RecipeDistro'])
# Adding model 'RecipeUpgrade'
db.create_table('rrs_recipeupgrade', (
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
('recipe', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['layerindex.Recipe'])),
('maintainer', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['rrs.Maintainer'], null=True, blank=True)),
('sha1', self.gf('django.db.models.fields.CharField')(max_length=40, blank=True)),
('title', self.gf('django.db.models.fields.CharField')(max_length=1024, blank=True)),
('version', self.gf('django.db.models.fields.CharField')(max_length=100, blank=True)),
('author_date', self.gf('django.db.models.fields.DateTimeField')()),
('commit_date', self.gf('django.db.models.fields.DateTimeField')()),
))
db.send_create_signal('rrs', ['RecipeUpgrade'])
def backwards(self, orm):
# Deleting model 'Milestone'
db.delete_table('rrs_milestone')
# Deleting model 'Maintainer'
db.delete_table('rrs_maintainer')
# Deleting model 'RecipeMaintainer'
db.delete_table('rrs_recipemaintainer')
# Deleting model 'RecipeUpstream'
db.delete_table('rrs_recipeupstream')
# Deleting model 'RecipeDistro'
db.delete_table('rrs_recipedistro')
# Deleting model 'RecipeUpgrade'
db.delete_table('rrs_recipeupgrade')
models = {
'layerindex.branch': {
'Meta': {'object_name': 'Branch'},
'bitbake_branch': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
'short_description': ('django.db.models.fields.CharField', [], {'max_length': '50', 'blank': 'True'}),
'sort_priority': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
'updated': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now', 'auto_now': 'True', 'blank': 'True'})
},
'layerindex.layerbranch': {
'Meta': {'object_name': 'LayerBranch'},
'actual_branch': ('django.db.models.fields.CharField', [], {'max_length': '80', 'blank': 'True'}),
'branch': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['layerindex.Branch']"}),
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'layer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['layerindex.LayerItem']"}),
'updated': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
'vcs_last_commit': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
'vcs_last_fetch': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
'vcs_last_rev': ('django.db.models.fields.CharField', [], {'max_length': '80', 'blank': 'True'}),
'vcs_subdir': ('django.db.models.fields.CharField', [], {'max_length': '40', 'blank': 'True'})
},
'layerindex.layeritem': {
'Meta': {'object_name': 'LayerItem'},
'classic': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
'description': ('django.db.models.fields.TextField', [], {}),
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'index_preference': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
'layer_type': ('django.db.models.fields.CharField', [], {'max_length': '1'}),
'mailing_list_url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'}),
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '40'}),
'status': ('django.db.models.fields.CharField', [], {'default': "'N'", 'max_length': '1'}),
'summary': ('django.db.models.fields.CharField', [], {'max_length': '200'}),
'updated': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
'usage_url': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
'vcs_url': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
'vcs_web_file_base_url': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
'vcs_web_tree_base_url': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
'vcs_web_url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'})
},
'layerindex.recipe': {
'Meta': {'object_name': 'Recipe'},
'bbclassextend': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
'bugtracker': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'}),
'depends': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
'filename': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
'filepath': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
'homepage': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'}),
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'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'}),
'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'}),
'summary': ('django.db.models.fields.CharField', [], {'max_length': '200', 'blank': 'True'}),
'updated': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'})
},
'rrs.maintainer': {
'Meta': {'ordering': "['name']", 'object_name': 'Maintainer'},
'email': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
},
'rrs.milestone': {
'Meta': {'object_name': 'Milestone'},
'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', [], {})
},
'rrs.recipedistro': {
'Meta': {'object_name': 'RecipeDistro'},
'alias': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
'distro': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'recipe': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['layerindex.Recipe']"})
},
'rrs.recipemaintainer': {
'Meta': {'object_name': 'RecipeMaintainer'},
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['rrs.Maintainer']"}),
'recipe': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['layerindex.Recipe']"})
},
'rrs.recipeupgrade': {
'Meta': {'object_name': 'RecipeUpgrade'},
'author_date': ('django.db.models.fields.DateTimeField', [], {}),
'commit_date': ('django.db.models.fields.DateTimeField', [], {}),
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'maintainer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['rrs.Maintainer']", 'null': 'True', 'blank': 'True'}),
'recipe': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['layerindex.Recipe']"}),
'sha1': ('django.db.models.fields.CharField', [], {'max_length': '40', 'blank': 'True'}),
'title': ('django.db.models.fields.CharField', [], {'max_length': '1024', 'blank': 'True'}),
'version': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'})
},
'rrs.recipeupstream': {
'Meta': {'object_name': 'RecipeUpstream'},
'date': ('django.db.models.fields.DateTimeField', [], {}),
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'no_update_reason': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
'recipe': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['layerindex.Recipe']"}),
'status': ('django.db.models.fields.CharField', [], {'max_length': '1', 'blank': 'True'}),
'type': ('django.db.models.fields.CharField', [], {'max_length': '1', 'blank': 'True'}),
'version': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'})
}
}
complete_apps = ['rrs']

View File

127
rrs/models.py Normal file
View File

@ -0,0 +1,127 @@
# rrs-web - model definitions
#
# Copyright (C) 2014 Intel Corporation
#
# Licensed under the MIT license, see COPYING.MIT for details
import sys
import os
import os.path
sys.path.insert(0, os.path.realpath(os.path.join(os.path.dirname(__file__), '../')))
from datetime import date
from django.db import models
from layerindex.models import Recipe
class Milestone(models.Model):
name = models.CharField(max_length=100, unique=True)
start_date = models.DateField()
end_date = models.DateField()
""" Get current milestone """
@staticmethod
def get_current():
current = date.today()
milestone_set = Milestone.objects.filter(start_date__lte = current,
end_date__gte = current).order_by('-id')
if milestone_set:
return milestone_set[0]
else:
return Milestone.objects.filter().order_by('-id')[0]
""" Get month intervals between the start and the end of the milestone """
def get_intervals(self):
intervals = []
previous_date = self.start_date
current_date = self.start_date
while current_date < self.end_date+timedelta(days=28):
current_date += timedelta(days=1)
if current_date.month != previous_date.month:
interval_start = previous_date.replace(day=1)
interval_end = current_date.replace(day=1)
interval_end -= timedelta(days=1)
intervals.append((interval_start, interval_end))
previous_date = current_date
return intervals
def __unicode__(self):
return '%s' % (self.name)
class Maintainer(models.Model):
name = models.CharField(max_length=255, unique=True)
email = models.CharField(max_length=255, blank=True)
class Meta:
ordering = ["name"]
def __unicode__(self):
return "%s <%s>" % (self.name, self.email)
class RecipeMaintainer(models.Model):
recipe = models.ForeignKey(Recipe)
maintainer = models.ForeignKey(Maintainer)
def __unicode__(self):
return "%s: %s <%s>" % (self.recipe.pn, self.maintainer.name,
self.maintainer.email)
class RecipeUpstream(models.Model):
RECIPE_UPSTREAM_STATUS_CHOICES = (
('N', 'Not updated'),
('Y', 'Up-to-date'),
('D', 'Downgrade'),
('U', 'Unknown'),
)
RECIPE_UPSTREAM_TYPE_CHOICES = (
('A', 'Automatic'),
('M', 'Manual'),
)
recipe = models.ForeignKey(Recipe)
version = models.CharField(max_length=100, blank=True)
type = models.CharField(max_length=1, choices=RECIPE_UPSTREAM_TYPE_CHOICES, blank=True)
status = models.CharField(max_length=1, choices=RECIPE_UPSTREAM_STATUS_CHOICES, blank=True)
no_update_reason = models.CharField(max_length=255, blank=True)
date = models.DateTimeField()
def needs_upgrade(self):
if self.status == 'N':
return True
else:
return False
def __unicode__(self):
return '%s: (%s, %s, %s)' % (self.recipe.pn, self.status,
self.version, self.date)
class RecipeDistro(models.Model):
recipe = models.ForeignKey(Recipe)
distro = models.CharField(max_length=100, blank=True)
alias = models.CharField(max_length=100, blank=True)
def __unicode__(self):
return '%s: %s' % (self.recipe.pn, self.distro)
class RecipeUpgrade(models.Model):
recipe = models.ForeignKey(Recipe)
maintainer = models.ForeignKey(Maintainer, blank=True, null=True)
sha1 = models.CharField(max_length=40, blank=True)
title = models.CharField(max_length=1024, blank=True)
version = models.CharField(max_length=100, blank=True)
author_date = models.DateTimeField()
commit_date = models.DateTimeField()
def short_sha1(self):
return self.sha1[0:6]
def commit_url(self):
web_interface_url = self.recipe.layerbranch.layer.vcs_web_url
return web_interface_url + "/commit/?id=" + self.sha1
def __unicode__(self):
return '%s: (%s, %s)' % (self.recipe.pn, self.version,
self.commit_date)

4
rrs/urls.py Normal file
View File

@ -0,0 +1,4 @@
from django.conf.urls import patterns, include, url
urlpatterns = patterns('',
)