Add REST API endpoint to notify Datatracker that new recording files are available. Commit ready for merge.

- Legacy-Id: 13125
This commit is contained in:
Ryan Cross 2017-03-25 21:52:11 +00:00
parent 73dfdfbd2c
commit a50b09b152
4 changed files with 40 additions and 2 deletions

View file

@ -13,6 +13,7 @@ from tastypie.test import ResourceTestCaseMixin
import debug # pyflakes:ignore
from ietf.utils.test_utils import TestCase
from ietf.meeting.test_data import make_meeting_test_data
OMITTED_APPS = (
'ietf.secr.meetings',
@ -20,6 +21,17 @@ OMITTED_APPS = (
'ietf.ipr',
)
class CustomApiTestCase(TestCase):
def test_notify_meeting_import_audio_files(self):
meeting = make_meeting_test_data()
client = Client(Accept='application/json')
# try invalid method GET
r = client.get("/api/notify/v1/meeting/import_recordings/{}".format(meeting.number))
self.assertEqual(r.status_code, 405)
# try valid method POST
r = client.post("/api/notify/v1/meeting/import_recordings/{}".format(meeting.number))
self.assertEqual(r.status_code, 201)
class TastypieApiTestCase(ResourceTestCaseMixin, TestCase):
def __init__(self, *args, **kwargs):
self.apps = {}

9
ietf/meeting/api_urls.py Normal file
View file

@ -0,0 +1,9 @@
# Copyright The IETF Trust 2007, All Rights Reserved
from ietf.meeting import views
from ietf.utils.urls import url
urlpatterns = [
url(r'^import_recordings/(?P<number>[A-Za-z0-9._+-]+)/?$', views.api_import_recordings),
]

View file

@ -31,7 +31,7 @@ from django.template.loader import render_to_string
from django.utils.functional import curry
from django.views.decorators.cache import cache_page
from django.utils.text import slugify
from django.views.decorators.csrf import ensure_csrf_cookie
from django.views.decorators.csrf import ensure_csrf_cookie, csrf_exempt
from django.views.generic import RedirectView
from django.template.defaultfilters import filesizeformat
@ -58,7 +58,7 @@ from ietf.meeting.helpers import send_interim_approval_request
from ietf.meeting.helpers import send_interim_announcement_request
from ietf.meeting.utils import finalize
from ietf.secr.proceedings.utils import handle_upload_file
from ietf.secr.proceedings.proc_utils import get_progress_stats, post_process
from ietf.secr.proceedings.proc_utils import get_progress_stats, post_process, import_audio_files
from ietf.utils import log
from ietf.utils.mail import send_mail_message
from ietf.utils.pipe import pipe
@ -2162,3 +2162,15 @@ def proceedings_progress_report(request, num=None):
class OldUploadRedirect(RedirectView):
def get_redirect_url(self, **kwargs):
return reverse_lazy('ietf.meeting.views.session_details',kwargs=self.kwargs)
@csrf_exempt
def api_import_recordings(request, number):
'''REST API to check for recording files and import'''
if request.method == 'POST':
meeting = get_meeting(number)
import_audio_files(meeting)
return HttpResponse(status=201)
else:
return HttpResponse(status=405)

View file

@ -82,6 +82,11 @@ for n,a in api._api_list:
url(r'^api/v1/', include(a.urls)),
]
# Custom API endpoints
urlpatterns += [
url(r'^api/notify/v1/meeting/', include('ietf.meeting.api_urls')),
]
# This is needed to serve files during testing
if settings.SERVER_MODE in ('development', 'test'):
save_debug = settings.DEBUG