def on_get(self, req, resp, folio_name, folio_number, number): if req.context.user.can_read_folio(folio_name): folio = self._finder.folio_pager(folio_name, folio_number, parse_museum_number(number)) resp.media = FolioPagerInfoSchema().dump(folio) else: raise falcon.HTTPForbidden()
def on_get(self, req, resp: falcon.Response, number: str): museum_number = parse_museum_number(number) if req.params.get("generateAnnotations") == "true": annotations = self._annotation_service.generate_annotations( museum_number) else: annotations = self._annotation_service.find(museum_number) resp.media = AnnotationsSchema().dump(annotations)
def insert_lemmatization( self, updater: FragmentUpdater, lemmatization, museum_number ): lemmatization = Lemmatization(tuple(lemmatization)) user = AtfImporterUser(self.username) updater.update_lemmatization( parse_museum_number(museum_number), lemmatization, user )
def on_post(self, req: Request, resp: Response, number: str) -> None: try: user = req.context.user updated_fragment, has_photo = self._updater.update_genres( parse_museum_number(number), GenreSchema().load(req.media["genres"], many=True), user, ) resp.media = create_response_dto(updated_fragment, user, has_photo) except ValueError as error: raise DataError(error)
def insert_translitertions( self, transliteration_factory: TransliterationUpdateFactory, updater: FragmentUpdater, transliterations, museum_number, ) -> None: converted_transliteration = "\n".join(transliterations) transliteration = transliteration_factory.create( Atf(converted_transliteration), "" ) user = AtfImporterUser(self.username) updater.update_transliteration( parse_museum_number(museum_number), transliteration, user )
def on_post(self, req: Request, resp: Response, number: str) -> None: try: user = req.context.user updated_fragment, has_photo = self._updater.update_transliteration( parse_museum_number(number), self._create_transliteration(req.media), user, ) resp.media = create_response_dto(updated_fragment, user, has_photo) except TransliterationError as error: resp.status = falcon.HTTP_UNPROCESSABLE_ENTITY resp.media = { "title": resp.status, "description": str(error), "errors": error.errors, } except NotLowestJoinError as error: raise DataError(error) from error
def on_get(self, req, resp, number): pager_elements = self._finder.fragment_pager( parse_museum_number(number)) resp.text = FragmentPagerInfoSchema().dumps(pager_elements)
def on_get(self, req: Request, resp: Response, number: str): user: User = req.context.user fragment, has_photo = self._finder.find(parse_museum_number(number)) resp.media = create_response_dto(fragment, user, has_photo)
def on_post(self, req, resp, number): user = req.context.user updated_fragment, has_photo = self._updater.update_lemmatization( parse_museum_number(number), LemmatizationSchema().load(req.media), user) resp.media = create_response_dto(updated_fragment, user, has_photo)
def insert_into_db(self, ebl_lines, filename): context = create_context() transliteration_factory = context.get_transliteration_update_factory() updater = context.get_fragment_updater() cdli_number = self.get_cdli_number(ebl_lines["control_lines"]) museum_number = self.get_museum_number_by_cdli_number(cdli_number) if museum_number is None: self.logger.warning( "No museum number to cdli number'" + cdli_number + "' found. Trying to parse from original file..." ) try: museum_number_split = self.get_museum_number(ebl_lines["control_lines"]) parse_museum_number(museum_number_split.strip()) museum_number = museum_number_split except Exception: self.logger.error( "Could not find valid museum number in '" + filename + "'" ) skip = False while museum_number is None: museum_number_input = input( "Please enter a valid museum number (enter 'skip' to skip this file): " ) try: if museum_number_input == "skip": skip = True break parse_museum_number(museum_number_input) museum_number = museum_number_input self.logger.info("Museum number '" + museum_number + "' is valid!") except Exception: pass if skip: failed.append(filename + " could not be imported: Museum number not found") self.logger.error("Museum number not found") self.logger.info( Util.print_frame('Conversion of "' + filename + '.atf" failed') ) return try: # insert transliteration self.insert_translitertions( transliteration_factory, updater, ebl_lines["transliteration"], museum_number, ) # insert lemmatization self.insert_lemmatization( updater, ebl_lines["lemmatization"], museum_number ) success.append(filename + " successfully imported") self.logger.info( Util.print_frame( 'Conversion of "' + filename + '.atf" finished (museum number "' + museum_number + '")' ) ) except Exception as e: self.logger.error(filename + " could not be imported: " + str(e)) failed.append(filename + " could not be imported: " + str(e))
def on_post(self, req, resp, number) -> None: user = req.context.user updated_fragment, has_photo = self._updater.update_references( parse_museum_number(number), ReferencesDtoSchema().load(req.media), user) resp.media = create_response_dto(updated_fragment, user, has_photo)
def test_parse_invalid_museum_number(): with pytest.raises(DataError): parse_museum_number("invalid")
def test_parse_museum_number(): number = MuseumNumber("A", "B", "C") assert parse_museum_number(str(number)) == number