Skip to content
Snippets Groups Projects
Verified Commit f3d77ef7 authored by Eliot Berriot's avatar Eliot Berriot
Browse files

Update request status based on batch status

parent b492e133
No related branches found
No related tags found
No related merge requests found
# Generated by Django 2.0.2 on 2018-02-20 22:48
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('requests', '__first__'),
('music', '0021_populate_batch_status'),
]
operations = [
migrations.AddField(
model_name='importbatch',
name='import_request',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='import_batches', to='requests.ImportRequest'),
),
]
......@@ -466,3 +466,26 @@ class ImportJob(models.Model):
@receiver(post_save, sender=ImportJob)
def update_batch_status(sender, instance, **kwargs):
instance.batch.update_status()
@receiver(post_save, sender=ImportBatch)
def update_request_status(sender, instance, created, **kwargs):
update_fields = kwargs.get('update_fields', []) or []
if not instance.import_request:
return
if not created and not 'status' in update_fields:
return
r_status = instance.import_request.status
status = instance.status
if status == 'pending' and r_status == 'pending':
# let's mark the request as accepted since we started an import
instance.import_request.status = 'accepted'
return instance.import_request.save(update_fields=['status'])
if status == 'finished' and r_status == 'accepted':
# let's mark the request as imported since the import is over
instance.import_request.status = 'imported'
return instance.import_request.save(update_fields=['status'])
import pytest
from django.forms import ValidationError
def test_can_bind_import_batch_to_request(factories):
request = factories['requests.ImportRequest']()
assert request.status == 'pending'
# when we create the import, we consider the request as accepted
batch = factories['music.ImportBatch'](import_request=request)
request.refresh_from_db()
assert request.status == 'accepted'
# now, the batch is finished, therefore the request status should be
# imported
batch.status = 'finished'
batch.save(update_fields=['status'])
request.refresh_from_db()
assert request.status == 'imported'
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment