Skip to content

Commit 05e1d90

Browse files
committed
Queue name field added
1 parent 0239274 commit 05e1d90

File tree

5 files changed

+32
-8
lines changed

5 files changed

+32
-8
lines changed

django_dbq/management/commands/create_job.py

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,10 @@ class Command(BaseCommand):
1616

1717
option_list = BaseCommand.option_list + (
1818
make_option('--workspace',
19-
help='JSON-formatted initial command workspace'),)
19+
help='JSON-formatted initial command workspace'),
20+
make_option('--queue_name',
21+
help='A specific queue to add this job to'),
22+
)
2023

2124
def handle(self, *args, **options):
2225
if len(args) != 1:
@@ -30,5 +33,15 @@ def handle(self, *args, **options):
3033
if workspace:
3134
workspace = json.loads(workspace)
3235

33-
job = Job.objects.create(name=name, workspace=workspace)
36+
queue_name = options['queue_name']
37+
38+
kwargs = {
39+
'name': name,
40+
'workspace': workspace,
41+
}
42+
43+
if queue_name:
44+
kwargs['queue_name'] = queue_name
45+
46+
job = Job.objects.create(**kwargs)
3447
self.stdout.write('Created job: "%s", id=%s' % (job.name, job.pk))

django_dbq/migrations/0001_initial.py

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,34 +9,36 @@ class Migration(SchemaMigration):
99

1010
def forwards(self, orm):
1111
# Adding model 'Job'
12-
db.create_table(u'core_job', (
12+
db.create_table(u'django_dbq_job', (
1313
('id', self.gf('uuidfield.fields.UUIDField')(unique=True, max_length=32, primary_key=True, db_index=True)),
1414
('created', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, db_index=True, blank=True)),
1515
('modified', self.gf('django.db.models.fields.DateTimeField')(auto_now=True, blank=True)),
1616
('name', self.gf('django.db.models.fields.CharField')(max_length=100)),
1717
('state', self.gf('django.db.models.fields.CharField')(default='NEW', max_length=20, db_index=True)),
1818
('next_task', self.gf('django.db.models.fields.CharField')(max_length=100, blank=True)),
1919
('workspace', self.gf('jsonfield.fields.JSONField')(null=True)),
20+
('queue_name', self.gf('django.db.models.fields.CharField')(default='default', max_length=20, db_index=True)),
2021
))
21-
db.send_create_signal(u'core', ['Job'])
22+
db.send_create_signal(u'django_dbq', ['Job'])
2223

2324

2425
def backwards(self, orm):
2526
# Deleting model 'Job'
26-
db.delete_table(u'core_job')
27+
db.delete_table(u'django_dbq_job')
2728

2829

2930
models = {
30-
u'core.job': {
31+
u'django_dbq.job': {
3132
'Meta': {'ordering': "['-created']", 'object_name': 'Job'},
3233
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'db_index': 'True', 'blank': 'True'}),
3334
'id': ('uuidfield.fields.UUIDField', [], {'unique': 'True', 'max_length': '32', 'primary_key': 'True', 'db_index': 'True'}),
3435
'modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
3536
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
3637
'next_task': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
38+
'queue_name': ('django.db.models.fields.CharField', [], {'default': "'default'", 'max_length': '20', 'db_index': 'True'}),
3739
'state': ('django.db.models.fields.CharField', [], {'default': "'NEW'", 'max_length': '20', 'db_index': 'True'}),
3840
'workspace': ('jsonfield.fields.JSONField', [], {'null': 'True'})
3941
}
4042
}
4143

42-
complete_apps = ['core']
44+
complete_apps = ['django_dbq']

django_dbq/models.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ class JobManager(models.Manager):
1414

1515
def get_ready_or_none(self, max_retries=3):
1616
"""
17-
Get a job in state READY. Supports retrying in case of database deadlock
17+
Get a job in state READY or NEW. Supports retrying in case of database deadlock
1818
1919
See https://dev.mysql.com/doc/refman/5.0/en/innodb-deadlocks.html
2020
@@ -50,6 +50,7 @@ class Job(models.Model):
5050
state = models.CharField(max_length=20, choices=STATES, default=STATES.NEW, db_index=True)
5151
next_task = models.CharField(max_length=100, blank=True)
5252
workspace = JSONField(null=True)
53+
queue_name = models.CharField(max_length=20, default='default', db_index=True)
5354

5455
class Meta:
5556
ordering = ['-created']

django_dbq/tests.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,13 +36,20 @@ def test_create_job(self):
3636
call_command('create_job', 'testjob', stdout=StringIO())
3737
job = Job.objects.get()
3838
self.assertEqual(job.name, 'testjob')
39+
self.assertEqual(job.queue_name, 'default')
3940

4041
def test_create_job_with_workspace(self):
4142
workspace = '{"test": "test"}'
4243
call_command('create_job', 'testjob', workspace=workspace, stdout=StringIO())
4344
job = Job.objects.get()
4445
self.assertEqual(job.workspace, {'test': 'test'})
4546

47+
def test_create_job_with_queue_name(self):
48+
call_command('create_job', 'testjob', queue_name='lol', stdout=StringIO())
49+
job = Job.objects.get()
50+
self.assertEqual(job.name, 'testjob')
51+
self.assertEqual(job.queue_name, 'lol')
52+
4653
def test_errors_raised_correctly(self):
4754
with self.assertRaises(CommandError):
4855
call_command('create_job', stdout=StringIO())

testsettings.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
INSTALLED_APPS = (
99
'django_dbq',
10+
'south'
1011
)
1112

1213
MIDDLEWARE_CLASSES = (

0 commit comments

Comments
 (0)