[yocto] [[PATCH][error-report-web] 8/8] Post/{models, views}.py: Add FAILURE field on BuildFailure model
Aníbal Limón
anibal.limon at linux.intel.com
Mon Jun 13 16:32:16 PDT 2016
In order to support filters using django Paginator adds a FAILURE
field by default contains "RECIPE: TASK" when ERROR_TYPE is Recipe
instead contains only "TASK".
[YOCTO #7583]
Signed-off-by: Aníbal Limón <anibal.limon at linux.intel.com>
---
Post/migrations/0006_buildfailure_failure.py | 28 ++++++++++++++++++++++++++++
Post/models.py | 1 +
Post/parser.py | 6 +++++-
Post/views.py | 1 +
templates/latest-errors.html | 5 +----
5 files changed, 36 insertions(+), 5 deletions(-)
create mode 100644 Post/migrations/0006_buildfailure_failure.py
diff --git a/Post/migrations/0006_buildfailure_failure.py b/Post/migrations/0006_buildfailure_failure.py
new file mode 100644
index 0000000..b3e30bf
--- /dev/null
+++ b/Post/migrations/0006_buildfailure_failure.py
@@ -0,0 +1,28 @@
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+def populate_failure(apps, schema_editor):
+ model = apps.get_model("Post", "BuildFailure")
+ for build_failure in model.objects.all():
+ if build_failure.BUILD.ERROR_TYPE == "Recipe":
+ build_failure.FAILURE = "%s: %s" \
+ (build_failure.RECIPE, build_failure.TASK)
+ else:
+ build_failure.FAILURE = build_failure.TASK
+ build_failure.save()
+
+class Migration(migrations.Migration):
+ dependencies = [
+ ('Post', '0005_build_error_type'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='buildfailure',
+ name='FAILURE',
+ field=models.CharField(max_length=1024, blank=True),
+ ),
+ migrations.RunPython(populate_failure)
+ ]
diff --git a/Post/models.py b/Post/models.py
index bec2abd..07694fe 100644
--- a/Post/models.py
+++ b/Post/models.py
@@ -50,6 +50,7 @@ class BuildFailure(models.Model):
ERROR_DETAILS = models.TextField(max_length=int(settings.MAX_UPLOAD_SIZE))
BUILD = models.ForeignKey(Build)
LEV_DISTANCE = models.IntegerField(blank=True, null=True)
+ FAILURE = models.CharField(max_length=1024, blank=True)
def get_similar_fails(self):
if self.LEV_DISTANCE is None:
diff --git a/Post/parser.py b/Post/parser.py
index 295870f..2ef35c1 100644
--- a/Post/parser.py
+++ b/Post/parser.py
@@ -92,7 +92,11 @@ class Parser:
recipe = package
recipe_version = "unknown"
- f = BuildFailure(TASK = str(fail['task']), RECIPE = recipe, RECIPE_VERSION = recipe_version, ERROR_DETAILS = fail['log'].encode('utf-8'), BUILD = b)
+ if b.ERROR_TYPE = "Recipe":
+ failure = "%s: %s" % (recipe, str(fail['task']))
+ else:
+ failure = str(fail['task'])
+ f = BuildFailure(TASK = str(fail['task']), RECIPE = recipe, RECIPE_VERSION = recipe_version, ERROR_DETAILS = fail['log'].encode('utf-8'), BUILD = b, FAILURE = failure)
f.save()
diff --git a/Post/views.py b/Post/views.py
index 6b57977..41f0e2b 100644
--- a/Post/views.py
+++ b/Post/views.py
@@ -141,6 +141,7 @@ def search(request, mode=results_mode.LATEST, **kwargs):
},
{'name': 'Failure',
'clclass': 'failure',
+ 'field' : 'FAILURE',
'disable_toggle' : True,
},
{'name': 'Machine',
diff --git a/templates/latest-errors.html b/templates/latest-errors.html
index 77a54af..a4418b5 100644
--- a/templates/latest-errors.html
+++ b/templates/latest-errors.html
@@ -136,10 +136,7 @@
<td class="failure">
<a href="{{details_url}}">
- {% if build_fail.BUILD.ERROR_TYPE == "Recipe" %}
- {{ build_fail.RECIPE }}:
- {% endif %}
- {{ build_fail.TASK }}</a>
+ {{ build_fail.FAILURE }}</a>
</td>
<td class="machine"><a href="{{details_url}}">{{ build_fail.BUILD.MACHINE }}</a>
--
2.1.4
More information about the yocto
mailing list