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:
parent
73dfdfbd2c
commit
a50b09b152
|
@ -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
9
ietf/meeting/api_urls.py
Normal 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),
|
||||
]
|
|
@ -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)
|
||||
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue