def post(self, recording_platform):

        if recording_platform.corpus_codes:
            raise InvalidUsage("recording platform already has corpus codes")

        if not "file" in request.files:
            raise InvalidUsage("no corpus code list uploaded")

        fp = request.files["file"]
        reader = csv.reader(fp)

        for row in reader:
            if not row:
                continue

            code = row[0]

            # if type included
            if len(row) > 1:
                type = row[1]
                type = type.strip()

                # type is non-empty
                if type:

                    # check if scripted
                    if type.lower() == CorpusCode.SCRIPTED.lower():
                        type = CorpusCode.SCRIPTED

                    # check if spontaneous
                    elif type.lower() == CorpusCode.SPONTANEOUS.lower():
                        type = CorpusCode.SPONTANEOUS

                    # invalid type
                    else:
                        raise InvalidUsage(
                            "Line {0}: invalid type: {1}".format(
                                reader.line_num, type))

                else:
                    type = CorpusCode.SCRIPTED

            # no type included
            else:
                type = CorpusCode.SCRIPTED

            corpus_code = CorpusCode(
                recording_platform=recording_platform,
                code=code,
                is_scripted=(type == CorpusCode.SCRIPTED),
            )

            db.session.add(corpus_code)

        db.session.commit()
        return {
            "corpusCodes": CorpusCode.dump(recording_platform.corpus_codes)
        }
Exemplo n.º 2
0
def get_constants():
    task_statuses = {}

    for status in Task.get_statuses():
        task_statuses[status.upper()] = status

    return jsonify({
        "audioCheckingChangeMethods":
        AudioCheckingChangeMethod.get_constants(),
        "audioCheckingLoaders":
        AudioCheckingLoaders.get_constants(),
        "batchingModes":
        BatchingMode.get_constants(),
        "corpusCodes":
        CorpusCode.get_constants(),
        "recordingPlatformTypes":
        RecordingPlatformType.get_constants(),
        "taskStatuses":
        task_statuses,
        "taskTypes":
        TaskType.get_constants(),
        "tracks":
        Track.get_constants(),
        "transcriptionLoaders":
        TranscriptionLoaders.get_constants(),
        "workTypes":
        WorkType.get_constants(),
    })
    def post(self, recording_platform):

        data = MyForm(
            Field("code",
                  default="",
                  validators=[
                      CorpusCode.check_new_code_unique(recording_platform)
                  ]),
            Field("regex"),
            Field("isScripted",
                  is_mandatory=True,
                  validators=[validators.is_bool]),
        ).get_data()

        corpus_code = CorpusCode(
            recording_platform=recording_platform,
            code=data["code"],
            regex=data.get("regex"),
            is_scripted=data["isScripted"],
        )

        db.session.add(corpus_code)
        db.session.flush()
        return {"corpusCode": CorpusCode.dump(corpus_code)}
Exemplo n.º 4
0
def update_corpus_code(corpus_code):

    data = MyForm(
        Field("code",
              is_mandatory=True,
              validators=[
                  corpus_code.check_updated_code_unique,
              ]),
        Field("regex"),
        Field("isScripted", is_mandatory=True,
              validators=[validators.is_bool]),
    ).get_data()

    corpus_code.code = data.get("code")
    corpus_code.regex = data["regex"]
    corpus_code.is_scripted = data["isScripted"]
    db.session.commit()

    return jsonify({"corpusCode": CorpusCode.dump(corpus_code)})
def get_spontaneous_recording_platform_corpus_codes(recording_platform):
    corpus_codes = [
        corpus_code for corpus_code in recording_platform.corpus_codes
        if not corpus_code.is_scripted
    ]
    return jsonify({"corpusCodes": CorpusCode.dump(corpus_codes)})
Exemplo n.º 6
0
def get_corpus_code(corpus_code):
    return jsonify({"corpusCode": CorpusCode.dump(corpus_code)})
 def get(self, recording_platform):
     return {
         "corpusCodes": CorpusCode.dump(recording_platform.corpus_codes)
     }