def post(self, request, pk=None, format=None):
        course_pk = pk
        course = get_object_or_404(Course, pk=pk)
        file_param = 'file'
        if file_param not in request.FILES:
            raise exceptions.APIException("Error: missing '%s' parameter in upload" % file_param)
        elif len(request.FILES) == 0:
            raise exceptions.APIException("Error: no files uploaded")

        response_data = []
        logger.debug("File uploads: %s" % request.FILES.getlist(file_param))

        files = processFileUploads(request.FILES.getlist(file_param))

        for file_upload in files:
            logger.debug("Processing file upload: %s" % file_upload.name)
            data = request.data.copy()
            data['course_id'] = course.pk
            serializer = ResourceSerializer(data=data, context={'request': request}, file_upload=file_upload)
            if serializer.is_valid():
                serializer.save()
                response_data.append(serializer.data)
            else:
                logger.error(serializer.errors)
                return Response(response_data + [serializer.errors], status=status.HTTP_400_BAD_REQUEST)
        return Response(response_data, status=status.HTTP_201_CREATED)
    def testProcessFileUploads(self, mock_is_zipfile, mock_zip):
        testZip = MockZipFile()
        testZip.write(self.test_files['test.png']['filename'])
        testZip.write(self.test_files['empty.jpg']['filename'])

        files = [testZip]
        mock_zip.return_value = testZip
        mock_is_zipfile.return_value = True
        files = processFileUploads(files)
        self.assertEqual(len(files), 2)
        self.assertNotIn(testZip, files)

        testZip.write('some_directory/')
        files = [testZip]
        files = processFileUploads(files)
        self.assertEqual(len(files), 2)
        self.assertNotIn('some_directory/', files)