8000 Signal strategy with views · mauler/django-elastic-transcoder@46dcda6 · GitHub
[go: up one dir, main page]

Skip to content

Commit 46dcda6

Browse files
committed
Signal strategy with views
1 parent e4bf12d commit 46dcda6

File tree

2 files changed

+58
-59
lines changed

2 files changed

+58
-59
lines changed

dj_elastictranscoder/tests.py

Lines changed: 49 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,18 @@
22
import json
33

44
from django.test import TestCase
5+
from django.dispatch import receiver
56
from django.db import models
67
from django.contrib.contenttypes.models import ContentType
78

89
from .models import EncodeJob
10+
from .signals import (
11+
transcode_init,
12+
transcode_onprogress,
13+
transcode_onerror,
14+
transcode_oncomplete
15+
)
16+
917

1018

1119
PROJECT_ROOT = os.path.dirname(os.path.realpath(__file__))
@@ -15,6 +23,46 @@
1523
class Item(models.Model):
1624
name = models.CharField(max_length=100)
1725

26+
# ======================
27+
# define signal receiver
28+
# ======================
29+
30+
@receiver(transcode_init)
31+
def encode_init(sender, message, **kwargs):
32+
item = Item.objects.create(name='Hello')
33+
34+
ctype = ContentType.objects.get_for_model(item)
35+
36+
job = EncodeJob()
37+
job.id = message['Job']['Id']
38+
job.content_type = ctype
39+
job.object_id = item.id
40+
job.save()
41+
42+
43+
@receiver(transcode_onprogress)
44+
def encode_onprogress(sender, message, **kwargs):
45+
job = EncodeJob.objects.get(pk=message['jobId'])
46+
job.message = 'Progress'
47+
job.state = 1
48+
job.save()
49+
50+
51+
@receiver(transcode_onerror)
52+
def encode_onerror(sender, message, **kwargs):
53+
job = EncodeJob.objects.get(pk=message['jobId'])
54+
job.message = message['messageDetails']
55+
job.state = 2
56+
job.save()
57+
58+
59+
@receiver(transcode_oncomplete)
60+
def job_record(sender, message, **kwargs):
61+
job = EncodeJob.objects.get(pk=message['jobId'])
62+
job.message = 'Success'
63+
job.state = 4
64+
job.save()
65+
1866

1967
class SNSNotificationTest(TestCase):
2068
urls = 'dj_elastictranscoder.urls'
@@ -51,7 +99,7 @@ def test_onerror(self):
5199
self.assertEqual(resp.content, 'Done')
52100

53101
job = EncodeJob.objects.get(id=self.job_id)
54-
self.assertEqual(job.state, 3)
102+
self.assertEqual(job.state, 2)
55103

56104

57105
def test_oncomplete(self):
@@ -66,14 +114,6 @@ def test_oncomplete(self):
66114
self.assertEqual(job.state, 4)
67115

68116

69-
from .signals import (
70-
transcode_init,
71-
transcode_onprogress,
72-
transcode_onerror,
73-
transcode_oncomplete
74-
)
75-
from django.dispatch import receiver
76-
77117

78118
class SignalTest(TestCase):
79119

@@ -85,19 +125,6 @@ def test_transcode_init(self):
85125
with open(os.path.join(FIXTURE_DIRS, 'submit.json')) as f:
86126
message = json.loads(f.read())
87127

88-
# define signal receiver
89-
@receiver(transcode_init)
90-
def job_record(sender, message, **kwargs):
91-
item = Item.objects.create(name='Hello')
92-
93-
ctype = ContentType.objects.get_for_model(item)
94-
95-
job = EncodeJob()
96-
job.id = message['Job']['Id']
97-
job.content_type = ctype
98-
job.object_id = item.id
99-
job.save()
100-
101128
# send signal
102129
transcode_init.send(sender=None, message=message)
103130

@@ -127,14 +154,6 @@ def test_transcode_onprogress(self):
127154
resp = json.loads(f.read())
128155
message = json.loads(resp['Message'])
129156

130-
# define signal receiver
131-
@receiver(transcode_onprogress)
132-
def job_record(sender, message, **kwargs):
133-
job = EncodeJob.objects.get(pk=message['jobId'])
134-
job.message = 'Progress'
135-
job.state = 1
136-
job.save()
137-
138157
# send signal
139158
transcode_onprogress.send(sender=None, message=message)
140159

@@ -169,15 +188,6 @@ def test_transcode_onerror(self):
169188
resp = json.loads(f.read())
170189
message = json.loads(resp['Message'])
171190

172-
173-
# define signal receiver
174-
@receiver(transcode_onerror)
175-
def job_record(sender, message, **kwargs):
176-
job = EncodeJob.objects.get(pk=message['jobId'])
177-
job.message = message['messageDetails']
178-
job.state = 2
179-
job.save()
180-
181191
# send signal
182192
transcode_onerror.send(sender=None, message=message)
183193

@@ -212,14 +222,6 @@ def test_transcode_oncomplete(self):
212222
resp = json.loads(f.read())
213223
message = json.loads(resp['Message'])
214224

215-
# define signal receiver
216-
@receiver(transcode_oncomplete)
217-
def job_record(sender, message, **kwargs):
218-
job = EncodeJob.objects.get(pk=message['jobId'])
219-
job.message = 'Success'
220-
job.state = 4
221-
job.save()
222-
223225
# send signal
224226
transcode_oncomplete.send(sender=None, message=message)
225227

dj_elastictranscoder/views.py

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,11 @@
33
from django.http import HttpResponse, HttpResponseBadRequest
44
from django.core.mail import mail_admins
55

6-
from .models import EncodeJob
7-
6+
from .signals import (
7+
transcode_onprogress,
8+
transcode_onerror,
9+
transcode_oncomplete
10+
)
811

912
def sns_endpoint(request):
1013
"""
@@ -35,18 +38,12 @@ def sns_endpoint(request):
3538
except ValueError:
3639
assert False, data['Message']
3740

38-
job, created = EncodeJob.objects.get_or_create(id=message['jobId'])
39-
41+
#
4042
if message['state'] == 'PROGRESSING':
41-
job.state = 1
43+
transcode_onprogress.send(sender=None, message=message)
4244
elif message['state'] == 'COMPLETED':
43-
job.state = 4
45+
transcode_oncomplete.send(sender=None, message=message)
4446
elif message['state'] == 'ERROR':
45-
job.state = 3
46-
47-
job.message = json.dumps(message)
48-
job.save()
49-
50-
# TODO: send signal to handler
47+
transcode_onerror.send(sender=None, message=message)
5148

5249
return HttpResponse('Done')

0 commit comments

Comments
 (0)
0