Merge lp:~stylesen/lava-scheduler/multinode into lp:lava-scheduler/multinode

Proposed by Senthil Kumaran S
Status: Merged
Approved by: Neil Williams
Approved revision: no longer in the source branch.
Merged at revision: 250
Proposed branch: lp:~stylesen/lava-scheduler/multinode
Merge into: lp:lava-scheduler/multinode
Diff against target: 531 lines (+173/-324)
4 files modified
lava_scheduler_app/migrations/0030_auto__add_field_testjob_sub_id.py (+0/-160)
lava_scheduler_app/migrations/0030_auto__add_field_testjob_sub_id__add_field_testjob_target_group.py (+169/-0)
lava_scheduler_app/migrations/0031_auto__add_field_testjob_target_group.py (+0/-161)
lava_scheduler_app/models.py (+4/-3)
To merge this branch: bzr merge lp:~stylesen/lava-scheduler/multinode
Reviewer Review Type Date Requested Status
Neil Williams Approve
Review via email: mp+171290@code.launchpad.net

Description of the change

Fix database migration scripts.

To post a comment you must log in.
Revision history for this message
Neil Williams (codehelp) wrote :

Approved

review: Approve
250. By Neil Williams

Apply the cleanup branch merge.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== removed file 'lava_scheduler_app/migrations/0030_auto__add_field_testjob_sub_id.py'
2--- lava_scheduler_app/migrations/0030_auto__add_field_testjob_sub_id.py 2013-06-20 11:45:50 +0000
3+++ lava_scheduler_app/migrations/0030_auto__add_field_testjob_sub_id.py 1970-01-01 00:00:00 +0000
4@@ -1,160 +0,0 @@
5-# -*- coding: utf-8 -*-
6-import datetime
7-from south.db import db
8-from south.v2 import SchemaMigration
9-from django.db import models
10-
11-
12-class Migration(SchemaMigration):
13-
14- def forwards(self, orm):
15- # Adding field 'TestJob.sub_id'
16- db.add_column('lava_scheduler_app_testjob', 'sub_id',
17- self.gf('django.db.models.fields.CharField')(default='', max_length=200, blank=True),
18- keep_default=False)
19-
20-
21- def backwards(self, orm):
22- # Deleting field 'TestJob.sub_id'
23- db.delete_column('lava_scheduler_app_testjob', 'sub_id')
24-
25-
26- models = {
27- 'auth.group': {
28- 'Meta': {'object_name': 'Group'},
29- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
30- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
31- 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
32- },
33- 'auth.permission': {
34- 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
35- 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
36- 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
37- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
38- 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
39- },
40- 'auth.user': {
41- 'Meta': {'object_name': 'User'},
42- 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
43- 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
44- 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
45- 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
46- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
47- 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
48- 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
49- 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
50- 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
51- 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
52- 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
53- 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
54- 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
55- },
56- 'contenttypes.contenttype': {
57- 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
58- 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
59- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
60- 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
61- 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
62- },
63- 'dashboard_app.bundle': {
64- 'Meta': {'ordering': "['-uploaded_on']", 'object_name': 'Bundle'},
65- '_gz_content': ('django.db.models.fields.files.FileField', [], {'max_length': '100', 'null': 'True', 'db_column': "'gz_content'"}),
66- '_raw_content': ('django.db.models.fields.files.FileField', [], {'max_length': '100', 'null': 'True', 'db_column': "'content'"}),
67- 'bundle_stream': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'bundles'", 'to': "orm['dashboard_app.BundleStream']"}),
68- 'content_filename': ('django.db.models.fields.CharField', [], {'max_length': '256'}),
69- 'content_sha1': ('django.db.models.fields.CharField', [], {'max_length': '40', 'unique': 'True', 'null': 'True'}),
70- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
71- 'is_deserialized': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
72- 'uploaded_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'uploaded_bundles'", 'null': 'True', 'to': "orm['auth.User']"}),
73- 'uploaded_on': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.utcnow'})
74- },
75- 'dashboard_app.bundlestream': {
76- 'Meta': {'object_name': 'BundleStream'},
77- 'group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.Group']", 'null': 'True', 'blank': 'True'}),
78- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
79- 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
80- 'is_public': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
81- 'name': ('django.db.models.fields.CharField', [], {'max_length': '64', 'blank': 'True'}),
82- 'pathname': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}),
83- 'slug': ('django.db.models.fields.CharField', [], {'max_length': '64', 'blank': 'True'}),
84- 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'})
85- },
86- 'lava_scheduler_app.device': {
87- 'Meta': {'object_name': 'Device'},
88- 'current_job': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['lava_scheduler_app.TestJob']", 'blank': 'True', 'unique': 'True'}),
89- 'device_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['lava_scheduler_app.DeviceType']"}),
90- 'device_version': ('django.db.models.fields.CharField', [], {'default': 'None', 'max_length': '200', 'null': 'True', 'blank': 'True'}),
91- 'health_status': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
92- 'hostname': ('django.db.models.fields.CharField', [], {'max_length': '200', 'primary_key': 'True'}),
93- 'last_health_report_job': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['lava_scheduler_app.TestJob']", 'blank': 'True', 'unique': 'True'}),
94- 'status': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
95- 'tags': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['lava_scheduler_app.Tag']", 'symmetrical': 'False', 'blank': 'True'})
96- },
97- 'lava_scheduler_app.devicestatetransition': {
98- 'Meta': {'object_name': 'DeviceStateTransition'},
99- 'created_by': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'on_delete': 'models.SET_NULL', 'blank': 'True'}),
100- 'created_on': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
101- 'device': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'transitions'", 'to': "orm['lava_scheduler_app.Device']"}),
102- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
103- 'job': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['lava_scheduler_app.TestJob']", 'null': 'True', 'on_delete': 'models.SET_NULL', 'blank': 'True'}),
104- 'message': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
105- 'new_state': ('django.db.models.fields.IntegerField', [], {}),
106- 'old_state': ('django.db.models.fields.IntegerField', [], {})
107- },
108- 'lava_scheduler_app.devicetype': {
109- 'Meta': {'object_name': 'DeviceType'},
110- 'display': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
111- 'health_check_job': ('django.db.models.fields.TextField', [], {'default': 'None', 'null': 'True', 'blank': 'True'}),
112- 'name': ('django.db.models.fields.SlugField', [], {'max_length': '50', 'primary_key': 'True'})
113- },
114- 'lava_scheduler_app.jobfailuretag': {
115- 'Meta': {'object_name': 'JobFailureTag'},
116- 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
117- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
118- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '256'})
119- },
120- 'lava_scheduler_app.tag': {
121- 'Meta': {'object_name': 'Tag'},
122- 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
123- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
124- 'name': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50'})
125- },
126- 'lava_scheduler_app.testjob': {
127- 'Meta': {'object_name': 'TestJob'},
128- '_results_bundle': ('django.db.models.fields.related.OneToOneField', [], {'null': 'True', 'db_column': "'results_bundle_id'", 'on_delete': 'models.SET_NULL', 'to': "orm['dashboard_app.Bundle']", 'blank': 'True', 'unique': 'True'}),
129- '_results_link': ('django.db.models.fields.CharField', [], {'default': 'None', 'max_length': '400', 'null': 'True', 'db_column': "'results_link'", 'blank': 'True'}),
130- 'actual_device': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'related_name': "'+'", 'null': 'True', 'blank': 'True', 'to': "orm['lava_scheduler_app.Device']"}),
131- 'definition': ('django.db.models.fields.TextField', [], {}),
132- 'description': ('django.db.models.fields.CharField', [], {'default': 'None', 'max_length': '200', 'null': 'True', 'blank': 'True'}),
133- 'end_time': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
134- 'failure_comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
135- 'failure_tags': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'failure_tags'", 'blank': 'True', 'to': "orm['lava_scheduler_app.JobFailureTag']"}),
136- 'group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.Group']", 'null': 'True', 'blank': 'True'}),
137- 'health_check': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
138- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
139- 'is_public': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
140- 'log_file': ('django.db.models.fields.files.FileField', [], {'default': 'None', 'max_length': '100', 'null': 'True', 'blank': 'True'}),
141- 'priority': ('django.db.models.fields.IntegerField', [], {'default': '50'}),
142- 'requested_device': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'related_name': "'+'", 'null': 'True', 'blank': 'True', 'to': "orm['lava_scheduler_app.Device']"}),
143- 'requested_device_type': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'related_name': "'+'", 'null': 'True', 'blank': 'True', 'to': "orm['lava_scheduler_app.DeviceType']"}),
144- 'start_time': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
145- 'status': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
146- 'sub_id': ('django.db.models.fields.CharField', [], {'max_length': '200', 'blank': 'True'}),
147- 'submit_time': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
148- 'submit_token': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['linaro_django_xmlrpc.AuthToken']", 'null': 'True', 'on_delete': 'models.SET_NULL', 'blank': 'True'}),
149- 'submitter': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'to': "orm['auth.User']"}),
150- 'tags': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['lava_scheduler_app.Tag']", 'symmetrical': 'False', 'blank': 'True'}),
151- 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'})
152- },
153- 'linaro_django_xmlrpc.authtoken': {
154- 'Meta': {'object_name': 'AuthToken'},
155- 'created_on': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
156- 'description': ('django.db.models.fields.TextField', [], {'default': "''", 'blank': 'True'}),
157- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
158- 'last_used_on': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
159- 'secret': ('django.db.models.fields.CharField', [], {'default': "'ynu6yihw337isktsrzd0ocr83r0huox1b5y4qs1c0ktat7s3089d2xgiz3ll0n68fr6q026mep0t5xwg1coxnl2aoknolgowx2779uluan8quez0row0jnk5j2qsxlle'", 'unique': 'True', 'max_length': '128'}),
160- 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'auth_tokens'", 'to': "orm['auth.User']"})
161- }
162- }
163-
164- complete_apps = ['lava_scheduler_app']
165\ No newline at end of file
166
167=== added file 'lava_scheduler_app/migrations/0030_auto__add_field_testjob_sub_id__add_field_testjob_target_group.py'
168--- lava_scheduler_app/migrations/0030_auto__add_field_testjob_sub_id__add_field_testjob_target_group.py 1970-01-01 00:00:00 +0000
169+++ lava_scheduler_app/migrations/0030_auto__add_field_testjob_sub_id__add_field_testjob_target_group.py 2013-06-25 12:38:27 +0000
170@@ -0,0 +1,169 @@
171+# -*- coding: utf-8 -*-
172+import datetime
173+from south.db import db
174+from south.v2 import SchemaMigration
175+from django.db import models
176+
177+
178+class Migration(SchemaMigration):
179+
180+ def forwards(self, orm):
181+ # Adding field 'TestJob.sub_id'
182+ db.add_column('lava_scheduler_app_testjob', 'sub_id',
183+ self.gf('django.db.models.fields.CharField')(default='', max_length=200, blank=True),
184+ keep_default=False)
185+
186+ # Adding field 'TestJob.target_group'
187+ db.add_column('lava_scheduler_app_testjob', 'target_group',
188+ self.gf('django.db.models.fields.CharField')(default=None, max_length=64, null=True, blank=True),
189+ keep_default=False)
190+
191+
192+ def backwards(self, orm):
193+ # Deleting field 'TestJob.sub_id'
194+ db.delete_column('lava_scheduler_app_testjob', 'sub_id')
195+
196+ # Deleting field 'TestJob.target_group'
197+ db.delete_column('lava_scheduler_app_testjob', 'target_group')
198+
199+
200+ models = {
201+ 'auth.group': {
202+ 'Meta': {'object_name': 'Group'},
203+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
204+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
205+ 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
206+ },
207+ 'auth.permission': {
208+ 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
209+ 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
210+ 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
211+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
212+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
213+ },
214+ 'auth.user': {
215+ 'Meta': {'object_name': 'User'},
216+ 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
217+ 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
218+ 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
219+ 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
220+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
221+ 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
222+ 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
223+ 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
224+ 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
225+ 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
226+ 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
227+ 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
228+ 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
229+ },
230+ 'contenttypes.contenttype': {
231+ 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
232+ 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
233+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
234+ 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
235+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
236+ },
237+ 'dashboard_app.bundle': {
238+ 'Meta': {'ordering': "['-uploaded_on']", 'object_name': 'Bundle'},
239+ '_gz_content': ('django.db.models.fields.files.FileField', [], {'max_length': '100', 'null': 'True', 'db_column': "'gz_content'"}),
240+ '_raw_content': ('django.db.models.fields.files.FileField', [], {'max_length': '100', 'null': 'True', 'db_column': "'content'"}),
241+ 'bundle_stream': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'bundles'", 'to': "orm['dashboard_app.BundleStream']"}),
242+ 'content_filename': ('django.db.models.fields.CharField', [], {'max_length': '256'}),
243+ 'content_sha1': ('django.db.models.fields.CharField', [], {'max_length': '40', 'unique': 'True', 'null': 'True'}),
244+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
245+ 'is_deserialized': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
246+ 'uploaded_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'uploaded_bundles'", 'null': 'True', 'to': "orm['auth.User']"}),
247+ 'uploaded_on': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.utcnow'})
248+ },
249+ 'dashboard_app.bundlestream': {
250+ 'Meta': {'object_name': 'BundleStream'},
251+ 'group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.Group']", 'null': 'True', 'blank': 'True'}),
252+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
253+ 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
254+ 'is_public': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
255+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '64', 'blank': 'True'}),
256+ 'pathname': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}),
257+ 'slug': ('django.db.models.fields.CharField', [], {'max_length': '64', 'blank': 'True'}),
258+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'})
259+ },
260+ 'lava_scheduler_app.device': {
261+ 'Meta': {'object_name': 'Device'},
262+ 'current_job': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['lava_scheduler_app.TestJob']", 'blank': 'True', 'unique': 'True'}),
263+ 'device_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['lava_scheduler_app.DeviceType']"}),
264+ 'device_version': ('django.db.models.fields.CharField', [], {'default': 'None', 'max_length': '200', 'null': 'True', 'blank': 'True'}),
265+ 'health_status': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
266+ 'hostname': ('django.db.models.fields.CharField', [], {'max_length': '200', 'primary_key': 'True'}),
267+ 'last_health_report_job': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['lava_scheduler_app.TestJob']", 'blank': 'True', 'unique': 'True'}),
268+ 'status': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
269+ 'tags': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['lava_scheduler_app.Tag']", 'symmetrical': 'False', 'blank': 'True'})
270+ },
271+ 'lava_scheduler_app.devicestatetransition': {
272+ 'Meta': {'object_name': 'DeviceStateTransition'},
273+ 'created_by': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'on_delete': 'models.SET_NULL', 'blank': 'True'}),
274+ 'created_on': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
275+ 'device': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'transitions'", 'to': "orm['lava_scheduler_app.Device']"}),
276+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
277+ 'job': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['lava_scheduler_app.TestJob']", 'null': 'True', 'on_delete': 'models.SET_NULL', 'blank': 'True'}),
278+ 'message': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
279+ 'new_state': ('django.db.models.fields.IntegerField', [], {}),
280+ 'old_state': ('django.db.models.fields.IntegerField', [], {})
281+ },
282+ 'lava_scheduler_app.devicetype': {
283+ 'Meta': {'object_name': 'DeviceType'},
284+ 'display': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
285+ 'health_check_job': ('django.db.models.fields.TextField', [], {'default': 'None', 'null': 'True', 'blank': 'True'}),
286+ 'name': ('django.db.models.fields.SlugField', [], {'max_length': '50', 'primary_key': 'True'})
287+ },
288+ 'lava_scheduler_app.jobfailuretag': {
289+ 'Meta': {'object_name': 'JobFailureTag'},
290+ 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
291+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
292+ 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '256'})
293+ },
294+ 'lava_scheduler_app.tag': {
295+ 'Meta': {'object_name': 'Tag'},
296+ 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
297+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
298+ 'name': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50'})
299+ },
300+ 'lava_scheduler_app.testjob': {
301+ 'Meta': {'object_name': 'TestJob'},
302+ '_results_bundle': ('django.db.models.fields.related.OneToOneField', [], {'null': 'True', 'db_column': "'results_bundle_id'", 'on_delete': 'models.SET_NULL', 'to': "orm['dashboard_app.Bundle']", 'blank': 'True', 'unique': 'True'}),
303+ '_results_link': ('django.db.models.fields.CharField', [], {'default': 'None', 'max_length': '400', 'null': 'True', 'db_column': "'results_link'", 'blank': 'True'}),
304+ 'actual_device': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'related_name': "'+'", 'null': 'True', 'blank': 'True', 'to': "orm['lava_scheduler_app.Device']"}),
305+ 'definition': ('django.db.models.fields.TextField', [], {}),
306+ 'description': ('django.db.models.fields.CharField', [], {'default': 'None', 'max_length': '200', 'null': 'True', 'blank': 'True'}),
307+ 'end_time': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
308+ 'failure_comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
309+ 'failure_tags': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'failure_tags'", 'blank': 'True', 'to': "orm['lava_scheduler_app.JobFailureTag']"}),
310+ 'group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.Group']", 'null': 'True', 'blank': 'True'}),
311+ 'health_check': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
312+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
313+ 'is_public': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
314+ 'log_file': ('django.db.models.fields.files.FileField', [], {'default': 'None', 'max_length': '100', 'null': 'True', 'blank': 'True'}),
315+ 'priority': ('django.db.models.fields.IntegerField', [], {'default': '50'}),
316+ 'requested_device': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'related_name': "'+'", 'null': 'True', 'blank': 'True', 'to': "orm['lava_scheduler_app.Device']"}),
317+ 'requested_device_type': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'related_name': "'+'", 'null': 'True', 'blank': 'True', 'to': "orm['lava_scheduler_app.DeviceType']"}),
318+ 'start_time': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
319+ 'status': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
320+ 'sub_id': ('django.db.models.fields.CharField', [], {'max_length': '200', 'blank': 'True'}),
321+ 'submit_time': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
322+ 'submit_token': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['linaro_django_xmlrpc.AuthToken']", 'null': 'True', 'on_delete': 'models.SET_NULL', 'blank': 'True'}),
323+ 'submitter': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'to': "orm['auth.User']"}),
324+ 'tags': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['lava_scheduler_app.Tag']", 'symmetrical': 'False', 'blank': 'True'}),
325+ 'target_group': ('django.db.models.fields.CharField', [], {'default': 'None', 'max_length': '64', 'null': 'True', 'blank': 'True'}),
326+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'})
327+ },
328+ 'linaro_django_xmlrpc.authtoken': {
329+ 'Meta': {'object_name': 'AuthToken'},
330+ 'created_on': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
331+ 'description': ('django.db.models.fields.TextField', [], {'default': "''", 'blank': 'True'}),
332+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
333+ 'last_used_on': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
334+ 'secret': ('django.db.models.fields.CharField', [], {'default': "'7rf4239t35kqjrcixn4srgw00r61ncuq51jna0d6xbwpg2ur2annw5y1gkr9yt6ys9gh06b3wtcum4j0f2pdn5crul72mu1e1tw4at9jfgwk18asogkgoqcbc20ftylx'", 'unique': 'True', 'max_length': '128'}),
335+ 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'auth_tokens'", 'to': "orm['auth.User']"})
336+ }
337+ }
338+
339+ complete_apps = ['lava_scheduler_app']
340\ No newline at end of file
341
342=== removed file 'lava_scheduler_app/migrations/0031_auto__add_field_testjob_target_group.py'
343--- lava_scheduler_app/migrations/0031_auto__add_field_testjob_target_group.py 2013-06-25 06:11:41 +0000
344+++ lava_scheduler_app/migrations/0031_auto__add_field_testjob_target_group.py 1970-01-01 00:00:00 +0000
345@@ -1,161 +0,0 @@
346-# -*- coding: utf-8 -*-
347-import datetime
348-from south.db import db
349-from south.v2 import SchemaMigration
350-from django.db import models
351-
352-
353-class Migration(SchemaMigration):
354-
355- def forwards(self, orm):
356- # Adding field 'TestJob.target_group'
357- db.add_column('lava_scheduler_app_testjob', 'target_group',
358- self.gf('django.db.models.fields.CharField')(default='', max_length=64, blank=True),
359- keep_default=False)
360-
361-
362- def backwards(self, orm):
363- # Deleting field 'TestJob.target_group'
364- db.delete_column('lava_scheduler_app_testjob', 'target_group')
365-
366-
367- models = {
368- 'auth.group': {
369- 'Meta': {'object_name': 'Group'},
370- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
371- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
372- 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
373- },
374- 'auth.permission': {
375- 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
376- 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
377- 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
378- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
379- 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
380- },
381- 'auth.user': {
382- 'Meta': {'object_name': 'User'},
383- 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
384- 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
385- 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
386- 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
387- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
388- 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
389- 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
390- 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
391- 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
392- 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
393- 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
394- 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
395- 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
396- },
397- 'contenttypes.contenttype': {
398- 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
399- 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
400- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
401- 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
402- 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
403- },
404- 'dashboard_app.bundle': {
405- 'Meta': {'ordering': "['-uploaded_on']", 'object_name': 'Bundle'},
406- '_gz_content': ('django.db.models.fields.files.FileField', [], {'max_length': '100', 'null': 'True', 'db_column': "'gz_content'"}),
407- '_raw_content': ('django.db.models.fields.files.FileField', [], {'max_length': '100', 'null': 'True', 'db_column': "'content'"}),
408- 'bundle_stream': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'bundles'", 'to': "orm['dashboard_app.BundleStream']"}),
409- 'content_filename': ('django.db.models.fields.CharField', [], {'max_length': '256'}),
410- 'content_sha1': ('django.db.models.fields.CharField', [], {'max_length': '40', 'unique': 'True', 'null': 'True'}),
411- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
412- 'is_deserialized': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
413- 'uploaded_by': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'uploaded_bundles'", 'null': 'True', 'to': "orm['auth.User']"}),
414- 'uploaded_on': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.utcnow'})
415- },
416- 'dashboard_app.bundlestream': {
417- 'Meta': {'object_name': 'BundleStream'},
418- 'group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.Group']", 'null': 'True', 'blank': 'True'}),
419- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
420- 'is_anonymous': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
421- 'is_public': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
422- 'name': ('django.db.models.fields.CharField', [], {'max_length': '64', 'blank': 'True'}),
423- 'pathname': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}),
424- 'slug': ('django.db.models.fields.CharField', [], {'max_length': '64', 'blank': 'True'}),
425- 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'})
426- },
427- 'lava_scheduler_app.device': {
428- 'Meta': {'object_name': 'Device'},
429- 'current_job': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['lava_scheduler_app.TestJob']", 'blank': 'True', 'unique': 'True'}),
430- 'device_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['lava_scheduler_app.DeviceType']"}),
431- 'device_version': ('django.db.models.fields.CharField', [], {'default': 'None', 'max_length': '200', 'null': 'True', 'blank': 'True'}),
432- 'health_status': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
433- 'hostname': ('django.db.models.fields.CharField', [], {'max_length': '200', 'primary_key': 'True'}),
434- 'last_health_report_job': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['lava_scheduler_app.TestJob']", 'blank': 'True', 'unique': 'True'}),
435- 'status': ('django.db.models.fields.IntegerField', [], {'default': '1'}),
436- 'tags': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['lava_scheduler_app.Tag']", 'symmetrical': 'False', 'blank': 'True'})
437- },
438- 'lava_scheduler_app.devicestatetransition': {
439- 'Meta': {'object_name': 'DeviceStateTransition'},
440- 'created_by': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'on_delete': 'models.SET_NULL', 'blank': 'True'}),
441- 'created_on': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
442- 'device': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'transitions'", 'to': "orm['lava_scheduler_app.Device']"}),
443- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
444- 'job': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['lava_scheduler_app.TestJob']", 'null': 'True', 'on_delete': 'models.SET_NULL', 'blank': 'True'}),
445- 'message': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
446- 'new_state': ('django.db.models.fields.IntegerField', [], {}),
447- 'old_state': ('django.db.models.fields.IntegerField', [], {})
448- },
449- 'lava_scheduler_app.devicetype': {
450- 'Meta': {'object_name': 'DeviceType'},
451- 'display': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
452- 'health_check_job': ('django.db.models.fields.TextField', [], {'default': 'None', 'null': 'True', 'blank': 'True'}),
453- 'name': ('django.db.models.fields.SlugField', [], {'max_length': '50', 'primary_key': 'True'})
454- },
455- 'lava_scheduler_app.jobfailuretag': {
456- 'Meta': {'object_name': 'JobFailureTag'},
457- 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
458- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
459- 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '256'})
460- },
461- 'lava_scheduler_app.tag': {
462- 'Meta': {'object_name': 'Tag'},
463- 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
464- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
465- 'name': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50'})
466- },
467- 'lava_scheduler_app.testjob': {
468- 'Meta': {'object_name': 'TestJob'},
469- '_results_bundle': ('django.db.models.fields.related.OneToOneField', [], {'null': 'True', 'db_column': "'results_bundle_id'", 'on_delete': 'models.SET_NULL', 'to': "orm['dashboard_app.Bundle']", 'blank': 'True', 'unique': 'True'}),
470- '_results_link': ('django.db.models.fields.CharField', [], {'default': 'None', 'max_length': '400', 'null': 'True', 'db_column': "'results_link'", 'blank': 'True'}),
471- 'actual_device': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'related_name': "'+'", 'null': 'True', 'blank': 'True', 'to': "orm['lava_scheduler_app.Device']"}),
472- 'definition': ('django.db.models.fields.TextField', [], {}),
473- 'description': ('django.db.models.fields.CharField', [], {'default': 'None', 'max_length': '200', 'null': 'True', 'blank': 'True'}),
474- 'end_time': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
475- 'failure_comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
476- 'failure_tags': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'failure_tags'", 'blank': 'True', 'to': "orm['lava_scheduler_app.JobFailureTag']"}),
477- 'group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.Group']", 'null': 'True', 'blank': 'True'}),
478- 'health_check': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
479- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
480- 'is_public': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
481- 'log_file': ('django.db.models.fields.files.FileField', [], {'default': 'None', 'max_length': '100', 'null': 'True', 'blank': 'True'}),
482- 'priority': ('django.db.models.fields.IntegerField', [], {'default': '50'}),
483- 'requested_device': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'related_name': "'+'", 'null': 'True', 'blank': 'True', 'to': "orm['lava_scheduler_app.Device']"}),
484- 'requested_device_type': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'related_name': "'+'", 'null': 'True', 'blank': 'True', 'to': "orm['lava_scheduler_app.DeviceType']"}),
485- 'start_time': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
486- 'status': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
487- 'sub_id': ('django.db.models.fields.CharField', [], {'max_length': '200', 'blank': 'True'}),
488- 'submit_time': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
489- 'submit_token': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['linaro_django_xmlrpc.AuthToken']", 'null': 'True', 'on_delete': 'models.SET_NULL', 'blank': 'True'}),
490- 'submitter': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'to': "orm['auth.User']"}),
491- 'tags': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['lava_scheduler_app.Tag']", 'symmetrical': 'False', 'blank': 'True'}),
492- 'target_group': ('django.db.models.fields.CharField', [], {'max_length': '64', 'blank': 'True'}),
493- 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'})
494- },
495- 'linaro_django_xmlrpc.authtoken': {
496- 'Meta': {'object_name': 'AuthToken'},
497- 'created_on': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
498- 'description': ('django.db.models.fields.TextField', [], {'default': "''", 'blank': 'True'}),
499- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
500- 'last_used_on': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
501- 'secret': ('django.db.models.fields.CharField', [], {'default': "'1n07jwp73fldk40sk0hshidru6nh5rqlrn40oq4hs5f9wx99o0wemwme43raxx008kyfsbahl56x8wyndgyclbapc43maycile201e1snt6p8a02n4hgyc506fda8umq'", 'unique': 'True', 'max_length': '128'}),
502- 'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'auth_tokens'", 'to': "orm['auth.User']"})
503- }
504- }
505-
506- complete_apps = ['lava_scheduler_app']
507\ No newline at end of file
508
509=== modified file 'lava_scheduler_app/models.py'
510--- lava_scheduler_app/models.py 2013-06-25 06:11:41 +0000
511+++ lava_scheduler_app/models.py 2013-06-25 12:38:27 +0000
512@@ -262,7 +262,9 @@
513 target_group = models.CharField(
514 verbose_name = _(u"Target Group"),
515 blank = True,
516- max_length = 64
517+ max_length = 64,
518+ null = True,
519+ default = None
520 )
521
522 submitter = models.ForeignKey(
523@@ -523,8 +525,7 @@
524 definition=json_data, submitter=submitter,
525 requested_device=target, requested_device_type=device_type,
526 description=job_name, health_check=health_check, user=user,
527- group=group, is_public=is_public, priority=priority,
528- target_group=None)
529+ group=group, is_public=is_public, priority=priority)
530 job.save()
531 return job.id
532

Subscribers

People subscribed via source and target branches

to status/vote changes: