summaryrefslogtreecommitdiffstats
path: root/bitbake
diff options
context:
space:
mode:
authorDavid Reyna <David.Reyna@windriver.com>2020-03-25 21:24:55 -0700
committerRichard Purdie <richard.purdie@linuxfoundation.org>2020-03-29 20:02:36 +0100
commit4dabdbe11ddc47a885c7f8cc6b3f26439d40d77c (patch)
tree1cfd3f48830d5688e65c283c181767d74a951358 /bitbake
parent7e252ef31094f760b5666aec9b2205166a8ccbd2 (diff)
downloadpoky-4dabdbe11ddc47a885c7f8cc6b3f26439d40d77c.tar.gz
bitbake: toaster: migrate to Django-2.2
Toaster migration to Django-2.2. Django-1.x has been deprecated. [YOCTO #13207] (Bitbake rev: 9730f95686b2ac72cf1fa513c555f7c7787e2667) Signed-off-by: David Reyna <David.Reyna@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake')
-rw-r--r--bitbake/lib/toaster/bldcollector/views.py2
-rw-r--r--bitbake/lib/toaster/bldcontrol/migrations/0001_initial.py18
-rw-r--r--bitbake/lib/toaster/bldcontrol/models.py18
-rw-r--r--bitbake/lib/toaster/orm/migrations/0001_initial.py100
-rw-r--r--bitbake/lib/toaster/orm/migrations/0002_customimagerecipe.py6
-rw-r--r--bitbake/lib/toaster/orm/migrations/0003_customimagepackage.py2
-rw-r--r--bitbake/lib/toaster/orm/migrations/0004_provides.py4
-rw-r--r--bitbake/lib/toaster/orm/migrations/0008_refactor_artifact_models.py4
-rw-r--r--bitbake/lib/toaster/orm/migrations/0012_use_release_instead_of_up_branch.py2
-rw-r--r--bitbake/lib/toaster/orm/migrations/0017_distro_clone.py2
-rw-r--r--bitbake/lib/toaster/orm/migrations/0019_django_2_2.py23
-rw-r--r--bitbake/lib/toaster/orm/models.py98
-rw-r--r--bitbake/lib/toaster/tests/browser/test_all_builds_page.py2
-rw-r--r--bitbake/lib/toaster/tests/browser/test_all_projects_page.py2
-rw-r--r--bitbake/lib/toaster/tests/browser/test_builddashboard_page.py2
-rw-r--r--bitbake/lib/toaster/tests/browser/test_builddashboard_page_artifacts.py2
-rw-r--r--bitbake/lib/toaster/tests/browser/test_builddashboard_page_recipes.py2
-rw-r--r--bitbake/lib/toaster/tests/browser/test_builddashboard_page_tasks.py2
-rw-r--r--bitbake/lib/toaster/tests/browser/test_js_unit_tests.py2
-rw-r--r--bitbake/lib/toaster/tests/browser/test_landing_page.py2
-rw-r--r--bitbake/lib/toaster/tests/browser/test_layerdetails_page.py2
-rw-r--r--bitbake/lib/toaster/tests/browser/test_most_recent_builds_states.py2
-rw-r--r--bitbake/lib/toaster/tests/browser/test_new_custom_image_page.py2
-rw-r--r--bitbake/lib/toaster/tests/browser/test_new_project_page.py2
-rw-r--r--bitbake/lib/toaster/tests/browser/test_project_builds_page.py2
-rw-r--r--bitbake/lib/toaster/tests/browser/test_project_config_page.py5
-rw-r--r--bitbake/lib/toaster/tests/browser/test_project_page.py2
-rw-r--r--bitbake/lib/toaster/tests/browser/test_sample.py2
-rw-r--r--bitbake/lib/toaster/tests/browser/test_task_page.py2
-rw-r--r--bitbake/lib/toaster/tests/browser/test_toastertable_ui.py2
-rw-r--r--bitbake/lib/toaster/tests/views/test_views.py2
-rw-r--r--bitbake/lib/toaster/toastergui/api.py2
-rw-r--r--bitbake/lib/toaster/toastergui/templatetags/project_url_tag.py2
-rw-r--r--bitbake/lib/toaster/toastergui/templatetags/projecttags.py4
-rw-r--r--bitbake/lib/toaster/toastergui/typeaheads.py2
-rw-r--r--bitbake/lib/toaster/toastergui/views.py16
-rw-r--r--bitbake/lib/toaster/toastergui/widgets.py2
-rw-r--r--bitbake/lib/toaster/toastermain/management/commands/buildimport.py2
-rw-r--r--bitbake/lib/toaster/toastermain/settings.py17
-rw-r--r--bitbake/lib/toaster/toastermain/urls.py4
40 files changed, 197 insertions, 174 deletions
diff --git a/bitbake/lib/toaster/bldcollector/views.py b/bitbake/lib/toaster/bldcollector/views.py
index 6d9227cd7f..04cd8b3dd4 100644
--- a/bitbake/lib/toaster/bldcollector/views.py
+++ b/bitbake/lib/toaster/bldcollector/views.py
@@ -6,7 +6,7 @@
6# SPDX-License-Identifier: GPL-2.0-only 6# SPDX-License-Identifier: GPL-2.0-only
7# 7#
8 8
9from django.core.urlresolvers import reverse 9from django.urls import reverse
10from django.http import HttpResponseBadRequest, HttpResponse 10from django.http import HttpResponseBadRequest, HttpResponse
11import os 11import os
12import tempfile 12import tempfile
diff --git a/bitbake/lib/toaster/bldcontrol/migrations/0001_initial.py b/bitbake/lib/toaster/bldcontrol/migrations/0001_initial.py
index 67db378561..7ee19f4745 100644
--- a/bitbake/lib/toaster/bldcontrol/migrations/0001_initial.py
+++ b/bitbake/lib/toaster/bldcontrol/migrations/0001_initial.py
@@ -37,7 +37,7 @@ class Migration(migrations.Migration):
37 ('giturl', models.CharField(max_length=254)), 37 ('giturl', models.CharField(max_length=254)),
38 ('commit', models.CharField(max_length=254)), 38 ('commit', models.CharField(max_length=254)),
39 ('dirpath', models.CharField(max_length=254)), 39 ('dirpath', models.CharField(max_length=254)),
40 ('layer_version', models.ForeignKey(to='orm.Layer_Version', null=True)), 40 ('layer_version', models.ForeignKey(to='orm.Layer_Version', null=True, on_delete=models.CASCADE)),
41 ], 41 ],
42 ), 42 ),
43 migrations.CreateModel( 43 migrations.CreateModel(
@@ -80,34 +80,34 @@ class Migration(migrations.Migration):
80 ('state', models.IntegerField(default=0, choices=[(0, b'created'), (1, b'queued'), (2, b'in progress'), (3, b'completed'), (4, b'failed'), (5, b'deleted'), (6, b'archive')])), 80 ('state', models.IntegerField(default=0, choices=[(0, b'created'), (1, b'queued'), (2, b'in progress'), (3, b'completed'), (4, b'failed'), (5, b'deleted'), (6, b'archive')])),
81 ('created', models.DateTimeField(auto_now_add=True)), 81 ('created', models.DateTimeField(auto_now_add=True)),
82 ('updated', models.DateTimeField(auto_now=True)), 82 ('updated', models.DateTimeField(auto_now=True)),
83 ('build', models.OneToOneField(null=True, to='orm.Build')), 83 ('build', models.OneToOneField(null=True, to='orm.Build', on_delete=models.CASCADE)),
84 ('environment', models.ForeignKey(to='bldcontrol.BuildEnvironment', null=True)), 84 ('environment', models.ForeignKey(to='bldcontrol.BuildEnvironment', null=True, on_delete=models.CASCADE)),
85 ('project', models.ForeignKey(to='orm.Project')), 85 ('project', models.ForeignKey(to='orm.Project', on_delete=models.CASCADE)),
86 ], 86 ],
87 ), 87 ),
88 migrations.AddField( 88 migrations.AddField(
89 model_name='brvariable', 89 model_name='brvariable',
90 name='req', 90 name='req',
91 field=models.ForeignKey(to='bldcontrol.BuildRequest'), 91 field=models.ForeignKey(to='bldcontrol.BuildRequest', on_delete=models.CASCADE),
92 ), 92 ),
93 migrations.AddField( 93 migrations.AddField(
94 model_name='brtarget', 94 model_name='brtarget',
95 name='req', 95 name='req',
96 field=models.ForeignKey(to='bldcontrol.BuildRequest'), 96 field=models.ForeignKey(to='bldcontrol.BuildRequest', on_delete=models.CASCADE),
97 ), 97 ),
98 migrations.AddField( 98 migrations.AddField(
99 model_name='brlayer', 99 model_name='brlayer',
100 name='req', 100 name='req',
101 field=models.ForeignKey(to='bldcontrol.BuildRequest'), 101 field=models.ForeignKey(to='bldcontrol.BuildRequest', on_delete=models.CASCADE),
102 ), 102 ),
103 migrations.AddField( 103 migrations.AddField(
104 model_name='brerror', 104 model_name='brerror',
105 name='req', 105 name='req',
106 field=models.ForeignKey(to='bldcontrol.BuildRequest'), 106 field=models.ForeignKey(to='bldcontrol.BuildRequest', on_delete=models.CASCADE),
107 ), 107 ),
108 migrations.AddField( 108 migrations.AddField(
109 model_name='brbitbake', 109 model_name='brbitbake',
110 name='req', 110 name='req',
111 field=models.OneToOneField(to='bldcontrol.BuildRequest'), 111 field=models.OneToOneField(to='bldcontrol.BuildRequest', on_delete=models.CASCADE),
112 ), 112 ),
113 ] 113 ]
diff --git a/bitbake/lib/toaster/bldcontrol/models.py b/bitbake/lib/toaster/bldcontrol/models.py
index 0d30fd9be0..c2f302da24 100644
--- a/bitbake/lib/toaster/bldcontrol/models.py
+++ b/bitbake/lib/toaster/bldcontrol/models.py
@@ -85,9 +85,9 @@ class BuildRequest(models.Model):
85 85
86 search_allowed_fields = ("brtarget__target", "build__project__name") 86 search_allowed_fields = ("brtarget__target", "build__project__name")
87 87
88 project = models.ForeignKey(Project) 88 project = models.ForeignKey(Project, on_delete=models.CASCADE)
89 build = models.OneToOneField(Build, null = True) # TODO: toasterui should set this when Build is created 89 build = models.OneToOneField(Build, on_delete=models.CASCADE, null = True) # TODO: toasterui should set this when Build is created
90 environment = models.ForeignKey(BuildEnvironment, null = True) 90 environment = models.ForeignKey(BuildEnvironment, on_delete=models.CASCADE, null = True)
91 state = models.IntegerField(choices = REQUEST_STATE, default = REQ_CREATED) 91 state = models.IntegerField(choices = REQUEST_STATE, default = REQ_CREATED)
92 created = models.DateTimeField(auto_now_add = True) 92 created = models.DateTimeField(auto_now_add = True)
93 updated = models.DateTimeField(auto_now = True) 93 updated = models.DateTimeField(auto_now = True)
@@ -131,32 +131,32 @@ class BuildRequest(models.Model):
131 131
132 132
133class BRLayer(models.Model): 133class BRLayer(models.Model):
134 req = models.ForeignKey(BuildRequest) 134 req = models.ForeignKey(BuildRequest, on_delete=models.CASCADE)
135 name = models.CharField(max_length=100) 135 name = models.CharField(max_length=100)
136 giturl = models.CharField(max_length=254, null=True) 136 giturl = models.CharField(max_length=254, null=True)
137 local_source_dir = models.CharField(max_length=254, null=True) 137 local_source_dir = models.CharField(max_length=254, null=True)
138 commit = models.CharField(max_length=254, null=True) 138 commit = models.CharField(max_length=254, null=True)
139 dirpath = models.CharField(max_length=254, null=True) 139 dirpath = models.CharField(max_length=254, null=True)
140 layer_version = models.ForeignKey(Layer_Version, null=True) 140 layer_version = models.ForeignKey(Layer_Version, on_delete=models.CASCADE, null=True)
141 141
142class BRBitbake(models.Model): 142class BRBitbake(models.Model):
143 req = models.OneToOneField(BuildRequest) # only one bitbake for a request 143 req = models.OneToOneField(BuildRequest, on_delete=models.CASCADE) # only one bitbake for a request
144 giturl = models.CharField(max_length =254) 144 giturl = models.CharField(max_length =254)
145 commit = models.CharField(max_length = 254) 145 commit = models.CharField(max_length = 254)
146 dirpath = models.CharField(max_length = 254) 146 dirpath = models.CharField(max_length = 254)
147 147
148class BRVariable(models.Model): 148class BRVariable(models.Model):
149 req = models.ForeignKey(BuildRequest) 149 req = models.ForeignKey(BuildRequest, on_delete=models.CASCADE)
150 name = models.CharField(max_length=100) 150 name = models.CharField(max_length=100)
151 value = models.TextField(blank = True) 151 value = models.TextField(blank = True)
152 152
153class BRTarget(models.Model): 153class BRTarget(models.Model):
154 req = models.ForeignKey(BuildRequest) 154 req = models.ForeignKey(BuildRequest, on_delete=models.CASCADE)
155 target = models.CharField(max_length=100) 155 target = models.CharField(max_length=100)
156 task = models.CharField(max_length=100, null=True) 156 task = models.CharField(max_length=100, null=True)
157 157
158class BRError(models.Model): 158class BRError(models.Model):
159 req = models.ForeignKey(BuildRequest) 159 req = models.ForeignKey(BuildRequest, on_delete=models.CASCADE)
160 errtype = models.CharField(max_length=100) 160 errtype = models.CharField(max_length=100)
161 errmsg = models.TextField() 161 errmsg = models.TextField()
162 traceback = models.TextField() 162 traceback = models.TextField()
diff --git a/bitbake/lib/toaster/orm/migrations/0001_initial.py b/bitbake/lib/toaster/orm/migrations/0001_initial.py
index 760462f6b4..a8ac23bfc7 100644
--- a/bitbake/lib/toaster/orm/migrations/0001_initial.py
+++ b/bitbake/lib/toaster/orm/migrations/0001_initial.py
@@ -54,7 +54,7 @@ class Migration(migrations.Migration):
54 ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), 54 ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
55 ('file_name', models.FilePathField()), 55 ('file_name', models.FilePathField()),
56 ('file_size', models.IntegerField()), 56 ('file_size', models.IntegerField()),
57 ('build', models.ForeignKey(to='orm.Build')), 57 ('build', models.ForeignKey(to='orm.Build', on_delete=models.CASCADE)),
58 ], 58 ],
59 ), 59 ),
60 migrations.CreateModel( 60 migrations.CreateModel(
@@ -64,7 +64,7 @@ class Migration(migrations.Migration):
64 ('area', models.IntegerField(choices=[(0, b'variable')])), 64 ('area', models.IntegerField(choices=[(0, b'variable')])),
65 ('key', models.CharField(max_length=100)), 65 ('key', models.CharField(max_length=100)),
66 ('text', models.TextField()), 66 ('text', models.TextField()),
67 ('build', models.ForeignKey(related_name='helptext_build', to='orm.Build')), 67 ('build', models.ForeignKey(related_name='helptext_build', to='orm.Build', on_delete=models.CASCADE)),
68 ], 68 ],
69 ), 69 ),
70 migrations.CreateModel( 70 migrations.CreateModel(
@@ -94,8 +94,8 @@ class Migration(migrations.Migration):
94 ('dirpath', models.CharField(default=None, max_length=255, null=True)), 94 ('dirpath', models.CharField(default=None, max_length=255, null=True)),
95 ('priority', models.IntegerField(default=0)), 95 ('priority', models.IntegerField(default=0)),
96 ('local_path', models.FilePathField(default=b'/', max_length=1024)), 96 ('local_path', models.FilePathField(default=b'/', max_length=1024)),
97 ('build', models.ForeignKey(related_name='layer_version_build', default=None, to='orm.Build', null=True)), 97 ('build', models.ForeignKey(related_name='layer_version_build', default=None, to='orm.Build', null=True, on_delete=models.CASCADE)),
98 ('layer', models.ForeignKey(related_name='layer_version_layer', to='orm.Layer')), 98 ('layer', models.ForeignKey(related_name='layer_version_layer', to='orm.Layer', on_delete=models.CASCADE)),
99 ], 99 ],
100 ), 100 ),
101 migrations.CreateModel( 101 migrations.CreateModel(
@@ -112,9 +112,9 @@ class Migration(migrations.Migration):
112 fields=[ 112 fields=[
113 ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), 113 ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
114 ('up_id', models.IntegerField(default=None, null=True)), 114 ('up_id', models.IntegerField(default=None, null=True)),
115 ('depends_on', models.ForeignKey(related_name='dependees', to='orm.Layer_Version')), 115 ('depends_on', models.ForeignKey(related_name='dependees', to='orm.Layer_Version', on_delete=models.CASCADE)),
116 ('layer_source', models.ForeignKey(default=None, to='orm.LayerSource', null=True)), 116 ('layer_source', models.ForeignKey(default=None, to='orm.LayerSource', null=True, on_delete=models.CASCADE)),
117 ('layer_version', models.ForeignKey(related_name='dependencies', to='orm.Layer_Version')), 117 ('layer_version', models.ForeignKey(related_name='dependencies', to='orm.Layer_Version', on_delete=models.CASCADE)),
118 ], 118 ],
119 ), 119 ),
120 migrations.CreateModel( 120 migrations.CreateModel(
@@ -125,7 +125,7 @@ class Migration(migrations.Migration):
125 ('message', models.TextField(null=True, blank=True)), 125 ('message', models.TextField(null=True, blank=True)),
126 ('pathname', models.FilePathField(max_length=255, blank=True)), 126 ('pathname', models.FilePathField(max_length=255, blank=True)),
127 ('lineno', models.IntegerField(null=True)), 127 ('lineno', models.IntegerField(null=True)),
128 ('build', models.ForeignKey(to='orm.Build')), 128 ('build', models.ForeignKey(to='orm.Build', on_delete=models.CASCADE)),
129 ], 129 ],
130 ), 130 ),
131 migrations.CreateModel( 131 migrations.CreateModel(
@@ -136,8 +136,8 @@ class Migration(migrations.Migration):
136 ('up_date', models.DateTimeField(default=None, null=True)), 136 ('up_date', models.DateTimeField(default=None, null=True)),
137 ('name', models.CharField(max_length=255)), 137 ('name', models.CharField(max_length=255)),
138 ('description', models.CharField(max_length=255)), 138 ('description', models.CharField(max_length=255)),
139 ('layer_source', models.ForeignKey(default=None, to='orm.LayerSource', null=True)), 139 ('layer_source', models.ForeignKey(default=None, to='orm.LayerSource', null=True, on_delete=models.CASCADE)),
140 ('layer_version', models.ForeignKey(to='orm.Layer_Version')), 140 ('layer_version', models.ForeignKey(to='orm.Layer_Version', on_delete=models.CASCADE)),
141 ], 141 ],
142 ), 142 ),
143 migrations.CreateModel( 143 migrations.CreateModel(
@@ -154,7 +154,7 @@ class Migration(migrations.Migration):
154 ('installed_size', models.IntegerField(default=0)), 154 ('installed_size', models.IntegerField(default=0)),
155 ('section', models.CharField(max_length=80, blank=True)), 155 ('section', models.CharField(max_length=80, blank=True)),
156 ('license', models.CharField(max_length=80, blank=True)), 156 ('license', models.CharField(max_length=80, blank=True)),
157 ('build', models.ForeignKey(to='orm.Build', null=True)), 157 ('build', models.ForeignKey(to='orm.Build', null=True, on_delete=models.CASCADE)),
158 ], 158 ],
159 ), 159 ),
160 migrations.CreateModel( 160 migrations.CreateModel(
@@ -162,8 +162,8 @@ class Migration(migrations.Migration):
162 fields=[ 162 fields=[
163 ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), 163 ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
164 ('dep_type', models.IntegerField(choices=[(0, b'depends'), (1, b'depends'), (3, b'recommends'), (2, b'recommends'), (4, b'suggests'), (5, b'provides'), (6, b'replaces'), (7, b'conflicts')])), 164 ('dep_type', models.IntegerField(choices=[(0, b'depends'), (1, b'depends'), (3, b'recommends'), (2, b'recommends'), (4, b'suggests'), (5, b'provides'), (6, b'replaces'), (7, b'conflicts')])),
165 ('depends_on', models.ForeignKey(related_name='package_dependencies_target', to='orm.Package')), 165 ('depends_on', models.ForeignKey(related_name='package_dependencies_target', to='orm.Package', on_delete=models.CASCADE)),
166 ('package', models.ForeignKey(related_name='package_dependencies_source', to='orm.Package')), 166 ('package', models.ForeignKey(related_name='package_dependencies_source', to='orm.Package', on_delete=models.CASCADE)),
167 ], 167 ],
168 ), 168 ),
169 migrations.CreateModel( 169 migrations.CreateModel(
@@ -172,7 +172,7 @@ class Migration(migrations.Migration):
172 ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), 172 ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
173 ('path', models.FilePathField(max_length=255, blank=True)), 173 ('path', models.FilePathField(max_length=255, blank=True)),
174 ('size', models.IntegerField()), 174 ('size', models.IntegerField()),
175 ('package', models.ForeignKey(related_name='buildfilelist_package', to='orm.Package')), 175 ('package', models.ForeignKey(related_name='buildfilelist_package', to='orm.Package', on_delete=models.CASCADE)),
176 ], 176 ],
177 ), 177 ),
178 migrations.CreateModel( 178 migrations.CreateModel(
@@ -185,7 +185,7 @@ class Migration(migrations.Migration):
185 ('updated', models.DateTimeField(auto_now=True)), 185 ('updated', models.DateTimeField(auto_now=True)),
186 ('user_id', models.IntegerField(null=True)), 186 ('user_id', models.IntegerField(null=True)),
187 ('is_default', models.BooleanField(default=False)), 187 ('is_default', models.BooleanField(default=False)),
188 ('bitbake_version', models.ForeignKey(to='orm.BitbakeVersion', null=True)), 188 ('bitbake_version', models.ForeignKey(to='orm.BitbakeVersion', null=True, on_delete=models.CASCADE)),
189 ], 189 ],
190 ), 190 ),
191 migrations.CreateModel( 191 migrations.CreateModel(
@@ -193,8 +193,8 @@ class Migration(migrations.Migration):
193 fields=[ 193 fields=[
194 ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), 194 ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
195 ('optional', models.BooleanField(default=True)), 195 ('optional', models.BooleanField(default=True)),
196 ('layercommit', models.ForeignKey(to='orm.Layer_Version', null=True)), 196 ('layercommit', models.ForeignKey(to='orm.Layer_Version', null=True, on_delete=models.CASCADE)),
197 ('project', models.ForeignKey(to='orm.Project')), 197 ('project', models.ForeignKey(to='orm.Project', on_delete=models.CASCADE)),
198 ], 198 ],
199 ), 199 ),
200 migrations.CreateModel( 200 migrations.CreateModel(
@@ -203,7 +203,7 @@ class Migration(migrations.Migration):
203 ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), 203 ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
204 ('target', models.CharField(max_length=100)), 204 ('target', models.CharField(max_length=100)),
205 ('task', models.CharField(max_length=100, null=True)), 205 ('task', models.CharField(max_length=100, null=True)),
206 ('project', models.ForeignKey(to='orm.Project')), 206 ('project', models.ForeignKey(to='orm.Project', on_delete=models.CASCADE)),
207 ], 207 ],
208 ), 208 ),
209 migrations.CreateModel( 209 migrations.CreateModel(
@@ -212,7 +212,7 @@ class Migration(migrations.Migration):
212 ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), 212 ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
213 ('name', models.CharField(max_length=100)), 213 ('name', models.CharField(max_length=100)),
214 ('value', models.TextField(blank=True)), 214 ('value', models.TextField(blank=True)),
215 ('project', models.ForeignKey(to='orm.Project')), 215 ('project', models.ForeignKey(to='orm.Project', on_delete=models.CASCADE)),
216 ], 216 ],
217 ), 217 ),
218 migrations.CreateModel( 218 migrations.CreateModel(
@@ -232,8 +232,8 @@ class Migration(migrations.Migration):
232 ('file_path', models.FilePathField(max_length=255)), 232 ('file_path', models.FilePathField(max_length=255)),
233 ('pathflags', models.CharField(max_length=200, blank=True)), 233 ('pathflags', models.CharField(max_length=200, blank=True)),
234 ('is_image', models.BooleanField(default=False)), 234 ('is_image', models.BooleanField(default=False)),
235 ('layer_source', models.ForeignKey(default=None, to='orm.LayerSource', null=True)), 235 ('layer_source', models.ForeignKey(default=None, to='orm.LayerSource', null=True, on_delete=models.CASCADE)),
236 ('layer_version', models.ForeignKey(related_name='recipe_layer_version', to='orm.Layer_Version')), 236 ('layer_version', models.ForeignKey(related_name='recipe_layer_version', to='orm.Layer_Version', on_delete=models.CASCADE)),
237 ], 237 ],
238 ), 238 ),
239 migrations.CreateModel( 239 migrations.CreateModel(
@@ -241,8 +241,8 @@ class Migration(migrations.Migration):
241 fields=[ 241 fields=[
242 ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), 242 ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
243 ('dep_type', models.IntegerField(choices=[(0, b'depends'), (1, b'rdepends')])), 243 ('dep_type', models.IntegerField(choices=[(0, b'depends'), (1, b'rdepends')])),
244 ('depends_on', models.ForeignKey(related_name='r_dependencies_depends', to='orm.Recipe')), 244 ('depends_on', models.ForeignKey(related_name='r_dependencies_depends', to='orm.Recipe', on_delete=models.CASCADE)),
245 ('recipe', models.ForeignKey(related_name='r_dependencies_recipe', to='orm.Recipe')), 245 ('recipe', models.ForeignKey(related_name='r_dependencies_recipe', to='orm.Recipe', on_delete=models.CASCADE)),
246 ], 246 ],
247 ), 247 ),
248 migrations.CreateModel( 248 migrations.CreateModel(
@@ -253,7 +253,7 @@ class Migration(migrations.Migration):
253 ('description', models.CharField(max_length=255)), 253 ('description', models.CharField(max_length=255)),
254 ('branch_name', models.CharField(default=b'', max_length=50)), 254 ('branch_name', models.CharField(default=b'', max_length=50)),
255 ('helptext', models.TextField(null=True)), 255 ('helptext', models.TextField(null=True)),
256 ('bitbake_version', models.ForeignKey(to='orm.BitbakeVersion')), 256 ('bitbake_version', models.ForeignKey(to='orm.BitbakeVersion', on_delete=models.CASCADE)),
257 ], 257 ],
258 ), 258 ),
259 migrations.CreateModel( 259 migrations.CreateModel(
@@ -261,7 +261,7 @@ class Migration(migrations.Migration):
261 fields=[ 261 fields=[
262 ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), 262 ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
263 ('layer_name', models.CharField(default=b'', max_length=100)), 263 ('layer_name', models.CharField(default=b'', max_length=100)),
264 ('release', models.ForeignKey(to='orm.Release')), 264 ('release', models.ForeignKey(to='orm.Release', on_delete=models.CASCADE)),
265 ], 265 ],
266 ), 266 ),
267 migrations.CreateModel( 267 migrations.CreateModel(
@@ -269,8 +269,8 @@ class Migration(migrations.Migration):
269 fields=[ 269 fields=[
270 ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), 270 ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
271 ('priority', models.IntegerField(default=0)), 271 ('priority', models.IntegerField(default=0)),
272 ('layer_source', models.ForeignKey(to='orm.LayerSource')), 272 ('layer_source', models.ForeignKey(to='orm.LayerSource', on_delete=models.CASCADE)),
273 ('release', models.ForeignKey(to='orm.Release')), 273 ('release', models.ForeignKey(to='orm.Release', on_delete=models.CASCADE)),
274 ], 274 ],
275 ), 275 ),
276 migrations.CreateModel( 276 migrations.CreateModel(
@@ -282,7 +282,7 @@ class Migration(migrations.Migration):
282 ('is_image', models.BooleanField(default=False)), 282 ('is_image', models.BooleanField(default=False)),
283 ('image_size', models.IntegerField(default=0)), 283 ('image_size', models.IntegerField(default=0)),
284 ('license_manifest_path', models.CharField(max_length=500, null=True)), 284 ('license_manifest_path', models.CharField(max_length=500, null=True)),
285 ('build', models.ForeignKey(to='orm.Build')), 285 ('build', models.ForeignKey(to='orm.Build', on_delete=models.CASCADE)),
286 ], 286 ],
287 ), 287 ),
288 migrations.CreateModel( 288 migrations.CreateModel(
@@ -295,9 +295,9 @@ class Migration(migrations.Migration):
295 ('permission', models.CharField(max_length=16)), 295 ('permission', models.CharField(max_length=16)),
296 ('owner', models.CharField(max_length=128)), 296 ('owner', models.CharField(max_length=128)),
297 ('group', models.CharField(max_length=128)), 297 ('group', models.CharField(max_length=128)),
298 ('directory', models.ForeignKey(related_name='directory_set', to='orm.Target_File', null=True)), 298 ('directory', models.ForeignKey(related_name='directory_set', to='orm.Target_File', null=True, on_delete=models.CASCADE)),
299 ('sym_target', models.ForeignKey(related_name='symlink_set', to='orm.Target_File', null=True)), 299 ('sym_target', models.ForeignKey(related_name='symlink_set', to='orm.Target_File', null=True, on_delete=models.CASCADE)),
300 ('target', models.ForeignKey(to='orm.Target')), 300 ('target', models.ForeignKey(to='orm.Target', on_delete=models.CASCADE)),
301 ], 301 ],
302 ), 302 ),
303 migrations.CreateModel( 303 migrations.CreateModel(
@@ -306,15 +306,15 @@ class Migration(migrations.Migration):
306 ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), 306 ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
307 ('file_name', models.FilePathField(max_length=254)), 307 ('file_name', models.FilePathField(max_length=254)),
308 ('file_size', models.IntegerField()), 308 ('file_size', models.IntegerField()),
309 ('target', models.ForeignKey(to='orm.Target')), 309 ('target', models.ForeignKey(to='orm.Target', on_delete=models.CASCADE)),
310 ], 310 ],
311 ), 311 ),
312 migrations.CreateModel( 312 migrations.CreateModel(
313 name='Target_Installed_Package', 313 name='Target_Installed_Package',
314 fields=[ 314 fields=[
315 ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), 315 ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
316 ('package', models.ForeignKey(related_name='buildtargetlist_package', to='orm.Package')), 316 ('package', models.ForeignKey(related_name='buildtargetlist_package', to='orm.Package', on_delete=models.CASCADE)),
317 ('target', models.ForeignKey(to='orm.Target')), 317 ('target', models.ForeignKey(to='orm.Target', on_delete=models.CASCADE)),
318 ], 318 ],
319 ), 319 ),
320 migrations.CreateModel( 320 migrations.CreateModel(
@@ -337,8 +337,8 @@ class Migration(migrations.Migration):
337 ('sstate_result', models.IntegerField(default=0, choices=[(0, b'Not Applicable'), (1, b'File not in cache'), (2, b'Failed'), (3, b'Succeeded')])), 337 ('sstate_result', models.IntegerField(default=0, choices=[(0, b'Not Applicable'), (1, b'File not in cache'), (2, b'Failed'), (3, b'Succeeded')])),
338 ('message', models.CharField(max_length=240)), 338 ('message', models.CharField(max_length=240)),
339 ('logfile', models.FilePathField(max_length=255, blank=True)), 339 ('logfile', models.FilePathField(max_length=255, blank=True)),
340 ('build', models.ForeignKey(related_name='task_build', to='orm.Build')), 340 ('build', models.ForeignKey(related_name='task_build', to='orm.Build', on_delete=models.CASCADE)),
341 ('recipe', models.ForeignKey(related_name='tasks', to='orm.Recipe')), 341 ('recipe', models.ForeignKey(related_name='tasks', to='orm.Recipe', on_delete=models.CASCADE)),
342 ], 342 ],
343 options={ 343 options={
344 'ordering': ('order', 'recipe'), 344 'ordering': ('order', 'recipe'),
@@ -348,8 +348,8 @@ class Migration(migrations.Migration):
348 name='Task_Dependency', 348 name='Task_Dependency',
349 fields=[ 349 fields=[
350 ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), 350 ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
351 ('depends_on', models.ForeignKey(related_name='task_dependencies_depends', to='orm.Task')), 351 ('depends_on', models.ForeignKey(related_name='task_dependencies_depends', to='orm.Task', on_delete=models.CASCADE)),
352 ('task', models.ForeignKey(related_name='task_dependencies_task', to='orm.Task')), 352 ('task', models.ForeignKey(related_name='task_dependencies_task', to='orm.Task', on_delete=models.CASCADE)),
353 ], 353 ],
354 ), 354 ),
355 migrations.CreateModel( 355 migrations.CreateModel(
@@ -370,7 +370,7 @@ class Migration(migrations.Migration):
370 ('changed', models.BooleanField(default=False)), 370 ('changed', models.BooleanField(default=False)),
371 ('human_readable_name', models.CharField(max_length=200)), 371 ('human_readable_name', models.CharField(max_length=200)),
372 ('description', models.TextField(blank=True)), 372 ('description', models.TextField(blank=True)),
373 ('build', models.ForeignKey(related_name='variable_build', to='orm.Build')), 373 ('build', models.ForeignKey(related_name='variable_build', to='orm.Build', on_delete=models.CASCADE)),
374 ], 374 ],
375 ), 375 ),
376 migrations.CreateModel( 376 migrations.CreateModel(
@@ -381,28 +381,28 @@ class Migration(migrations.Migration):
381 ('file_name', models.FilePathField(max_length=255)), 381 ('file_name', models.FilePathField(max_length=255)),
382 ('line_number', models.IntegerField(null=True)), 382 ('line_number', models.IntegerField(null=True)),
383 ('operation', models.CharField(max_length=64)), 383 ('operation', models.CharField(max_length=64)),
384 ('variable', models.ForeignKey(related_name='vhistory', to='orm.Variable')), 384 ('variable', models.ForeignKey(related_name='vhistory', to='orm.Variable', on_delete=models.CASCADE)),
385 ], 385 ],
386 ), 386 ),
387 migrations.AddField( 387 migrations.AddField(
388 model_name='project', 388 model_name='project',
389 name='release', 389 name='release',
390 field=models.ForeignKey(to='orm.Release', null=True), 390 field=models.ForeignKey(to='orm.Release', null=True, on_delete=models.CASCADE),
391 ), 391 ),
392 migrations.AddField( 392 migrations.AddField(
393 model_name='package_dependency', 393 model_name='package_dependency',
394 name='target', 394 name='target',
395 field=models.ForeignKey(to='orm.Target', null=True), 395 field=models.ForeignKey(to='orm.Target', null=True, on_delete=models.CASCADE),
396 ), 396 ),
397 migrations.AddField( 397 migrations.AddField(
398 model_name='package', 398 model_name='package',
399 name='recipe', 399 name='recipe',
400 field=models.ForeignKey(to='orm.Recipe', null=True), 400 field=models.ForeignKey(to='orm.Recipe', null=True, on_delete=models.CASCADE),
401 ), 401 ),
402 migrations.AddField( 402 migrations.AddField(
403 model_name='logmessage', 403 model_name='logmessage',
404 name='task', 404 name='task',
405 field=models.ForeignKey(blank=True, to='orm.Task', null=True), 405 field=models.ForeignKey(blank=True, to='orm.Task', null=True, on_delete=models.CASCADE),
406 ), 406 ),
407 migrations.AlterUniqueTogether( 407 migrations.AlterUniqueTogether(
408 name='layersource', 408 name='layersource',
@@ -411,32 +411,32 @@ class Migration(migrations.Migration):
411 migrations.AddField( 411 migrations.AddField(
412 model_name='layer_version', 412 model_name='layer_version',
413 name='layer_source', 413 name='layer_source',
414 field=models.ForeignKey(default=None, to='orm.LayerSource', null=True), 414 field=models.ForeignKey(default=None, to='orm.LayerSource', null=True, on_delete=models.CASCADE),
415 ), 415 ),
416 migrations.AddField( 416 migrations.AddField(
417 model_name='layer_version', 417 model_name='layer_version',
418 name='project', 418 name='project',
419 field=models.ForeignKey(default=None, to='orm.Project', null=True), 419 field=models.ForeignKey(default=None, to='orm.Project', null=True, on_delete=models.CASCADE),
420 ), 420 ),
421 migrations.AddField( 421 migrations.AddField(
422 model_name='layer_version', 422 model_name='layer_version',
423 name='up_branch', 423 name='up_branch',
424 field=models.ForeignKey(default=None, to='orm.Branch', null=True), 424 field=models.ForeignKey(default=None, to='orm.Branch', null=True, on_delete=models.CASCADE),
425 ), 425 ),
426 migrations.AddField( 426 migrations.AddField(
427 model_name='layer', 427 model_name='layer',
428 name='layer_source', 428 name='layer_source',
429 field=models.ForeignKey(default=None, to='orm.LayerSource', null=True), 429 field=models.ForeignKey(default=None, to='orm.LayerSource', null=True, on_delete=models.CASCADE),
430 ), 430 ),
431 migrations.AddField( 431 migrations.AddField(
432 model_name='build', 432 model_name='build',
433 name='project', 433 name='project',
434 field=models.ForeignKey(to='orm.Project'), 434 field=models.ForeignKey(to='orm.Project', on_delete=models.CASCADE),
435 ), 435 ),
436 migrations.AddField( 436 migrations.AddField(
437 model_name='branch', 437 model_name='branch',
438 name='layer_source', 438 name='layer_source',
439 field=models.ForeignKey(default=True, to='orm.LayerSource', null=True), 439 field=models.ForeignKey(default=True, to='orm.LayerSource', null=True, on_delete=models.CASCADE),
440 ), 440 ),
441 migrations.CreateModel( 441 migrations.CreateModel(
442 name='ImportedLayerSource', 442 name='ImportedLayerSource',
diff --git a/bitbake/lib/toaster/orm/migrations/0002_customimagerecipe.py b/bitbake/lib/toaster/orm/migrations/0002_customimagerecipe.py
index 9cec82e8d4..09c2bffa28 100644
--- a/bitbake/lib/toaster/orm/migrations/0002_customimagerecipe.py
+++ b/bitbake/lib/toaster/orm/migrations/0002_customimagerecipe.py
@@ -14,10 +14,10 @@ class Migration(migrations.Migration):
14 migrations.CreateModel( 14 migrations.CreateModel(
15 name='CustomImageRecipe', 15 name='CustomImageRecipe',
16 fields=[ 16 fields=[
17 ('recipe_ptr', models.OneToOneField(parent_link=True, auto_created=True, primary_key=True, serialize=False, to='orm.Recipe')), 17 ('recipe_ptr', models.OneToOneField(parent_link=True, auto_created=True, primary_key=True, serialize=False, to='orm.Recipe', on_delete=models.CASCADE)),
18 ('last_updated', models.DateTimeField(default=None, null=True)), 18 ('last_updated', models.DateTimeField(default=None, null=True)),
19 ('base_recipe', models.ForeignKey(related_name='based_on_recipe', to='orm.Recipe')), 19 ('base_recipe', models.ForeignKey(related_name='based_on_recipe', to='orm.Recipe', on_delete=models.CASCADE)),
20 ('project', models.ForeignKey(to='orm.Project')), 20 ('project', models.ForeignKey(to='orm.Project', on_delete=models.CASCADE)),
21 ], 21 ],
22 bases=('orm.recipe',), 22 bases=('orm.recipe',),
23 ), 23 ),
diff --git a/bitbake/lib/toaster/orm/migrations/0003_customimagepackage.py b/bitbake/lib/toaster/orm/migrations/0003_customimagepackage.py
index b027f66137..8cb81d7b5e 100644
--- a/bitbake/lib/toaster/orm/migrations/0003_customimagepackage.py
+++ b/bitbake/lib/toaster/orm/migrations/0003_customimagepackage.py
@@ -14,7 +14,7 @@ class Migration(migrations.Migration):
14 migrations.CreateModel( 14 migrations.CreateModel(
15 name='CustomImagePackage', 15 name='CustomImagePackage',
16 fields=[ 16 fields=[
17 ('package_ptr', models.OneToOneField(parent_link=True, auto_created=True, primary_key=True, serialize=False, to='orm.Package')), 17 ('package_ptr', models.OneToOneField(parent_link=True, auto_created=True, primary_key=True, serialize=False, to='orm.Package', on_delete=models.CASCADE)),
18 ('recipe_appends', models.ManyToManyField(related_name='appends_set', to='orm.CustomImageRecipe')), 18 ('recipe_appends', models.ManyToManyField(related_name='appends_set', to='orm.CustomImageRecipe')),
19 ('recipe_excludes', models.ManyToManyField(related_name='excludes_set', to='orm.CustomImageRecipe')), 19 ('recipe_excludes', models.ManyToManyField(related_name='excludes_set', to='orm.CustomImageRecipe')),
20 ('recipe_includes', models.ManyToManyField(related_name='includes_set', to='orm.CustomImageRecipe')), 20 ('recipe_includes', models.ManyToManyField(related_name='includes_set', to='orm.CustomImageRecipe')),
diff --git a/bitbake/lib/toaster/orm/migrations/0004_provides.py b/bitbake/lib/toaster/orm/migrations/0004_provides.py
index dfde2d1361..8449604989 100644
--- a/bitbake/lib/toaster/orm/migrations/0004_provides.py
+++ b/bitbake/lib/toaster/orm/migrations/0004_provides.py
@@ -16,12 +16,12 @@ class Migration(migrations.Migration):
16 fields=[ 16 fields=[
17 ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), 17 ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
18 ('name', models.CharField(max_length=100)), 18 ('name', models.CharField(max_length=100)),
19 ('recipe', models.ForeignKey(to='orm.Recipe')), 19 ('recipe', models.ForeignKey(to='orm.Recipe', on_delete=models.CASCADE)),
20 ], 20 ],
21 ), 21 ),
22 migrations.AddField( 22 migrations.AddField(
23 model_name='recipe_dependency', 23 model_name='recipe_dependency',
24 name='via', 24 name='via',
25 field=models.ForeignKey(null=True, default=None, to='orm.Provides'), 25 field=models.ForeignKey(null=True, default=None, to='orm.Provides', on_delete=models.CASCADE),
26 ), 26 ),
27 ] 27 ]
diff --git a/bitbake/lib/toaster/orm/migrations/0008_refactor_artifact_models.py b/bitbake/lib/toaster/orm/migrations/0008_refactor_artifact_models.py
index 3367582a81..41a547a60e 100644
--- a/bitbake/lib/toaster/orm/migrations/0008_refactor_artifact_models.py
+++ b/bitbake/lib/toaster/orm/migrations/0008_refactor_artifact_models.py
@@ -17,7 +17,7 @@ class Migration(migrations.Migration):
17 ('id', models.AutoField(auto_created=True, primary_key=True, verbose_name='ID', serialize=False)), 17 ('id', models.AutoField(auto_created=True, primary_key=True, verbose_name='ID', serialize=False)),
18 ('file_name', models.FilePathField()), 18 ('file_name', models.FilePathField()),
19 ('file_size', models.IntegerField()), 19 ('file_size', models.IntegerField()),
20 ('target', models.ForeignKey(to='orm.Target')), 20 ('target', models.ForeignKey(to='orm.Target', on_delete=models.CASCADE)),
21 ], 21 ],
22 ), 22 ),
23 migrations.CreateModel( 23 migrations.CreateModel(
@@ -26,7 +26,7 @@ class Migration(migrations.Migration):
26 ('id', models.AutoField(auto_created=True, primary_key=True, verbose_name='ID', serialize=False)), 26 ('id', models.AutoField(auto_created=True, primary_key=True, verbose_name='ID', serialize=False)),
27 ('file_name', models.FilePathField()), 27 ('file_name', models.FilePathField()),
28 ('file_size', models.IntegerField()), 28 ('file_size', models.IntegerField()),
29 ('target', models.ForeignKey(to='orm.Target')), 29 ('target', models.ForeignKey(to='orm.Target', on_delete=models.CASCADE)),
30 ], 30 ],
31 ), 31 ),
32 migrations.RemoveField( 32 migrations.RemoveField(
diff --git a/bitbake/lib/toaster/orm/migrations/0012_use_release_instead_of_up_branch.py b/bitbake/lib/toaster/orm/migrations/0012_use_release_instead_of_up_branch.py
index 0e6bb83311..4b96bf0969 100644
--- a/bitbake/lib/toaster/orm/migrations/0012_use_release_instead_of_up_branch.py
+++ b/bitbake/lib/toaster/orm/migrations/0012_use_release_instead_of_up_branch.py
@@ -46,7 +46,7 @@ class Migration(migrations.Migration):
46 migrations.AddField( 46 migrations.AddField(
47 model_name='layer_version', 47 model_name='layer_version',
48 name='release', 48 name='release',
49 field=models.ForeignKey(to='orm.Release', default=None, null=True), 49 field=models.ForeignKey(to='orm.Release', default=None, null=True, on_delete=models.CASCADE),
50 ), 50 ),
51 migrations.RunPython(branch_to_release, 51 migrations.RunPython(branch_to_release,
52 reverse_code=migrations.RunPython.noop), 52 reverse_code=migrations.RunPython.noop),
diff --git a/bitbake/lib/toaster/orm/migrations/0017_distro_clone.py b/bitbake/lib/toaster/orm/migrations/0017_distro_clone.py
index d3c5901275..731c0debd2 100644
--- a/bitbake/lib/toaster/orm/migrations/0017_distro_clone.py
+++ b/bitbake/lib/toaster/orm/migrations/0017_distro_clone.py
@@ -18,7 +18,7 @@ class Migration(migrations.Migration):
18 ('up_date', models.DateTimeField(default=None, null=True)), 18 ('up_date', models.DateTimeField(default=None, null=True)),
19 ('name', models.CharField(max_length=255)), 19 ('name', models.CharField(max_length=255)),
20 ('description', models.CharField(max_length=255)), 20 ('description', models.CharField(max_length=255)),
21 ('layer_version', models.ForeignKey(to='orm.Layer_Version')), 21 ('layer_version', models.ForeignKey(to='orm.Layer_Version', on_delete=models.CASCADE)),
22 ], 22 ],
23 ), 23 ),
24 ] 24 ]
diff --git a/bitbake/lib/toaster/orm/migrations/0019_django_2_2.py b/bitbake/lib/toaster/orm/migrations/0019_django_2_2.py
new file mode 100644
index 0000000000..666aef18be
--- /dev/null
+++ b/bitbake/lib/toaster/orm/migrations/0019_django_2_2.py
@@ -0,0 +1,23 @@
1# Generated by Django 2.2.7 on 2019-11-19 03:38
2
3from django.db import migrations, models
4import django.db.models.deletion
5
6
7class Migration(migrations.Migration):
8
9 dependencies = [
10 ('orm', '0018_project_specific'),
11 ]
12
13 operations = [
14 migrations.RemoveField(
15 model_name='distro',
16 name='up_id',
17 ),
18 migrations.AlterField(
19 model_name='build',
20 name='recipes_parsed',
21 field=models.IntegerField(default=1),
22 ),
23 ]
diff --git a/bitbake/lib/toaster/orm/models.py b/bitbake/lib/toaster/orm/models.py
index caf069721a..7f7e922ade 100644
--- a/bitbake/lib/toaster/orm/models.py
+++ b/bitbake/lib/toaster/orm/models.py
@@ -13,7 +13,7 @@ from django.db.models import F, Q, Sum, Count
13from django.utils import timezone 13from django.utils import timezone
14from django.utils.encoding import force_bytes 14from django.utils.encoding import force_bytes
15 15
16from django.core.urlresolvers import reverse 16from django.urls import reverse
17 17
18from django.core import validators 18from django.core import validators
19from django.conf import settings 19from django.conf import settings
@@ -178,8 +178,8 @@ class Project(models.Model):
178 'release__branch_name'] 178 'release__branch_name']
179 name = models.CharField(max_length=100) 179 name = models.CharField(max_length=100)
180 short_description = models.CharField(max_length=50, blank=True) 180 short_description = models.CharField(max_length=50, blank=True)
181 bitbake_version = models.ForeignKey('BitbakeVersion', null=True) 181 bitbake_version = models.ForeignKey('BitbakeVersion', on_delete=models.CASCADE, null=True)
182 release = models.ForeignKey("Release", null=True) 182 release = models.ForeignKey("Release", on_delete=models.CASCADE, null=True)
183 created = models.DateTimeField(auto_now_add=True) 183 created = models.DateTimeField(auto_now_add=True)
184 updated = models.DateTimeField(auto_now=True) 184 updated = models.DateTimeField(auto_now=True)
185 # This is a horrible hack; since Toaster has no "User" model available when 185 # This is a horrible hack; since Toaster has no "User" model available when
@@ -469,7 +469,7 @@ class Build(models.Model):
469 469
470 search_allowed_fields = ['machine', 'cooker_log_path', "target__target", "target__target_image_file__file_name"] 470 search_allowed_fields = ['machine', 'cooker_log_path', "target__target", "target__target_image_file__file_name"]
471 471
472 project = models.ForeignKey(Project) # must have a project 472 project = models.ForeignKey(Project, on_delete=models.CASCADE) # must have a project
473 machine = models.CharField(max_length=100) 473 machine = models.CharField(max_length=100)
474 distro = models.CharField(max_length=100) 474 distro = models.CharField(max_length=100)
475 distro_version = models.CharField(max_length=100) 475 distro_version = models.CharField(max_length=100)
@@ -777,13 +777,13 @@ class Build(models.Model):
777 return "%d %s %s" % (self.id, self.project, ",".join([t.target for t in self.target_set.all()])) 777 return "%d %s %s" % (self.id, self.project, ",".join([t.target for t in self.target_set.all()]))
778 778
779class ProjectTarget(models.Model): 779class ProjectTarget(models.Model):
780 project = models.ForeignKey(Project) 780 project = models.ForeignKey(Project, on_delete=models.CASCADE)
781 target = models.CharField(max_length=100) 781 target = models.CharField(max_length=100)
782 task = models.CharField(max_length=100, null=True) 782 task = models.CharField(max_length=100, null=True)
783 783
784class Target(models.Model): 784class Target(models.Model):
785 search_allowed_fields = ['target', 'file_name'] 785 search_allowed_fields = ['target', 'file_name']
786 build = models.ForeignKey(Build) 786 build = models.ForeignKey(Build, on_delete=models.CASCADE)
787 target = models.CharField(max_length=100) 787 target = models.CharField(max_length=100)
788 task = models.CharField(max_length=100, null=True) 788 task = models.CharField(max_length=100, null=True)
789 is_image = models.BooleanField(default = False) 789 is_image = models.BooleanField(default = False)
@@ -944,7 +944,7 @@ class Target(models.Model):
944 944
945# kernel artifacts for a target: bzImage and modules* 945# kernel artifacts for a target: bzImage and modules*
946class TargetKernelFile(models.Model): 946class TargetKernelFile(models.Model):
947 target = models.ForeignKey(Target) 947 target = models.ForeignKey(Target, on_delete=models.CASCADE)
948 file_name = models.FilePathField() 948 file_name = models.FilePathField()
949 file_size = models.IntegerField() 949 file_size = models.IntegerField()
950 950
@@ -954,7 +954,7 @@ class TargetKernelFile(models.Model):
954 954
955# SDK artifacts for a target: sh and manifest files 955# SDK artifacts for a target: sh and manifest files
956class TargetSDKFile(models.Model): 956class TargetSDKFile(models.Model):
957 target = models.ForeignKey(Target) 957 target = models.ForeignKey(Target, on_delete=models.CASCADE)
958 file_name = models.FilePathField() 958 file_name = models.FilePathField()
959 file_size = models.IntegerField() 959 file_size = models.IntegerField()
960 960
@@ -973,7 +973,7 @@ class Target_Image_File(models.Model):
973 'ubifs', 'wic', 'wic.bz2', 'wic.gz', 'wic.lzma' 973 'ubifs', 'wic', 'wic.bz2', 'wic.gz', 'wic.lzma'
974 } 974 }
975 975
976 target = models.ForeignKey(Target) 976 target = models.ForeignKey(Target, on_delete=models.CASCADE)
977 file_name = models.FilePathField(max_length=254) 977 file_name = models.FilePathField(max_length=254)
978 file_size = models.IntegerField() 978 file_size = models.IntegerField()
979 979
@@ -1007,15 +1007,15 @@ class Target_File(models.Model):
1007 ( ITYPE_BLOCK ,'block'), 1007 ( ITYPE_BLOCK ,'block'),
1008 ) 1008 )
1009 1009
1010 target = models.ForeignKey(Target) 1010 target = models.ForeignKey(Target, on_delete=models.CASCADE)
1011 path = models.FilePathField() 1011 path = models.FilePathField()
1012 size = models.IntegerField() 1012 size = models.IntegerField()
1013 inodetype = models.IntegerField(choices = ITYPES) 1013 inodetype = models.IntegerField(choices = ITYPES)
1014 permission = models.CharField(max_length=16) 1014 permission = models.CharField(max_length=16)
1015 owner = models.CharField(max_length=128) 1015 owner = models.CharField(max_length=128)
1016 group = models.CharField(max_length=128) 1016 group = models.CharField(max_length=128)
1017 directory = models.ForeignKey('Target_File', related_name="directory_set", null=True) 1017 directory = models.ForeignKey('Target_File', on_delete=models.CASCADE, related_name="directory_set", null=True)
1018 sym_target = models.ForeignKey('Target_File', related_name="symlink_set", null=True) 1018 sym_target = models.ForeignKey('Target_File', on_delete=models.CASCADE, related_name="symlink_set", null=True)
1019 1019
1020 1020
1021class Task(models.Model): 1021class Task(models.Model):
@@ -1102,13 +1102,13 @@ class Task(models.Model):
1102 def get_description(self): 1102 def get_description(self):
1103 return self._helptext 1103 return self._helptext
1104 1104
1105 build = models.ForeignKey(Build, related_name='task_build') 1105 build = models.ForeignKey(Build, on_delete=models.CASCADE, related_name='task_build')
1106 order = models.IntegerField(null=True) 1106 order = models.IntegerField(null=True)
1107 task_executed = models.BooleanField(default=False) # True means Executed, False means Not/Executed 1107 task_executed = models.BooleanField(default=False) # True means Executed, False means Not/Executed
1108 outcome = models.IntegerField(choices=TASK_OUTCOME, default=OUTCOME_NA) 1108 outcome = models.IntegerField(choices=TASK_OUTCOME, default=OUTCOME_NA)
1109 sstate_checksum = models.CharField(max_length=100, blank=True) 1109 sstate_checksum = models.CharField(max_length=100, blank=True)
1110 path_to_sstate_obj = models.FilePathField(max_length=500, blank=True) 1110 path_to_sstate_obj = models.FilePathField(max_length=500, blank=True)
1111 recipe = models.ForeignKey('Recipe', related_name='tasks') 1111 recipe = models.ForeignKey('Recipe', on_delete=models.CASCADE, related_name='tasks')
1112 task_name = models.CharField(max_length=100) 1112 task_name = models.CharField(max_length=100)
1113 source_url = models.FilePathField(max_length=255, blank=True) 1113 source_url = models.FilePathField(max_length=255, blank=True)
1114 work_directory = models.FilePathField(max_length=255, blank=True) 1114 work_directory = models.FilePathField(max_length=255, blank=True)
@@ -1147,13 +1147,13 @@ class Task(models.Model):
1147 1147
1148 1148
1149class Task_Dependency(models.Model): 1149class Task_Dependency(models.Model):
1150 task = models.ForeignKey(Task, related_name='task_dependencies_task') 1150 task = models.ForeignKey(Task, on_delete=models.CASCADE, related_name='task_dependencies_task')
1151 depends_on = models.ForeignKey(Task, related_name='task_dependencies_depends') 1151 depends_on = models.ForeignKey(Task, on_delete=models.CASCADE, related_name='task_dependencies_depends')
1152 1152
1153class Package(models.Model): 1153class Package(models.Model):
1154 search_allowed_fields = ['name', 'version', 'revision', 'recipe__name', 'recipe__version', 'recipe__license', 'recipe__layer_version__layer__name', 'recipe__layer_version__branch', 'recipe__layer_version__commit', 'recipe__layer_version__local_path', 'installed_name'] 1154 search_allowed_fields = ['name', 'version', 'revision', 'recipe__name', 'recipe__version', 'recipe__license', 'recipe__layer_version__layer__name', 'recipe__layer_version__branch', 'recipe__layer_version__commit', 'recipe__layer_version__local_path', 'installed_name']
1155 build = models.ForeignKey('Build', null=True) 1155 build = models.ForeignKey('Build', on_delete=models.CASCADE, null=True)
1156 recipe = models.ForeignKey('Recipe', null=True) 1156 recipe = models.ForeignKey('Recipe', on_delete=models.CASCADE, null=True)
1157 name = models.CharField(max_length=100) 1157 name = models.CharField(max_length=100)
1158 installed_name = models.CharField(max_length=100, default='') 1158 installed_name = models.CharField(max_length=100, default='')
1159 version = models.CharField(max_length=100, blank=True) 1159 version = models.CharField(max_length=100, blank=True)
@@ -1289,19 +1289,19 @@ class Package_Dependency(models.Model):
1289 TYPE_RCONFLICTS : ("conflicts", "%s conflicts with %s, which will not be installed if this package is not first removed"), 1289 TYPE_RCONFLICTS : ("conflicts", "%s conflicts with %s, which will not be installed if this package is not first removed"),
1290 } 1290 }
1291 1291
1292 package = models.ForeignKey(Package, related_name='package_dependencies_source') 1292 package = models.ForeignKey(Package, on_delete=models.CASCADE, related_name='package_dependencies_source')
1293 depends_on = models.ForeignKey(Package, related_name='package_dependencies_target') # soft dependency 1293 depends_on = models.ForeignKey(Package, on_delete=models.CASCADE, related_name='package_dependencies_target') # soft dependency
1294 dep_type = models.IntegerField(choices=DEPENDS_TYPE) 1294 dep_type = models.IntegerField(choices=DEPENDS_TYPE)
1295 target = models.ForeignKey(Target, null=True) 1295 target = models.ForeignKey(Target, on_delete=models.CASCADE, null=True)
1296 objects = Package_DependencyManager() 1296 objects = Package_DependencyManager()
1297 1297
1298class Target_Installed_Package(models.Model): 1298class Target_Installed_Package(models.Model):
1299 target = models.ForeignKey(Target) 1299 target = models.ForeignKey(Target, on_delete=models.CASCADE)
1300 package = models.ForeignKey(Package, related_name='buildtargetlist_package') 1300 package = models.ForeignKey(Package, on_delete=models.CASCADE, related_name='buildtargetlist_package')
1301 1301
1302 1302
1303class Package_File(models.Model): 1303class Package_File(models.Model):
1304 package = models.ForeignKey(Package, related_name='buildfilelist_package') 1304 package = models.ForeignKey(Package, on_delete=models.CASCADE, related_name='buildfilelist_package')
1305 path = models.FilePathField(max_length=255, blank=True) 1305 path = models.FilePathField(max_length=255, blank=True)
1306 size = models.IntegerField() 1306 size = models.IntegerField()
1307 1307
@@ -1318,7 +1318,7 @@ class Recipe(models.Model):
1318 1318
1319 name = models.CharField(max_length=100, blank=True) 1319 name = models.CharField(max_length=100, blank=True)
1320 version = models.CharField(max_length=100, blank=True) 1320 version = models.CharField(max_length=100, blank=True)
1321 layer_version = models.ForeignKey('Layer_Version', 1321 layer_version = models.ForeignKey('Layer_Version', on_delete=models.CASCADE,
1322 related_name='recipe_layer_version') 1322 related_name='recipe_layer_version')
1323 summary = models.TextField(blank=True) 1323 summary = models.TextField(blank=True)
1324 description = models.TextField(blank=True) 1324 description = models.TextField(blank=True)
@@ -1356,7 +1356,7 @@ class Recipe_DependencyManager(models.Manager):
1356 1356
1357class Provides(models.Model): 1357class Provides(models.Model):
1358 name = models.CharField(max_length=100) 1358 name = models.CharField(max_length=100)
1359 recipe = models.ForeignKey(Recipe) 1359 recipe = models.ForeignKey(Recipe, on_delete=models.CASCADE)
1360 1360
1361class Recipe_Dependency(models.Model): 1361class Recipe_Dependency(models.Model):
1362 TYPE_DEPENDS = 0 1362 TYPE_DEPENDS = 0
@@ -1366,9 +1366,9 @@ class Recipe_Dependency(models.Model):
1366 (TYPE_DEPENDS, "depends"), 1366 (TYPE_DEPENDS, "depends"),
1367 (TYPE_RDEPENDS, "rdepends"), 1367 (TYPE_RDEPENDS, "rdepends"),
1368 ) 1368 )
1369 recipe = models.ForeignKey(Recipe, related_name='r_dependencies_recipe') 1369 recipe = models.ForeignKey(Recipe, on_delete=models.CASCADE, related_name='r_dependencies_recipe')
1370 depends_on = models.ForeignKey(Recipe, related_name='r_dependencies_depends') 1370 depends_on = models.ForeignKey(Recipe, on_delete=models.CASCADE, related_name='r_dependencies_depends')
1371 via = models.ForeignKey(Provides, null=True, default=None) 1371 via = models.ForeignKey(Provides, on_delete=models.CASCADE, null=True, default=None)
1372 dep_type = models.IntegerField(choices=DEPENDS_TYPE) 1372 dep_type = models.IntegerField(choices=DEPENDS_TYPE)
1373 objects = Recipe_DependencyManager() 1373 objects = Recipe_DependencyManager()
1374 1374
@@ -1377,7 +1377,7 @@ class Machine(models.Model):
1377 search_allowed_fields = ["name", "description", "layer_version__layer__name"] 1377 search_allowed_fields = ["name", "description", "layer_version__layer__name"]
1378 up_date = models.DateTimeField(null = True, default = None) 1378 up_date = models.DateTimeField(null = True, default = None)
1379 1379
1380 layer_version = models.ForeignKey('Layer_Version') 1380 layer_version = models.ForeignKey('Layer_Version', on_delete=models.CASCADE)
1381 name = models.CharField(max_length=255) 1381 name = models.CharField(max_length=255)
1382 description = models.CharField(max_length=255) 1382 description = models.CharField(max_length=255)
1383 1383
@@ -1408,7 +1408,7 @@ class Release(models.Model):
1408 """ A release is a project template, used to pre-populate Project settings with a configuration set """ 1408 """ A release is a project template, used to pre-populate Project settings with a configuration set """
1409 name = models.CharField(max_length=32, unique = True) 1409 name = models.CharField(max_length=32, unique = True)
1410 description = models.CharField(max_length=255) 1410 description = models.CharField(max_length=255)
1411 bitbake_version = models.ForeignKey(BitbakeVersion) 1411 bitbake_version = models.ForeignKey(BitbakeVersion, on_delete=models.CASCADE)
1412 branch_name = models.CharField(max_length=50, default = "") 1412 branch_name = models.CharField(max_length=50, default = "")
1413 helptext = models.TextField(null=True) 1413 helptext = models.TextField(null=True)
1414 1414
@@ -1419,7 +1419,7 @@ class Release(models.Model):
1419 return self.name 1419 return self.name
1420 1420
1421class ReleaseDefaultLayer(models.Model): 1421class ReleaseDefaultLayer(models.Model):
1422 release = models.ForeignKey(Release) 1422 release = models.ForeignKey(Release, on_delete=models.CASCADE)
1423 layer_name = models.CharField(max_length=100, default="") 1423 layer_name = models.CharField(max_length=100, default="")
1424 1424
1425 1425
@@ -1474,10 +1474,10 @@ class Layer_Version(models.Model):
1474 "layer__description", "layer__vcs_url", 1474 "layer__description", "layer__vcs_url",
1475 "dirpath", "release__name", "commit", "branch"] 1475 "dirpath", "release__name", "commit", "branch"]
1476 1476
1477 build = models.ForeignKey(Build, related_name='layer_version_build', 1477 build = models.ForeignKey(Build, on_delete=models.CASCADE, related_name='layer_version_build',
1478 default=None, null=True) 1478 default=None, null=True)
1479 1479
1480 layer = models.ForeignKey(Layer, related_name='layer_version_layer') 1480 layer = models.ForeignKey(Layer, on_delete=models.CASCADE, related_name='layer_version_layer')
1481 1481
1482 layer_source = models.IntegerField(choices=LayerSource.SOURCE_TYPE, 1482 layer_source = models.IntegerField(choices=LayerSource.SOURCE_TYPE,
1483 default=0) 1483 default=0)
@@ -1485,7 +1485,7 @@ class Layer_Version(models.Model):
1485 up_date = models.DateTimeField(null=True, default=timezone.now) 1485 up_date = models.DateTimeField(null=True, default=timezone.now)
1486 1486
1487 # To which metadata release does this layer version belong to 1487 # To which metadata release does this layer version belong to
1488 release = models.ForeignKey(Release, null=True, default=None) 1488 release = models.ForeignKey(Release, on_delete=models.CASCADE, null=True, default=None)
1489 1489
1490 branch = models.CharField(max_length=80) 1490 branch = models.CharField(max_length=80)
1491 commit = models.CharField(max_length=100) 1491 commit = models.CharField(max_length=100)
@@ -1499,7 +1499,7 @@ class Layer_Version(models.Model):
1499 local_path = models.FilePathField(max_length=1024, default="/") 1499 local_path = models.FilePathField(max_length=1024, default="/")
1500 1500
1501 # Set if this layer is restricted to a particular project 1501 # Set if this layer is restricted to a particular project
1502 project = models.ForeignKey('Project', null=True, default=None) 1502 project = models.ForeignKey('Project', on_delete=models.CASCADE, null=True, default=None)
1503 1503
1504 # code lifted, with adaptations, from the layerindex-web application 1504 # code lifted, with adaptations, from the layerindex-web application
1505 # https://git.yoctoproject.org/cgit/cgit.cgi/layerindex-web/ 1505 # https://git.yoctoproject.org/cgit/cgit.cgi/layerindex-web/
@@ -1608,14 +1608,14 @@ class Layer_Version(models.Model):
1608 1608
1609class LayerVersionDependency(models.Model): 1609class LayerVersionDependency(models.Model):
1610 1610
1611 layer_version = models.ForeignKey(Layer_Version, 1611 layer_version = models.ForeignKey(Layer_Version, on_delete=models.CASCADE,
1612 related_name="dependencies") 1612 related_name="dependencies")
1613 depends_on = models.ForeignKey(Layer_Version, 1613 depends_on = models.ForeignKey(Layer_Version, on_delete=models.CASCADE,
1614 related_name="dependees") 1614 related_name="dependees")
1615 1615
1616class ProjectLayer(models.Model): 1616class ProjectLayer(models.Model):
1617 project = models.ForeignKey(Project) 1617 project = models.ForeignKey(Project, on_delete=models.CASCADE)
1618 layercommit = models.ForeignKey(Layer_Version, null=True) 1618 layercommit = models.ForeignKey(Layer_Version, on_delete=models.CASCADE, null=True)
1619 optional = models.BooleanField(default = True) 1619 optional = models.BooleanField(default = True)
1620 1620
1621 def __unicode__(self): 1621 def __unicode__(self):
@@ -1630,8 +1630,8 @@ class CustomImageRecipe(Recipe):
1630 LAYER_NAME = "toaster-custom-images" 1630 LAYER_NAME = "toaster-custom-images"
1631 1631
1632 search_allowed_fields = ['name'] 1632 search_allowed_fields = ['name']
1633 base_recipe = models.ForeignKey(Recipe, related_name='based_on_recipe') 1633 base_recipe = models.ForeignKey(Recipe, on_delete=models.CASCADE, related_name='based_on_recipe')
1634 project = models.ForeignKey(Project) 1634 project = models.ForeignKey(Project, on_delete=models.CASCADE)
1635 last_updated = models.DateTimeField(null=True, default=None) 1635 last_updated = models.DateTimeField(null=True, default=None)
1636 1636
1637 def get_last_successful_built_target(self): 1637 def get_last_successful_built_target(self):
@@ -1784,14 +1784,14 @@ class CustomImageRecipe(Recipe):
1784 return recipe_contents 1784 return recipe_contents
1785 1785
1786class ProjectVariable(models.Model): 1786class ProjectVariable(models.Model):
1787 project = models.ForeignKey(Project) 1787 project = models.ForeignKey(Project, on_delete=models.CASCADE)
1788 name = models.CharField(max_length=100) 1788 name = models.CharField(max_length=100)
1789 value = models.TextField(blank = True) 1789 value = models.TextField(blank = True)
1790 1790
1791class Variable(models.Model): 1791class Variable(models.Model):
1792 search_allowed_fields = ['variable_name', 'variable_value', 1792 search_allowed_fields = ['variable_name', 'variable_value',
1793 'vhistory__file_name', "description"] 1793 'vhistory__file_name', "description"]
1794 build = models.ForeignKey(Build, related_name='variable_build') 1794 build = models.ForeignKey(Build, on_delete=models.CASCADE, related_name='variable_build')
1795 variable_name = models.CharField(max_length=100) 1795 variable_name = models.CharField(max_length=100)
1796 variable_value = models.TextField(blank=True) 1796 variable_value = models.TextField(blank=True)
1797 changed = models.BooleanField(default=False) 1797 changed = models.BooleanField(default=False)
@@ -1799,7 +1799,7 @@ class Variable(models.Model):
1799 description = models.TextField(blank=True) 1799 description = models.TextField(blank=True)
1800 1800
1801class VariableHistory(models.Model): 1801class VariableHistory(models.Model):
1802 variable = models.ForeignKey(Variable, related_name='vhistory') 1802 variable = models.ForeignKey(Variable, on_delete=models.CASCADE, related_name='vhistory')
1803 value = models.TextField(blank=True) 1803 value = models.TextField(blank=True)
1804 file_name = models.FilePathField(max_length=255) 1804 file_name = models.FilePathField(max_length=255)
1805 line_number = models.IntegerField(null=True) 1805 line_number = models.IntegerField(null=True)
@@ -1809,7 +1809,7 @@ class HelpText(models.Model):
1809 VARIABLE = 0 1809 VARIABLE = 0
1810 HELPTEXT_AREA = ((VARIABLE, 'variable'), ) 1810 HELPTEXT_AREA = ((VARIABLE, 'variable'), )
1811 1811
1812 build = models.ForeignKey(Build, related_name='helptext_build') 1812 build = models.ForeignKey(Build, on_delete=models.CASCADE, related_name='helptext_build')
1813 area = models.IntegerField(choices=HELPTEXT_AREA) 1813 area = models.IntegerField(choices=HELPTEXT_AREA)
1814 key = models.CharField(max_length=100) 1814 key = models.CharField(max_length=100)
1815 text = models.TextField() 1815 text = models.TextField()
@@ -1829,8 +1829,8 @@ class LogMessage(models.Model):
1829 (EXCEPTION, "toaster exception") 1829 (EXCEPTION, "toaster exception")
1830 ) 1830 )
1831 1831
1832 build = models.ForeignKey(Build) 1832 build = models.ForeignKey(Build, on_delete=models.CASCADE)
1833 task = models.ForeignKey(Task, blank = True, null=True) 1833 task = models.ForeignKey(Task, on_delete=models.CASCADE, blank = True, null=True)
1834 level = models.IntegerField(choices=LOG_LEVEL, default=INFO) 1834 level = models.IntegerField(choices=LOG_LEVEL, default=INFO)
1835 message = models.TextField(blank=True, null=True) 1835 message = models.TextField(blank=True, null=True)
1836 pathname = models.FilePathField(max_length=255, blank=True) 1836 pathname = models.FilePathField(max_length=255, blank=True)
@@ -1859,7 +1859,7 @@ class Distro(models.Model):
1859 search_allowed_fields = ["name", "description", "layer_version__layer__name"] 1859 search_allowed_fields = ["name", "description", "layer_version__layer__name"]
1860 up_date = models.DateTimeField(null = True, default = None) 1860 up_date = models.DateTimeField(null = True, default = None)
1861 1861
1862 layer_version = models.ForeignKey('Layer_Version') 1862 layer_version = models.ForeignKey('Layer_Version', on_delete=models.CASCADE)
1863 name = models.CharField(max_length=255) 1863 name = models.CharField(max_length=255)
1864 description = models.CharField(max_length=255) 1864 description = models.CharField(max_length=255)
1865 1865
diff --git a/bitbake/lib/toaster/tests/browser/test_all_builds_page.py b/bitbake/lib/toaster/tests/browser/test_all_builds_page.py
index fba627bd21..8423d3dab2 100644
--- a/bitbake/lib/toaster/tests/browser/test_all_builds_page.py
+++ b/bitbake/lib/toaster/tests/browser/test_all_builds_page.py
@@ -9,7 +9,7 @@
9 9
10import re 10import re
11 11
12from django.core.urlresolvers import reverse 12from django.urls import reverse
13from django.utils import timezone 13from django.utils import timezone
14from tests.browser.selenium_helpers import SeleniumTestCase 14from tests.browser.selenium_helpers import SeleniumTestCase
15 15
diff --git a/bitbake/lib/toaster/tests/browser/test_all_projects_page.py b/bitbake/lib/toaster/tests/browser/test_all_projects_page.py
index afd2d3566e..15b03400f9 100644
--- a/bitbake/lib/toaster/tests/browser/test_all_projects_page.py
+++ b/bitbake/lib/toaster/tests/browser/test_all_projects_page.py
@@ -9,7 +9,7 @@
9 9
10import re 10import re
11 11
12from django.core.urlresolvers import reverse 12from django.urls import reverse
13from django.utils import timezone 13from django.utils import timezone
14from tests.browser.selenium_helpers import SeleniumTestCase 14from tests.browser.selenium_helpers import SeleniumTestCase
15 15
diff --git a/bitbake/lib/toaster/tests/browser/test_builddashboard_page.py b/bitbake/lib/toaster/tests/browser/test_builddashboard_page.py
index d972aff1bd..efcd89b346 100644
--- a/bitbake/lib/toaster/tests/browser/test_builddashboard_page.py
+++ b/bitbake/lib/toaster/tests/browser/test_builddashboard_page.py
@@ -7,7 +7,7 @@
7# SPDX-License-Identifier: GPL-2.0-only 7# SPDX-License-Identifier: GPL-2.0-only
8# 8#
9 9
10from django.core.urlresolvers import reverse 10from django.urls import reverse
11from django.utils import timezone 11from django.utils import timezone
12 12
13from tests.browser.selenium_helpers import SeleniumTestCase 13from tests.browser.selenium_helpers import SeleniumTestCase
diff --git a/bitbake/lib/toaster/tests/browser/test_builddashboard_page_artifacts.py b/bitbake/lib/toaster/tests/browser/test_builddashboard_page_artifacts.py
index e2623e8ad3..c6226d60eb 100644
--- a/bitbake/lib/toaster/tests/browser/test_builddashboard_page_artifacts.py
+++ b/bitbake/lib/toaster/tests/browser/test_builddashboard_page_artifacts.py
@@ -7,7 +7,7 @@
7# SPDX-License-Identifier: GPL-2.0-only 7# SPDX-License-Identifier: GPL-2.0-only
8# 8#
9 9
10from django.core.urlresolvers import reverse 10from django.urls import reverse
11from django.utils import timezone 11from django.utils import timezone
12 12
13from tests.browser.selenium_helpers import SeleniumTestCase 13from tests.browser.selenium_helpers import SeleniumTestCase
diff --git a/bitbake/lib/toaster/tests/browser/test_builddashboard_page_recipes.py b/bitbake/lib/toaster/tests/browser/test_builddashboard_page_recipes.py
index c542d45f1e..9d85ba990c 100644
--- a/bitbake/lib/toaster/tests/browser/test_builddashboard_page_recipes.py
+++ b/bitbake/lib/toaster/tests/browser/test_builddashboard_page_recipes.py
@@ -7,7 +7,7 @@
7# SPDX-License-Identifier: GPL-2.0-only 7# SPDX-License-Identifier: GPL-2.0-only
8# 8#
9 9
10from django.core.urlresolvers import reverse 10from django.urls import reverse
11from django.utils import timezone 11from django.utils import timezone
12from tests.browser.selenium_helpers import SeleniumTestCase 12from tests.browser.selenium_helpers import SeleniumTestCase
13from orm.models import Project, Build, Recipe, Task, Layer, Layer_Version 13from orm.models import Project, Build, Recipe, Task, Layer, Layer_Version
diff --git a/bitbake/lib/toaster/tests/browser/test_builddashboard_page_tasks.py b/bitbake/lib/toaster/tests/browser/test_builddashboard_page_tasks.py
index 22acb470ac..7fdf75d0a8 100644
--- a/bitbake/lib/toaster/tests/browser/test_builddashboard_page_tasks.py
+++ b/bitbake/lib/toaster/tests/browser/test_builddashboard_page_tasks.py
@@ -7,7 +7,7 @@
7# SPDX-License-Identifier: GPL-2.0-only 7# SPDX-License-Identifier: GPL-2.0-only
8# 8#
9 9
10from django.core.urlresolvers import reverse 10from django.urls import reverse
11from django.utils import timezone 11from django.utils import timezone
12from tests.browser.selenium_helpers import SeleniumTestCase 12from tests.browser.selenium_helpers import SeleniumTestCase
13from orm.models import Project, Build, Recipe, Task, Layer, Layer_Version 13from orm.models import Project, Build, Recipe, Task, Layer, Layer_Version
diff --git a/bitbake/lib/toaster/tests/browser/test_js_unit_tests.py b/bitbake/lib/toaster/tests/browser/test_js_unit_tests.py
index e8b4295b86..e6163bb3b2 100644
--- a/bitbake/lib/toaster/tests/browser/test_js_unit_tests.py
+++ b/bitbake/lib/toaster/tests/browser/test_js_unit_tests.py
@@ -11,7 +11,7 @@
11Run the js unit tests 11Run the js unit tests
12""" 12"""
13 13
14from django.core.urlresolvers import reverse 14from django.urls import reverse
15from tests.browser.selenium_helpers import SeleniumTestCase 15from tests.browser.selenium_helpers import SeleniumTestCase
16import logging 16import logging
17 17
diff --git a/bitbake/lib/toaster/tests/browser/test_landing_page.py b/bitbake/lib/toaster/tests/browser/test_landing_page.py
index 07901989d5..8bb64b9f3e 100644
--- a/bitbake/lib/toaster/tests/browser/test_landing_page.py
+++ b/bitbake/lib/toaster/tests/browser/test_landing_page.py
@@ -7,7 +7,7 @@
7# Copyright (C) 2013-2016 Intel Corporation 7# Copyright (C) 2013-2016 Intel Corporation
8# 8#
9 9
10from django.core.urlresolvers import reverse 10from django.urls import reverse
11from django.utils import timezone 11from django.utils import timezone
12from tests.browser.selenium_helpers import SeleniumTestCase 12from tests.browser.selenium_helpers import SeleniumTestCase
13 13
diff --git a/bitbake/lib/toaster/tests/browser/test_layerdetails_page.py b/bitbake/lib/toaster/tests/browser/test_layerdetails_page.py
index f81e696a26..71bdd2aafd 100644
--- a/bitbake/lib/toaster/tests/browser/test_layerdetails_page.py
+++ b/bitbake/lib/toaster/tests/browser/test_layerdetails_page.py
@@ -7,7 +7,7 @@
7# Copyright (C) 2013-2016 Intel Corporation 7# Copyright (C) 2013-2016 Intel Corporation
8# 8#
9 9
10from django.core.urlresolvers import reverse 10from django.urls import reverse
11from tests.browser.selenium_helpers import SeleniumTestCase 11from tests.browser.selenium_helpers import SeleniumTestCase
12 12
13from orm.models import Layer, Layer_Version, Project, LayerSource, Release 13from orm.models import Layer, Layer_Version, Project, LayerSource, Release
diff --git a/bitbake/lib/toaster/tests/browser/test_most_recent_builds_states.py b/bitbake/lib/toaster/tests/browser/test_most_recent_builds_states.py
index 15d25dc3a9..7844aaa395 100644
--- a/bitbake/lib/toaster/tests/browser/test_most_recent_builds_states.py
+++ b/bitbake/lib/toaster/tests/browser/test_most_recent_builds_states.py
@@ -7,7 +7,7 @@
7# Copyright (C) 2013-2016 Intel Corporation 7# Copyright (C) 2013-2016 Intel Corporation
8# 8#
9 9
10from django.core.urlresolvers import reverse 10from django.urls import reverse
11from django.utils import timezone 11from django.utils import timezone
12from tests.browser.selenium_helpers import SeleniumTestCase 12from tests.browser.selenium_helpers import SeleniumTestCase
13from tests.browser.selenium_helpers_base import Wait 13from tests.browser.selenium_helpers_base import Wait
diff --git a/bitbake/lib/toaster/tests/browser/test_new_custom_image_page.py b/bitbake/lib/toaster/tests/browser/test_new_custom_image_page.py
index 0aa3b7a774..9906ae42a9 100644
--- a/bitbake/lib/toaster/tests/browser/test_new_custom_image_page.py
+++ b/bitbake/lib/toaster/tests/browser/test_new_custom_image_page.py
@@ -7,7 +7,7 @@
7# SPDX-License-Identifier: GPL-2.0-only 7# SPDX-License-Identifier: GPL-2.0-only
8# 8#
9 9
10from django.core.urlresolvers import reverse 10from django.urls import reverse
11from tests.browser.selenium_helpers import SeleniumTestCase 11from tests.browser.selenium_helpers import SeleniumTestCase
12 12
13from orm.models import BitbakeVersion, Release, Project, ProjectLayer, Layer 13from orm.models import BitbakeVersion, Release, Project, ProjectLayer, Layer
diff --git a/bitbake/lib/toaster/tests/browser/test_new_project_page.py b/bitbake/lib/toaster/tests/browser/test_new_project_page.py
index 8e56bb043e..e20a1f686e 100644
--- a/bitbake/lib/toaster/tests/browser/test_new_project_page.py
+++ b/bitbake/lib/toaster/tests/browser/test_new_project_page.py
@@ -7,7 +7,7 @@
7# SPDX-License-Identifier: GPL-2.0-only 7# SPDX-License-Identifier: GPL-2.0-only
8# 8#
9 9
10from django.core.urlresolvers import reverse 10from django.urls import reverse
11from tests.browser.selenium_helpers import SeleniumTestCase 11from tests.browser.selenium_helpers import SeleniumTestCase
12from selenium.webdriver.support.ui import Select 12from selenium.webdriver.support.ui import Select
13from selenium.common.exceptions import InvalidElementStateException 13from selenium.common.exceptions import InvalidElementStateException
diff --git a/bitbake/lib/toaster/tests/browser/test_project_builds_page.py b/bitbake/lib/toaster/tests/browser/test_project_builds_page.py
index 47fb10b262..51717e72d4 100644
--- a/bitbake/lib/toaster/tests/browser/test_project_builds_page.py
+++ b/bitbake/lib/toaster/tests/browser/test_project_builds_page.py
@@ -9,7 +9,7 @@
9 9
10import re 10import re
11 11
12from django.core.urlresolvers import reverse 12from django.urls import reverse
13from django.utils import timezone 13from django.utils import timezone
14from tests.browser.selenium_helpers import SeleniumTestCase 14from tests.browser.selenium_helpers import SeleniumTestCase
15 15
diff --git a/bitbake/lib/toaster/tests/browser/test_project_config_page.py b/bitbake/lib/toaster/tests/browser/test_project_config_page.py
index eaf27a1e78..944bcb2631 100644
--- a/bitbake/lib/toaster/tests/browser/test_project_config_page.py
+++ b/bitbake/lib/toaster/tests/browser/test_project_config_page.py
@@ -7,7 +7,7 @@
7# SPDX-License-Identifier: GPL-2.0-only 7# SPDX-License-Identifier: GPL-2.0-only
8# 8#
9 9
10from django.core.urlresolvers import reverse 10from django.urls import reverse
11from tests.browser.selenium_helpers import SeleniumTestCase 11from tests.browser.selenium_helpers import SeleniumTestCase
12 12
13from orm.models import BitbakeVersion, Release, Project, ProjectVariable 13from orm.models import BitbakeVersion, Release, Project, ProjectVariable
@@ -213,4 +213,5 @@ class TestProjectConfigsPage(SeleniumTestCase):
213 213
214 hidden_element = self.driver.find_element_by_id('hintError-sstate_dir') 214 hidden_element = self.driver.find_element_by_id('hintError-sstate_dir')
215 self.assertEqual(hidden_element.is_displayed(), False, 215 self.assertEqual(hidden_element.is_displayed(), False,
216 'sstate directory path valid but treated as invalid') \ No newline at end of file 216 'sstate directory path valid but treated as invalid')
217
diff --git a/bitbake/lib/toaster/tests/browser/test_project_page.py b/bitbake/lib/toaster/tests/browser/test_project_page.py
index 8b5e1b6739..546293f1ee 100644
--- a/bitbake/lib/toaster/tests/browser/test_project_page.py
+++ b/bitbake/lib/toaster/tests/browser/test_project_page.py
@@ -7,7 +7,7 @@
7# SPDX-License-Identifier: GPL-2.0-only 7# SPDX-License-Identifier: GPL-2.0-only
8# 8#
9 9
10from django.core.urlresolvers import reverse 10from django.urls import reverse
11from django.utils import timezone 11from django.utils import timezone
12from tests.browser.selenium_helpers import SeleniumTestCase 12from tests.browser.selenium_helpers import SeleniumTestCase
13 13
diff --git a/bitbake/lib/toaster/tests/browser/test_sample.py b/bitbake/lib/toaster/tests/browser/test_sample.py
index f4ad670a36..b0067c21cd 100644
--- a/bitbake/lib/toaster/tests/browser/test_sample.py
+++ b/bitbake/lib/toaster/tests/browser/test_sample.py
@@ -16,7 +16,7 @@ New test files should follow this structure, should be named "test_*.py",
16and should be in the same directory as this sample. 16and should be in the same directory as this sample.
17""" 17"""
18 18
19from django.core.urlresolvers import reverse 19from django.urls import reverse
20from tests.browser.selenium_helpers import SeleniumTestCase 20from tests.browser.selenium_helpers import SeleniumTestCase
21 21
22class TestSample(SeleniumTestCase): 22class TestSample(SeleniumTestCase):
diff --git a/bitbake/lib/toaster/tests/browser/test_task_page.py b/bitbake/lib/toaster/tests/browser/test_task_page.py
index 26f3dca83c..011b5854ae 100644
--- a/bitbake/lib/toaster/tests/browser/test_task_page.py
+++ b/bitbake/lib/toaster/tests/browser/test_task_page.py
@@ -7,7 +7,7 @@
7# SPDX-License-Identifier: GPL-2.0-only 7# SPDX-License-Identifier: GPL-2.0-only
8# 8#
9 9
10from django.core.urlresolvers import reverse 10from django.urls import reverse
11from django.utils import timezone 11from django.utils import timezone
12from tests.browser.selenium_helpers import SeleniumTestCase 12from tests.browser.selenium_helpers import SeleniumTestCase
13from orm.models import Project, Build, Layer, Layer_Version, Recipe, Target 13from orm.models import Project, Build, Layer, Layer_Version, Recipe, Target
diff --git a/bitbake/lib/toaster/tests/browser/test_toastertable_ui.py b/bitbake/lib/toaster/tests/browser/test_toastertable_ui.py
index ef78cbb1ee..e82d5ec654 100644
--- a/bitbake/lib/toaster/tests/browser/test_toastertable_ui.py
+++ b/bitbake/lib/toaster/tests/browser/test_toastertable_ui.py
@@ -9,7 +9,7 @@
9 9
10from datetime import datetime 10from datetime import datetime
11 11
12from django.core.urlresolvers import reverse 12from django.urls import reverse
13from django.utils import timezone 13from django.utils import timezone
14from tests.browser.selenium_helpers import SeleniumTestCase 14from tests.browser.selenium_helpers import SeleniumTestCase
15from orm.models import BitbakeVersion, Release, Project, Build 15from orm.models import BitbakeVersion, Release, Project, Build
diff --git a/bitbake/lib/toaster/tests/views/test_views.py b/bitbake/lib/toaster/tests/views/test_views.py
index 68d9e9de14..735d596bcc 100644
--- a/bitbake/lib/toaster/tests/views/test_views.py
+++ b/bitbake/lib/toaster/tests/views/test_views.py
@@ -11,7 +11,7 @@
11 11
12from django.test import TestCase 12from django.test import TestCase
13from django.test.client import RequestFactory 13from django.test.client import RequestFactory
14from django.core.urlresolvers import reverse 14from django.urls import reverse
15from django.db.models import Q 15from django.db.models import Q
16 16
17from orm.models import Project, Package 17from orm.models import Project, Package
diff --git a/bitbake/lib/toaster/toastergui/api.py b/bitbake/lib/toaster/toastergui/api.py
index a4afc9e704..b4cdc335ef 100644
--- a/bitbake/lib/toaster/toastergui/api.py
+++ b/bitbake/lib/toaster/toastergui/api.py
@@ -24,7 +24,7 @@ from bldcontrol import bbcontroller
24 24
25from django.http import HttpResponse, JsonResponse 25from django.http import HttpResponse, JsonResponse
26from django.views.generic import View 26from django.views.generic import View
27from django.core.urlresolvers import reverse 27from django.urls import reverse
28from django.db.models import Q, F 28from django.db.models import Q, F
29from django.db import Error 29from django.db import Error
30from toastergui.templatetags.projecttags import filtered_filesizeformat 30from toastergui.templatetags.projecttags import filtered_filesizeformat
diff --git a/bitbake/lib/toaster/toastergui/templatetags/project_url_tag.py b/bitbake/lib/toaster/toastergui/templatetags/project_url_tag.py
index 71e0925787..7b6f15b2cc 100644
--- a/bitbake/lib/toaster/toastergui/templatetags/project_url_tag.py
+++ b/bitbake/lib/toaster/toastergui/templatetags/project_url_tag.py
@@ -3,7 +3,7 @@
3# 3#
4 4
5from django import template 5from django import template
6from django.core.urlresolvers import reverse 6from django.urls import reverse
7 7
8register = template.Library() 8register = template.Library()
9 9
diff --git a/bitbake/lib/toaster/toastergui/templatetags/projecttags.py b/bitbake/lib/toaster/toastergui/templatetags/projecttags.py
index b703da3048..c432f59a78 100644
--- a/bitbake/lib/toaster/toastergui/templatetags/projecttags.py
+++ b/bitbake/lib/toaster/toastergui/templatetags/projecttags.py
@@ -44,7 +44,7 @@ def json(value, default = None):
44 # it manually here 44 # it manually here
45 return mark_safe(JsonLib.dumps(value, indent=2, default = default, ensure_ascii=False).replace('</', '<\\/')) 45 return mark_safe(JsonLib.dumps(value, indent=2, default = default, ensure_ascii=False).replace('</', '<\\/'))
46 46
47@register.assignment_tag 47@register.simple_tag
48def query(qs, **kwargs): 48def query(qs, **kwargs):
49 """ template tag which allows queryset filtering. Usage: 49 """ template tag which allows queryset filtering. Usage:
50 {% query books author=author as mybooks %} 50 {% query books author=author as mybooks %}
@@ -83,7 +83,7 @@ def divide(value, arg):
83def multiply(value, arg): 83def multiply(value, arg):
84 return int(value) * int(arg) 84 return int(value) * int(arg)
85 85
86@register.assignment_tag 86@register.simple_tag
87def datecompute(delta, start = timezone.now()): 87def datecompute(delta, start = timezone.now()):
88 return start + timedelta(delta) 88 return start + timedelta(delta)
89 89
diff --git a/bitbake/lib/toaster/toastergui/typeaheads.py b/bitbake/lib/toaster/toastergui/typeaheads.py
index fd750ffb74..a1e6fe90f3 100644
--- a/bitbake/lib/toaster/toastergui/typeaheads.py
+++ b/bitbake/lib/toaster/toastergui/typeaheads.py
@@ -10,7 +10,7 @@ import subprocess
10 10
11from toastergui.widgets import ToasterTypeAhead 11from toastergui.widgets import ToasterTypeAhead
12from orm.models import Project 12from orm.models import Project
13from django.core.urlresolvers import reverse 13from django.urls import reverse
14from django.core.cache import cache 14from django.core.cache import cache
15 15
16 16
diff --git a/bitbake/lib/toaster/toastergui/views.py b/bitbake/lib/toaster/toastergui/views.py
index e2ead830b1..ae1973ff24 100644
--- a/bitbake/lib/toaster/toastergui/views.py
+++ b/bitbake/lib/toaster/toastergui/views.py
@@ -19,7 +19,7 @@ from orm.models import Target_Installed_Package, Target_File
19from orm.models import TargetKernelFile, TargetSDKFile, Target_Image_File 19from orm.models import TargetKernelFile, TargetSDKFile, Target_Image_File
20from orm.models import BitbakeVersion, CustomImageRecipe 20from orm.models import BitbakeVersion, CustomImageRecipe
21 21
22from django.core.urlresolvers import reverse, resolve 22from django.urls import reverse, resolve
23from django.core.exceptions import ObjectDoesNotExist 23from django.core.exceptions import ObjectDoesNotExist
24from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger 24from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
25from django.http import HttpResponseNotFound, JsonResponse 25from django.http import HttpResponseNotFound, JsonResponse
@@ -352,7 +352,7 @@ def _get_parameters_values(request, default_count, default_order):
352# set cookies for parameters. this is usefull in case parameters are set 352# set cookies for parameters. this is usefull in case parameters are set
353# manually from the GET values of the link 353# manually from the GET values of the link
354def _set_parameters_values(pagesize, orderby, request): 354def _set_parameters_values(pagesize, orderby, request):
355 from django.core.urlresolvers import resolve 355 from django.urls import resolve
356 current_url = resolve(request.path_info).url_name 356 current_url = resolve(request.path_info).url_name
357 request.session['%s_count' % current_url] = pagesize 357 request.session['%s_count' % current_url] = pagesize
358 request.session['%s_orderby' % current_url] =orderby 358 request.session['%s_orderby' % current_url] =orderby
@@ -1364,8 +1364,8 @@ if True:
1364 1364
1365 template = "newproject.html" 1365 template = "newproject.html"
1366 context = { 1366 context = {
1367 'email': request.user.email if request.user.is_authenticated() else '', 1367 'email': request.user.email if request.user.is_authenticated else '',
1368 'username': request.user.username if request.user.is_authenticated() else '', 1368 'username': request.user.username if request.user.is_authenticated else '',
1369 'releases': Release.objects.order_by("description"), 1369 'releases': Release.objects.order_by("description"),
1370 } 1370 }
1371 1371
@@ -1391,7 +1391,7 @@ if True:
1391 # set alert for missing fields 1391 # set alert for missing fields
1392 raise BadParameterException("Fields missing: %s" % ", ".join(missing)) 1392 raise BadParameterException("Fields missing: %s" % ", ".join(missing))
1393 1393
1394 if not request.user.is_authenticated(): 1394 if not request.user.is_authenticated:
1395 user = authenticate(username = request.POST.get('username', '_anonuser'), password = 'nopass') 1395 user = authenticate(username = request.POST.get('username', '_anonuser'), password = 'nopass')
1396 if user is None: 1396 if user is None:
1397 user = User.objects.create_user(username = request.POST.get('username', '_anonuser'), email = request.POST.get('email', ''), password = "nopass") 1397 user = User.objects.create_user(username = request.POST.get('username', '_anonuser'), email = request.POST.get('email', ''), password = "nopass")
@@ -1438,8 +1438,8 @@ if True:
1438 project = Project.objects.get(pk=pid) 1438 project = Project.objects.get(pk=pid)
1439 template = "newproject_specific.html" 1439 template = "newproject_specific.html"
1440 context = { 1440 context = {
1441 'email': request.user.email if request.user.is_authenticated() else '', 1441 'email': request.user.email if request.user.is_authenticated else '',
1442 'username': request.user.username if request.user.is_authenticated() else '', 1442 'username': request.user.username if request.user.is_authenticated else '',
1443 'releases': Release.objects.order_by("description"), 1443 'releases': Release.objects.order_by("description"),
1444 'projectname': project.name, 1444 'projectname': project.name,
1445 'project_pk': project.pk, 1445 'project_pk': project.pk,
@@ -1469,7 +1469,7 @@ if True:
1469 # set alert for missing fields 1469 # set alert for missing fields
1470 raise BadParameterException("Fields missing: %s" % ", ".join(missing)) 1470 raise BadParameterException("Fields missing: %s" % ", ".join(missing))
1471 1471
1472 if not request.user.is_authenticated(): 1472 if not request.user.is_authenticated:
1473 user = authenticate(username = request.POST.get('username', '_anonuser'), password = 'nopass') 1473 user = authenticate(username = request.POST.get('username', '_anonuser'), password = 'nopass')
1474 if user is None: 1474 if user is None:
1475 user = User.objects.create_user(username = request.POST.get('username', '_anonuser'), email = request.POST.get('email', ''), password = "nopass") 1475 user = User.objects.create_user(username = request.POST.get('username', '_anonuser'), email = request.POST.get('email', ''), password = "nopass")
diff --git a/bitbake/lib/toaster/toastergui/widgets.py b/bitbake/lib/toaster/toastergui/widgets.py
index 645f4587e8..ceff52942e 100644
--- a/bitbake/lib/toaster/toastergui/widgets.py
+++ b/bitbake/lib/toaster/toastergui/widgets.py
@@ -22,7 +22,7 @@ from django.utils import timezone
22from toastergui.templatetags.projecttags import sectohms, get_tasks 22from toastergui.templatetags.projecttags import sectohms, get_tasks
23from toastergui.templatetags.projecttags import json as template_json 23from toastergui.templatetags.projecttags import json as template_json
24from django.http import JsonResponse 24from django.http import JsonResponse
25from django.core.urlresolvers import reverse 25from django.urls import reverse
26 26
27import types 27import types
28import json 28import json
diff --git a/bitbake/lib/toaster/toastermain/management/commands/buildimport.py b/bitbake/lib/toaster/toastermain/management/commands/buildimport.py
index 3e246fda83..7718caa57a 100644
--- a/bitbake/lib/toaster/toastermain/management/commands/buildimport.py
+++ b/bitbake/lib/toaster/toastermain/management/commands/buildimport.py
@@ -466,7 +466,6 @@ class Command(BaseCommand):
466 release_name = 'None' if not pl.layercommit.release else pl.layercommit.release.name 466 release_name = 'None' if not pl.layercommit.release else pl.layercommit.release.name
467 print(" AFTER :ProjectLayer=%s,%s,%s,%s" % (pl.layercommit.layer.name,release_name,pl.layercommit.branch,pl.layercommit.commit)) 467 print(" AFTER :ProjectLayer=%s,%s,%s,%s" % (pl.layercommit.layer.name,release_name,pl.layercommit.branch,pl.layercommit.commit))
468 468
469
470 def handle(self, *args, **options): 469 def handle(self, *args, **options):
471 project_name = options['name'] 470 project_name = options['name']
472 project_path = options['path'] 471 project_path = options['path']
@@ -551,6 +550,7 @@ class Command(BaseCommand):
551 # preset the mode and default image recipe 550 # preset the mode and default image recipe
552 project.set_variable(Project.PROJECT_SPECIFIC_ISNEW,Project.PROJECT_SPECIFIC_NEW) 551 project.set_variable(Project.PROJECT_SPECIFIC_ISNEW,Project.PROJECT_SPECIFIC_NEW)
553 project.set_variable(Project.PROJECT_SPECIFIC_DEFAULTIMAGE,"core-image-minimal") 552 project.set_variable(Project.PROJECT_SPECIFIC_DEFAULTIMAGE,"core-image-minimal")
553
554 # Assert any extended/custom actions or variables for new non-Toaster projects 554 # Assert any extended/custom actions or variables for new non-Toaster projects
555 if not len(self.toaster_vars): 555 if not len(self.toaster_vars):
556 pass 556 pass
diff --git a/bitbake/lib/toaster/toastermain/settings.py b/bitbake/lib/toaster/toastermain/settings.py
index 74501fa26b..a4b370c8d4 100644
--- a/bitbake/lib/toaster/toastermain/settings.py
+++ b/bitbake/lib/toaster/toastermain/settings.py
@@ -189,15 +189,16 @@ TEMPLATES = [
189 }, 189 },
190] 190]
191 191
192MIDDLEWARE_CLASSES = ( 192MIDDLEWARE = [
193 'django.middleware.common.CommonMiddleware', 193 'django.middleware.common.CommonMiddleware',
194 'django.contrib.sessions.middleware.SessionMiddleware', 194 'django.contrib.sessions.middleware.SessionMiddleware',
195 'django.middleware.csrf.CsrfViewMiddleware', 195 'django.middleware.csrf.CsrfViewMiddleware',
196 'django.contrib.auth.middleware.AuthenticationMiddleware', 196 'django.contrib.auth.middleware.AuthenticationMiddleware',
197 'django.contrib.messages.middleware.MessageMiddleware', 197 'django.contrib.messages.middleware.MessageMiddleware',
198 # Uncomment the next line for simple clickjacking protection: 198 'django.contrib.auth.middleware.AuthenticationMiddleware',
199 # 'django.middleware.clickjacking.XFrameOptionsMiddleware', 199 'django.contrib.messages.middleware.MessageMiddleware',
200) 200 'django.contrib.sessions.middleware.SessionMiddleware',
201]
201 202
202CACHES = { 203CACHES = {
203 # 'default': { 204 # 'default': {
@@ -248,7 +249,7 @@ FRESH_ENABLED = False
248if os.environ.get('TOASTER_DEVEL', None) is not None: 249if os.environ.get('TOASTER_DEVEL', None) is not None:
249 try: 250 try:
250 import fresh 251 import fresh
251 MIDDLEWARE_CLASSES = ("fresh.middleware.FreshMiddleware",) + MIDDLEWARE_CLASSES 252 MIDDLEWARE = ["fresh.middleware.FreshMiddleware",] + MIDDLEWARE
252 INSTALLED_APPS = INSTALLED_APPS + ('fresh',) 253 INSTALLED_APPS = INSTALLED_APPS + ('fresh',)
253 FRESH_ENABLED = True 254 FRESH_ENABLED = True
254 except: 255 except:
@@ -258,8 +259,8 @@ DEBUG_PANEL_ENABLED = False
258if os.environ.get('TOASTER_DEVEL', None) is not None: 259if os.environ.get('TOASTER_DEVEL', None) is not None:
259 try: 260 try:
260 import debug_toolbar, debug_panel 261 import debug_toolbar, debug_panel
261 MIDDLEWARE_CLASSES = ('debug_panel.middleware.DebugPanelMiddleware',) + MIDDLEWARE_CLASSES 262 MIDDLEWARE = ['debug_panel.middleware.DebugPanelMiddleware',] + MIDDLEWARE
262 #MIDDLEWARE_CLASSES = MIDDLEWARE_CLASSES + ('debug_toolbar.middleware.DebugToolbarMiddleware',) 263 #MIDDLEWARE = MIDDLEWARE + ['debug_toolbar.middleware.DebugToolbarMiddleware',]
263 INSTALLED_APPS = INSTALLED_APPS + ('debug_toolbar','debug_panel',) 264 INSTALLED_APPS = INSTALLED_APPS + ('debug_toolbar','debug_panel',)
264 DEBUG_PANEL_ENABLED = True 265 DEBUG_PANEL_ENABLED = True
265 266
@@ -352,5 +353,3 @@ def activate_synchronous_off(sender, connection, **kwargs):
352connection_created.connect(activate_synchronous_off) 353connection_created.connect(activate_synchronous_off)
353# 354#
354 355
355
356
diff --git a/bitbake/lib/toaster/toastermain/urls.py b/bitbake/lib/toaster/toastermain/urls.py
index ac77bc3632..5fb520b384 100644
--- a/bitbake/lib/toaster/toastermain/urls.py
+++ b/bitbake/lib/toaster/toastermain/urls.py
@@ -51,7 +51,7 @@ if toastermain.settings.DEBUG_PANEL_ENABLED:
51 51
52urlpatterns = [ 52urlpatterns = [
53 # Uncomment the next line to enable the admin: 53 # Uncomment the next line to enable the admin:
54 url(r'^admin/', include(admin.site.urls)), 54 url(r'^admin/', admin.site.urls),
55] + urlpatterns 55] + urlpatterns
56 56
57# Automatically discover urls.py in various apps, beside our own 57# Automatically discover urls.py in various apps, beside our own
@@ -69,7 +69,7 @@ for t in os.walk(os.path.dirname(currentdir)):
69 # make sure we don't have this module name in 69 # make sure we don't have this module name in
70 conflict = False 70 conflict = False
71 for p in urlpatterns: 71 for p in urlpatterns:
72 if p.regex.pattern == '^' + modulename + '/': 72 if p.pattern.regex.pattern == '^' + modulename + '/':
73 conflict = True 73 conflict = True
74 if not conflict: 74 if not conflict:
75 urlpatterns.insert(0, url(r'^' + modulename + '/', include ( modulename + '.urls'))) 75 urlpatterns.insert(0, url(r'^' + modulename + '/', include ( modulename + '.urls')))