mirror of
git://git.yoctoproject.org/layerindex-web.git
synced 2025-07-19 20:59:01 +02:00
Collect BUGTRACKER, PROVIDES and BBCLASSEXTEND for each recipe
* Show BUGTRACKER in the recipe detail page if set * Track the other two variables for possible future use Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
This commit is contained in:
parent
e72a33e16a
commit
38e8791c21
2
TODO
2
TODO
|
@ -23,8 +23,6 @@ Later:
|
||||||
* Tool for finding/comparing duplicate recipes?
|
* Tool for finding/comparing duplicate recipes?
|
||||||
* Tool for editing SUMMARY/DESCRIPTION? [Paul working on this]
|
* Tool for editing SUMMARY/DESCRIPTION? [Paul working on this]
|
||||||
* Dynamic loading/filtering for recipes list
|
* Dynamic loading/filtering for recipes list
|
||||||
* Track BUGTRACKER
|
|
||||||
* Track PROVIDES and BBCLASSEXTENDS?
|
|
||||||
* Some way to notify the user when they search for something that has been renamed / replaced / deprecated?
|
* Some way to notify the user when they search for something that has been renamed / replaced / deprecated?
|
||||||
* Create simple script to check for unlisted layer subdirectories in all repos
|
* Create simple script to check for unlisted layer subdirectories in all repos
|
||||||
* Move import script to utils/ subdir
|
* Move import script to utils/ subdir
|
||||||
|
|
|
@ -0,0 +1,127 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
import datetime
|
||||||
|
from south.db import db
|
||||||
|
from south.v2 import SchemaMigration
|
||||||
|
from django.db import models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(SchemaMigration):
|
||||||
|
|
||||||
|
def forwards(self, orm):
|
||||||
|
# Adding field 'Recipe.bugtracker'
|
||||||
|
db.add_column('layerindex_recipe', 'bugtracker',
|
||||||
|
self.gf('django.db.models.fields.URLField')(default='', max_length=200, blank=True),
|
||||||
|
keep_default=False)
|
||||||
|
|
||||||
|
# Adding field 'Recipe.provides'
|
||||||
|
db.add_column('layerindex_recipe', 'provides',
|
||||||
|
self.gf('django.db.models.fields.CharField')(default='', max_length=255, blank=True),
|
||||||
|
keep_default=False)
|
||||||
|
|
||||||
|
# Adding field 'Recipe.bbclassextend'
|
||||||
|
db.add_column('layerindex_recipe', 'bbclassextend',
|
||||||
|
self.gf('django.db.models.fields.CharField')(default='', max_length=100, blank=True),
|
||||||
|
keep_default=False)
|
||||||
|
|
||||||
|
|
||||||
|
def backwards(self, orm):
|
||||||
|
# Deleting field 'Recipe.bugtracker'
|
||||||
|
db.delete_column('layerindex_recipe', 'bugtracker')
|
||||||
|
|
||||||
|
# Deleting field 'Recipe.provides'
|
||||||
|
db.delete_column('layerindex_recipe', 'provides')
|
||||||
|
|
||||||
|
# Deleting field 'Recipe.bbclassextend'
|
||||||
|
db.delete_column('layerindex_recipe', 'bbclassextend')
|
||||||
|
|
||||||
|
|
||||||
|
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'})
|
||||||
|
},
|
||||||
|
'layerindex.layerbranch': {
|
||||||
|
'Meta': {'object_name': 'LayerBranch'},
|
||||||
|
'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']"}),
|
||||||
|
'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.layerdependency': {
|
||||||
|
'Meta': {'object_name': 'LayerDependency'},
|
||||||
|
'dependency': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'dependents_set'", 'to': "orm['layerindex.LayerItem']"}),
|
||||||
|
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'layerbranch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'dependencies_set'", 'to': "orm['layerindex.LayerBranch']"})
|
||||||
|
},
|
||||||
|
'layerindex.layeritem': {
|
||||||
|
'Meta': {'object_name': 'LayerItem'},
|
||||||
|
'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'}),
|
||||||
|
'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.layermaintainer': {
|
||||||
|
'Meta': {'object_name': 'LayerMaintainer'},
|
||||||
|
'email': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||||
|
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'layerbranch': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['layerindex.LayerBranch']"}),
|
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||||
|
'responsibility': ('django.db.models.fields.CharField', [], {'max_length': '200', 'blank': 'True'}),
|
||||||
|
'status': ('django.db.models.fields.CharField', [], {'default': "'A'", 'max_length': '1'})
|
||||||
|
},
|
||||||
|
'layerindex.layernote': {
|
||||||
|
'Meta': {'object_name': 'LayerNote'},
|
||||||
|
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'layer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['layerindex.LayerItem']"}),
|
||||||
|
'text': ('django.db.models.fields.TextField', [], {})
|
||||||
|
},
|
||||||
|
'layerindex.machine': {
|
||||||
|
'Meta': {'object_name': 'Machine'},
|
||||||
|
'description': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||||
|
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'layerbranch': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['layerindex.LayerBranch']"}),
|
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'})
|
||||||
|
},
|
||||||
|
'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'}),
|
||||||
|
'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'}),
|
||||||
|
'summary': ('django.db.models.fields.CharField', [], {'max_length': '200', 'blank': 'True'})
|
||||||
|
},
|
||||||
|
'layerindex.recipefiledependency': {
|
||||||
|
'Meta': {'object_name': 'RecipeFileDependency'},
|
||||||
|
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'layerbranch': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'to': "orm['layerindex.LayerBranch']"}),
|
||||||
|
'path': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
|
||||||
|
'recipe': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['layerindex.Recipe']"})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
complete_apps = ['layerindex']
|
|
@ -8,6 +8,7 @@ from django.db import models
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from django.contrib.auth.models import User
|
from django.contrib.auth.models import User
|
||||||
from django.core.urlresolvers import reverse
|
from django.core.urlresolvers import reverse
|
||||||
|
from django.core.validators import URLValidator
|
||||||
import os.path
|
import os.path
|
||||||
import re
|
import re
|
||||||
import posixpath
|
import posixpath
|
||||||
|
@ -219,6 +220,9 @@ class Recipe(models.Model):
|
||||||
section = models.CharField(max_length=100, blank=True)
|
section = models.CharField(max_length=100, blank=True)
|
||||||
license = models.CharField(max_length=100, blank=True)
|
license = models.CharField(max_length=100, blank=True)
|
||||||
homepage = models.URLField(blank=True)
|
homepage = models.URLField(blank=True)
|
||||||
|
bugtracker = models.URLField(blank=True)
|
||||||
|
provides = models.CharField(max_length=255, blank=True)
|
||||||
|
bbclassextend = models.CharField(max_length=100, blank=True)
|
||||||
|
|
||||||
def vcs_web_url(self):
|
def vcs_web_url(self):
|
||||||
url = self.layerbranch.file_url(os.path.join(self.filepath, self.filename))
|
url = self.layerbranch.file_url(os.path.join(self.filepath, self.filename))
|
||||||
|
|
|
@ -89,6 +89,9 @@ def update_recipe_file(data, path, recipe, layerdir_start, repodir):
|
||||||
recipe.section = envdata.getVar("SECTION", True)
|
recipe.section = envdata.getVar("SECTION", True)
|
||||||
recipe.license = envdata.getVar("LICENSE", True)
|
recipe.license = envdata.getVar("LICENSE", True)
|
||||||
recipe.homepage = envdata.getVar("HOMEPAGE", True)
|
recipe.homepage = envdata.getVar("HOMEPAGE", True)
|
||||||
|
recipe.bugtracker = envdata.getVar("BUGTRACKER", True) or ""
|
||||||
|
recipe.provides = envdata.getVar("PROVIDES", True) or ""
|
||||||
|
recipe.bbclassextend = envdata.getVar("BBCLASSEXTEND", True) or ""
|
||||||
recipe.save()
|
recipe.save()
|
||||||
|
|
||||||
# Get file dependencies within this layer
|
# Get file dependencies within this layer
|
||||||
|
|
|
@ -68,6 +68,12 @@
|
||||||
<th>Homepage</th>
|
<th>Homepage</th>
|
||||||
<td>{% if recipe.homepage %}<a href="{{ recipe.homepage }}">{{ recipe.homepage }}</a>{% endif %}</td>
|
<td>{% if recipe.homepage %}<a href="{{ recipe.homepage }}">{{ recipe.homepage }}</a>{% endif %}</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
{% if recipe.bugtracker %}
|
||||||
|
<tr>
|
||||||
|
<th>Bug tracker</th>
|
||||||
|
<td><a href="{{ recipe.bugtracker }}">{{ recipe.bugtracker }}</a></td>
|
||||||
|
</tr>
|
||||||
|
{% endif %}
|
||||||
<tr>
|
<tr>
|
||||||
<th>Recipe file</th>
|
<th>Recipe file</th>
|
||||||
<td>
|
<td>
|
||||||
|
|
Loading…
Reference in New Issue
Block a user