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
     )
Beispiel #4
0
 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
     )
Beispiel #6
0
 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
Beispiel #7
0
 def on_get(self, req, resp, number):
     pager_elements = self._finder.fragment_pager(
         parse_museum_number(number))
     resp.text = FragmentPagerInfoSchema().dumps(pager_elements)
Beispiel #8
0
 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))
Beispiel #11
0
 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