Skip to content

Commit a50b09b

Browse files
committed
Add REST API endpoint to notify Datatracker that new recording files are available. Commit ready for merge.
- Legacy-Id: 13125
1 parent 73dfdfb commit a50b09b

4 files changed

Lines changed: 40 additions & 2 deletions

File tree

ietf/api/tests.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,25 @@
1313
import debug # pyflakes:ignore
1414

1515
from ietf.utils.test_utils import TestCase
16+
from ietf.meeting.test_data import make_meeting_test_data
1617

1718
OMITTED_APPS = (
1819
'ietf.secr.meetings',
1920
'ietf.secr.proceedings',
2021
'ietf.ipr',
2122
)
2223

24+
class CustomApiTestCase(TestCase):
25+
def test_notify_meeting_import_audio_files(self):
26+
meeting = make_meeting_test_data()
27+
client = Client(Accept='application/json')
28+
# try invalid method GET
29+
r = client.get("/api/notify/v1/meeting/import_recordings/{}".format(meeting.number))
30+
self.assertEqual(r.status_code, 405)
31+
# try valid method POST
32+
r = client.post("/api/notify/v1/meeting/import_recordings/{}".format(meeting.number))
33+
self.assertEqual(r.status_code, 201)
34+
2335
class TastypieApiTestCase(ResourceTestCaseMixin, TestCase):
2436
def __init__(self, *args, **kwargs):
2537
self.apps = {}

ietf/meeting/api_urls.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
# Copyright The IETF Trust 2007, All Rights Reserved
2+
3+
from ietf.meeting import views
4+
from ietf.utils.urls import url
5+
6+
7+
urlpatterns = [
8+
url(r'^import_recordings/(?P<number>[A-Za-z0-9._+-]+)/?$', views.api_import_recordings),
9+
]

ietf/meeting/views.py

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
from django.utils.functional import curry
3232
from django.views.decorators.cache import cache_page
3333
from django.utils.text import slugify
34-
from django.views.decorators.csrf import ensure_csrf_cookie
34+
from django.views.decorators.csrf import ensure_csrf_cookie, csrf_exempt
3535
from django.views.generic import RedirectView
3636
from django.template.defaultfilters import filesizeformat
3737

@@ -58,7 +58,7 @@
5858
from ietf.meeting.helpers import send_interim_announcement_request
5959
from ietf.meeting.utils import finalize
6060
from ietf.secr.proceedings.utils import handle_upload_file
61-
from ietf.secr.proceedings.proc_utils import get_progress_stats, post_process
61+
from ietf.secr.proceedings.proc_utils import get_progress_stats, post_process, import_audio_files
6262
from ietf.utils import log
6363
from ietf.utils.mail import send_mail_message
6464
from ietf.utils.pipe import pipe
@@ -2162,3 +2162,15 @@ def proceedings_progress_report(request, num=None):
21622162
class OldUploadRedirect(RedirectView):
21632163
def get_redirect_url(self, **kwargs):
21642164
return reverse_lazy('ietf.meeting.views.session_details',kwargs=self.kwargs)
2165+
2166+
@csrf_exempt
2167+
def api_import_recordings(request, number):
2168+
'''REST API to check for recording files and import'''
2169+
if request.method == 'POST':
2170+
meeting = get_meeting(number)
2171+
import_audio_files(meeting)
2172+
return HttpResponse(status=201)
2173+
else:
2174+
return HttpResponse(status=405)
2175+
2176+

ietf/urls.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,11 @@
8282
url(r'^api/v1/', include(a.urls)),
8383
]
8484

85+
# Custom API endpoints
86+
urlpatterns += [
87+
url(r'^api/notify/v1/meeting/', include('ietf.meeting.api_urls')),
88+
]
89+
8590
# This is needed to serve files during testing
8691
if settings.SERVER_MODE in ('development', 'test'):
8792
save_debug = settings.DEBUG

0 commit comments

Comments
 (0)