On 06/14/2016 08:30 AM, Michael Wood wrote: > On 14/06/16 00:32, Aníbal Limón wrote: >> In order to support other errors not only Recipe ones adds >> a ERROR_TYPE field to the Build model defaults to "Recipe". >> >> Add a class for store BuildErrorType currently supported >> Recipe, Core, Bitbake selftest and OE selftest. >> >> [YOCTO #7583] >> >> Signed-off-by: Aníbal Limón >> --- >> Post/migrations/0005_build_error_type.py | 19 +++++++++++++++++++ >> Post/models.py | 7 +++++++ >> 2 files changed, 26 insertions(+) >> create mode 100644 Post/migrations/0005_build_error_type.py >> >> diff --git a/Post/migrations/0005_build_error_type.py >> b/Post/migrations/0005_build_error_type.py >> new file mode 100644 >> index 0000000..96cdf8c >> --- /dev/null >> +++ b/Post/migrations/0005_build_error_type.py >> @@ -0,0 +1,19 @@ >> +# -*- coding: utf-8 -*- >> +from __future__ import unicode_literals >> + >> +from django.db import migrations, models >> + >> + >> +class Migration(migrations.Migration): >> + >> + dependencies = [ >> + ('Post', '0004_auto_20160530_1126'), >> + ] >> + >> + operations = [ >> + migrations.AddField( >> + model_name='build', >> + name='ERROR_TYPE', >> + field=models.CharField(default=b'Recipe', max_length=64), >> + ), >> + ] >> diff --git a/Post/models.py b/Post/models.py >> index 84f8abf..f8d9916 100644 >> --- a/Post/models.py >> +++ b/Post/models.py >> @@ -11,6 +11,12 @@ from datetime import datetime >> import Levenshtein >> +class BuildErrorType(object): >> + RECIPE = "Recipe" >> + BITBAKE_CORE = "Core" >> + BITBAKE_SELFTEST = "Bitbake selftest" >> + OE_SELFTEST = "OE selftest" >> + >> # Create your models here. >> class Build(models.Model): >> DATE = models.DateTimeField('Submit date', blank=True, null=True) >> @@ -25,6 +31,7 @@ class Build(models.Model): >> NAME = models.CharField(max_length=50) >> EMAIL = models.CharField(max_length=50) >> LINK_BACK = models.TextField(max_length=300, blank=True, null=True) >> + ERROR_TYPE = models.CharField(max_length=64, >> default=BuildErrorType.RECIPE) >> class BuildFailure(models.Model): >> TASK = models.CharField(max_length=1024) > > Thanks for the patches. > > Ideally we wouldn't use a char field here as if the type string ever > changed the database could end up with multiple versions of the type > strings depending on when the type was saved, it would be possible to > handle that with migrations but it would be pretty messy. It also allows > any arbitrary chars which we probably don't want if it's something we're > going to be filtering on. Here is an example from Toaster on how it can > be done with the choices option and an enum style. > > |OUTCOME_NA = -1 OUTCOME_SUCCESS = 0 OUTCOME_COVERED = 1 OUTCOME_CACHED > = 2 OUTCOME_PREBUILT = 3 OUTCOME_FAILED = 4 OUTCOME_EMPTY = 5 > TASK_OUTCOME = ( (OUTCOME_NA, 'Not Available'), (OUTCOME_SUCCESS, > 'Succeeded'), (OUTCOME_COVERED, 'Covered'), (OUTCOME_CACHED, 'Cached'), > (OUTCOME_PREBUILT, 'Prebuilt'), (OUTCOME_FAILED, 'Failed'), > (OUTCOME_EMPTY, 'Empty'), ) ||outcome = > models.IntegerField(choices=TASK_OUTCOME, default=OUTCOME_NA)| > Thanks for the feedback, i'll change to use choices instead of char values. alimon > > > Michael >