def create(self): """ Create a new translation supplied as a string. Returns: A dict with information for the request. Raises: BadRequestError: There was a problem with the request. NoContentError: There was no content string in the request. """ if 'content' not in self.data: raise NoContentError("No content found.") parser = parser_for( mimetype=get_mimetype_from_method(self.resource.i18n_type) ) if parser is None: raise BadRequestError("Mimetype not supported") file_ = tempfile.NamedTemporaryFile( mode='wb', suffix=get_file_extension_for_method(self.resource.i18n_type), delete=False, ) try: file_.write(self.data['content'].encode('UTF-8')) file_.close() try: parser.contents_check(file_.name) except (FileCheckError, ParseError), e: raise BadRequestError(e.message) except Exception, e: logger.error(e.message, exc_info=True) raise BadRequestError("A strange error has happened.")
def create(self): """ Creates a new translation from file. Returns: A dict with information for the translation. Raises: BadRequestError: There was a problem with the request. NoContentError: There was no file in the request. """ if not self.request.FILES: raise NoContentError("No file has been uploaded.") submitted_file = self.request.FILES.values()[0] name = str(submitted_file.name) size = submitted_file.size try: file_ = tempfile.NamedTemporaryFile( mode='wb', suffix=name[name.rfind('.'):], delete=False ) for chunk in submitted_file.chunks(): file_.write(chunk) file_.close() parser = parser_for(file_.name) if parser is None: raise BadRequestError("Unknown file type") if size == 0: raise BadRequestError("Empty file") try: parser.contents_check(file_.name) logger.debug("Uploaded file %s" % file_.name) except (FileCheckError, ParseError), e: raise BadRequestError("Error uploading file: %s" % e.message) except Exception, e: logger.error(e.message, exc_info=True) raise BadRequestError("A strange error happened.")