def __call__(self):
        token = self.request.get('token', None)
        if token is None:
            raise BadRequest('No token')

        storage = IDownloadTokenStorage(self.context)
        downloadtoken = storage.get_downloadtoken(token)

        if downloadtoken is None:
            raise BadRequest('No valid token')

        return self.download_file(downloadtoken)
    def test_get_inexistend_downloadtoken(self):
        storage = IDownloadTokenStorage(self.portal)
        file_ = create(Builder('file'))

        storage.add(file_, '*****@*****.**')
        self.assertIsNone(storage.get_downloadtoken('12345'))
    def test_get_downloadtoken_by_token(self):
        storage = IDownloadTokenStorage(self.portal)
        file_ = create(Builder('file'))

        added = storage.add(file_, '*****@*****.**')
        self.assertEquals(added, storage.get_downloadtoken(added.token))