示例#1
0
def add_wake_word(db) -> WakeWord:
    """Add a wake word for use in testing.

    :param db: Database connection to the Mycroft DB
    :return:
    """
    wake_word = WakeWord(name="hey selene", engine="precise")
    wake_word_repository = WakeWordRepository(db)
    wake_word.id = wake_word_repository.add(wake_word)

    return wake_word
示例#2
0
    def get_by_submission_date(self, submission_date: date) -> List[WakeWordFile]:
        """Get sample file references based on the submission date.

        :param submission_date: identifies the date the file was submitted.
        :return: list of WakeWordFile objects containing the retrieved row
        """
        wake_word_files = []
        db_request = self._build_db_request(
            sql_file_name="get_files_by_submission_date.sql",
            args=dict(submission_date=submission_date),
        )
        for row in self.cursor.select_all(db_request):
            file_location = TaggingFileLocation(
                server=row["server"], directory=row["directory"]
            )
            wake_word = WakeWord(name=row["wake_word_name"], engine=row["engine"])
            wake_word_file = WakeWordFile(
                wake_word=wake_word,
                name=row["file_name"],
                origin=row["origin"],
                submission_date=row["submission_date"],
                account_id=row["account_id"],
                location=file_location,
            )
            wake_word_files.append(wake_word_file)

        return wake_word_files
示例#3
0
    def _build_device_from_row(row):
        row["city"] = City(**row["city"])
        row["country"] = Country(**row["country"])
        row["region"] = Region(**row["region"])
        row["timezone"] = Timezone(**row["timezone"])
        row["wake_word"] = WakeWord(**row["wake_word"])
        row["text_to_speech"] = TextToSpeech(**row["text_to_speech"])

        return Device(**row)
def upload_unknown_wake_word_file(context):
    """Upload a wake word sample file using the public API"""
    context.wake_words["computer"] = WakeWord(name="computer", engine="test")
    context.scenario_wake_word = "computer"
    wake_word_request = dict(
        wake_word="computer",
        engine="test",
        timestamp="12345",
        model="selene_test_model",
    )
    _call_upload_endpoint(context, wake_word_request)
示例#5
0
    def _build_device_from_row(row: dict) -> Device:
        """Build a Device dataclass instance from query results."""
        row["city"] = City(**row["city"])
        row["country"] = Country(**row["country"])
        row["region"] = Region(**row["region"])
        row["timezone"] = Timezone(**row["timezone"])
        row["wake_word"] = WakeWord(**row["wake_word"])
        row["text_to_speech"] = TextToSpeech(**row["text_to_speech"])
        row["pantacor_config"] = PantacorConfig(**row["pantacor_config"])

        return Device(**row)
示例#6
0
def remove_wake_word(db, wake_word: WakeWord):
    """Remove a wake word and any related sample files from the database

    :param db: Database connection to the Mycroft DB
    :param wake_word: the wake word to delete
    """
    file_repository = WakeWordFileRepository(db)
    wake_word_repository = WakeWordRepository(db)
    if wake_word.id is None:
        wake_word.id = wake_word_repository.get_id(wake_word)
    for wake_word_file in file_repository.get_by_wake_word(wake_word):
        file_repository.remove(wake_word_file)
    wake_word_repository.remove(wake_word)
示例#7
0
    def get_devices_by_account_id(self, account_id: str) -> List[Device]:
        """Fetch all devices associated to a user from a given account id

        :param account_id: uuid
        :return: List of User's devices
        """
        db_request = self._build_db_request(
            sql_file_name="get_devices_by_account_id.sql",
            args=dict(account_id=account_id),
        )
        db_results = self.cursor.select_all(db_request)

        devices = []
        for row in db_results:
            row["city"] = City(**row["city"])
            row["country"] = Country(**row["country"])
            row["region"] = Region(**row["region"])
            row["timezone"] = Timezone(**row["timezone"])
            row["wake_word"] = WakeWord(**row["wake_word"])
            row["text_to_speech"] = TextToSpeech(**row["text_to_speech"])
            devices.append(Device(**row))

        return devices
示例#8
0
 def _convert_db_row_to_dataclass(row) -> WakeWordFile:
     row.update(
         wake_word=WakeWord(**row["wake_word"]),
         location=TaggingFileLocation(**row["location"]),
     )
     return WakeWordFile(**row)