예제 #1
0
def get_dataset_details(info_role, id_dataset):
    """
    Get one dataset with nomenclatures and af

    .. :quickref: Metadata;

    :param id_dataset: the id_dataset
    :param type: int
    :returns: dict<TDatasetDetails>
    """

    return get_dataset_details_dict(id_dataset, info_role)
예제 #2
0
def get_dataset_details(info_role, id_dataset):
    """
    Get one dataset with nomenclatures and af

    .. :quickref: Metadata;

    :param id_dataset: the id_dataset
    :param type: int
    :returns: dict<TDatasetDetails>
    """

    dataset = get_dataset_details_dict(id_dataset)

    if info_role.value_filter != "3":
        try:
            if info_role.value_filter == "1":
                actors = [
                    cor["id_role"] for cor in dataset["cor_dataset_actor"]
                ]
                assert info_role.id_role in actors
            elif info_role.value_filter == "2":
                actors = [
                    cor["id_role"] for cor in dataset["cor_dataset_actor"]
                ]
                organisms = [
                    cor["id_organism"] for cor in dataset["cor_dataset_actor"]
                ]
                assert (info_role.id_role in actors
                        or info_role.id_organisme in organisms)
        except AssertionError:
            raise InsufficientRightsError(
                ('User "{}" cannot read this current dataset').format(
                    info_role.id_role),
                403,
            )

    return dataset
예제 #3
0
def get_export_pdf_dataset(id_dataset, info_role):
    """
    Get a PDF export of one dataset
    """

    # Verification des droits
    if info_role.value_filter == "0":
        raise InsufficientRightsError(
            ('User "{}" cannot "{}" a dataset').format(info_role.id_role,
                                                       "export"),
            403,
        )

    df = get_dataset_details_dict(id_dataset, info_role)

    if info_role.value_filter != "3":
        try:
            if info_role.value_filter == "1":
                actors = [cor["id_role"] for cor in df["cor_dataset_actor"]]
                assert info_role.id_role in actors
            elif info_role.value_filter == "2":
                actors = [cor["id_role"] for cor in df["cor_dataset_actor"]]
                organisms = [
                    cor["id_organism"] for cor in df["cor_dataset_actor"]
                ]
                assert info_role.id_role in actors or info_role.id_organisme in organisms
        except AssertionError:
            raise InsufficientRightsError(
                ('User "{}" cannot read this current dataset').format(
                    info_role.id_role),
                403,
            )

    if not df:
        return (
            render_template(
                "error.html",
                error="Le dataset presente des erreurs",
                redirect=current_app.config["URL_APPLICATION"] + "/#/metadata",
            ),
            404,
        )

    if len(df["dataset_desc"]) > 240:
        df["dataset_desc"] = df["dataset_desc"][:240] + "..."

    df["css"] = {
        "logo": "Logo_pdf.png",
        "bandeau": "Bandeau_pdf.png",
        "entite": "sinp",
    }

    date = dt.datetime.now().strftime("%d/%m/%Y")

    df["footer"] = {
        "url":
        current_app.config["URL_APPLICATION"] + "/#/metadata/dataset_detail/" +
        id_dataset,
        "date":
        date,
    }

    filename = "jdd_{}_{}_{}.pdf".format(
        id_dataset,
        df["dataset_shortname"].replace(" ", "_"),
        dt.datetime.now().strftime("%d%m%Y_%H%M%S"),
    )

    # Appel de la methode pour generer un pdf
    pdf_file = fm.generate_pdf("dataset_template_pdf.html", df, filename)
    pdf_file_posix = Path(pdf_file)
    return send_from_directory(str(pdf_file_posix.parent),
                               pdf_file_posix.name,
                               as_attachment=True)
예제 #4
0
def get_export_pdf_dataset(id_dataset, info_role):
    """
    Get a PDF export of one dataset
    """
    df = get_dataset_details_dict(id_dataset, info_role)

    if info_role.value_filter != "3":
        try:
            user_actor = [cor["id_role"] for cor in df["cor_dataset_actor"] if cor["id_role"]]
            user_actor.append(df.get('id_digitizer'))
            if info_role.value_filter == "1":
                assert info_role.id_role in user_actor
            elif info_role.value_filter == "2":
                organisms = [cor["id_organism"] for cor in df["cor_dataset_actor"] if cor["id_organism"]]
                assert info_role.id_role in user_actor or info_role.id_organisme in organisms
        except AssertionError:
            raise InsufficientRightsError(
                ('User "{}" cannot export this current dataset').format(info_role.id_role), 403,
            )

    if not df:
        return (
            render_template(
                "error.html",
                error="Le dataset presente des erreurs",
                redirect=current_app.config["URL_APPLICATION"] + "/#/metadata",
            ),
            404,
        )

    if len(df["dataset_desc"]) > 240:
        df["dataset_desc"] = df["dataset_desc"][:240] + "..."

    df["css"] = {
        "logo": "Logo_pdf.png",
        "bandeau": "Bandeau_pdf.png",
        "entite": "sinp",
    }
    df["title"] = current_app.config["METADATA"]["DS_PDF_TITLE"]

    date = dt.datetime.now().strftime("%d/%m/%Y")

    df["footer"] = {
        "url": current_app.config["URL_APPLICATION"] + "/#/metadata/dataset_detail/" + id_dataset,
        "date": date,
    }

    filename = "jdd_{}_{}_{}.pdf".format(
        id_dataset,
        df["dataset_shortname"].replace(" ", "_"),
        dt.datetime.now().strftime("%d%m%Y_%H%M%S"),
    )

    try:
        f = open(str(BACKEND_DIR) + "/static/images/taxa.png")
        f.close()
        df["chart"] = True
    except IOError:
        df["chart"] = False


    # Appel de la methode pour generer un pdf
    pdf_file = fm.generate_pdf("dataset_template_pdf.html", df, filename)
    pdf_file_posix = Path(pdf_file)

    return send_from_directory(str(pdf_file_posix.parent), pdf_file_posix.name, as_attachment=True)