aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--wqflask/wqflask/metadata_edits.py524
1 files changed, 326 insertions, 198 deletions
diff --git a/wqflask/wqflask/metadata_edits.py b/wqflask/wqflask/metadata_edits.py
index 89e582d1..604a1b10 100644
--- a/wqflask/wqflask/metadata_edits.py
+++ b/wqflask/wqflask/metadata_edits.py
@@ -49,26 +49,27 @@ from gn3.db.sample_data import update_sample_data
from gn3.db.sample_data import get_case_attributes
-metadata_edit = Blueprint('metadata_edit', __name__)
+metadata_edit = Blueprint("metadata_edit", __name__)
-def _get_diffs(diff_dir: str,
- user_id: str,
- redis_conn: redis.Redis,
- gn_proxy_url: str):
+def _get_diffs(
+ diff_dir: str, user_id: str, redis_conn: redis.Redis, gn_proxy_url: str
+):
def __get_file_metadata(file_name: str) -> Dict:
author, resource_id, time_stamp, *_ = file_name.split(".")
return {
"resource_id": resource_id,
"file_name": file_name,
- "author": json.loads(redis_conn.hget("users",
- author)).get("full_name"),
+ "author": json.loads(redis_conn.hget("users", author)).get(
+ "full_name"
+ ),
"time_stamp": time_stamp,
"roles": get_highest_user_access_role(
resource_id=resource_id,
user_id=user_id,
- gn_proxy_url=gn_proxy_url),
+ gn_proxy_url=gn_proxy_url,
+ ),
}
approved, rejected, waiting = [], [], []
@@ -76,8 +77,7 @@ def _get_diffs(diff_dir: str,
for name in os.listdir(diff_dir):
file_metadata = __get_file_metadata(file_name=name)
admin_status = file_metadata["roles"].get("admin")
- append_p = (user_id in name or
- admin_status > AdminRole.EDIT_ACCESS)
+ append_p = user_id in name or admin_status > AdminRole.EDIT_ACCESS
if name.endswith(".rejected") and append_p:
rejected.append(__get_file_metadata(file_name=name))
elif name.endswith(".approved") and append_p:
@@ -95,20 +95,23 @@ def edit_phenotype(conn, name, dataset_id):
publish_xref = fetchone(
conn=conn,
table="PublishXRef",
- where=PublishXRef(id_=name,
- inbred_set_id=dataset_id))
+ where=PublishXRef(id_=name, inbred_set_id=dataset_id),
+ )
phenotype_ = fetchone(
conn=conn,
table="Phenotype",
- where=Phenotype(id_=publish_xref.phenotype_id))
+ where=Phenotype(id_=publish_xref.phenotype_id),
+ )
publication_ = fetchone(
conn=conn,
table="Publication",
- where=Publication(id_=publish_xref.publication_id))
+ where=Publication(id_=publish_xref.publication_id),
+ )
json_data = fetchall(
conn,
"metadata_audit",
- where=MetadataAudit(dataset_id=publish_xref.id_))
+ where=MetadataAudit(dataset_id=publish_xref.id_),
+ )
Edit = namedtuple("Edit", ["field", "old", "new", "diff"])
Diff = namedtuple("Diff", ["author", "diff", "timestamp"])
diff_data = []
@@ -120,14 +123,21 @@ def edit_phenotype(conn, name, dataset_id):
if isinstance(value, dict):
for field, data_ in value.items():
diff_data.append(
- Diff(author=author,
- diff=Edit(field,
- data_.get("old"),
- data_.get("new"),
- "\n".join(difflib.ndiff(
- [data_.get("old")],
- [data_.get("new")]))),
- timestamp=timestamp))
+ Diff(
+ author=author,
+ diff=Edit(
+ field,
+ data_.get("old"),
+ data_.get("new"),
+ "\n".join(
+ difflib.ndiff(
+ [data_.get("old")], [data_.get("new")]
+ )
+ ),
+ ),
+ timestamp=timestamp,
+ )
+ )
diff_data_ = None
if len(diff_data) > 0:
diff_data_ = groupby(diff_data, lambda x: x.timestamp)
@@ -140,14 +150,15 @@ def edit_phenotype(conn, name, dataset_id):
def edit_probeset(conn, name):
- probeset_ = fetchone(conn=conn,
- table="ProbeSet",
- columns=list(probeset_mapping.values()),
- where=Probeset(name=name))
+ probeset_ = fetchone(
+ conn=conn,
+ table="ProbeSet",
+ columns=list(probeset_mapping.values()),
+ where=Probeset(name=name),
+ )
json_data = fetchall(
- conn,
- "metadata_audit",
- where=MetadataAudit(dataset_id=probeset_.id_))
+ conn, "metadata_audit", where=MetadataAudit(dataset_id=probeset_.id_)
+ )
Edit = namedtuple("Edit", ["field", "old", "new", "diff"])
Diff = namedtuple("Diff", ["author", "diff", "timestamp"])
diff_data = []
@@ -159,14 +170,21 @@ def edit_probeset(conn, name):
if isinstance(value, dict):
for field, data_ in value.items():
diff_data.append(
- Diff(author=author,
- diff=Edit(field,
- data_.get("old"),
- data_.get("new"),
- "\n".join(difflib.ndiff(
- [data_.get("old")],
- [data_.get("new")]))),
- timestamp=timestamp))
+ Diff(
+ author=author,
+ diff=Edit(
+ field,
+ data_.get("old"),
+ data_.get("new"),
+ "\n".join(
+ difflib.ndiff(
+ [data_.get("old")], [data_.get("new")]
+ )
+ ),
+ ),
+ timestamp=timestamp,
+ )
+ )
diff_data_ = None
if len(diff_data) > 0:
diff_data_ = groupby(diff_data, lambda x: x.timestamp)
@@ -217,73 +235,90 @@ def display_probeset_metadata(name: str):
def update_phenotype(dataset_id: str, name: str):
data_ = request.form.to_dict()
TMPDIR = current_app.config.get("TMPDIR")
- author = ((g.user_session.record.get(b"user_id") or b"").decode("utf-8")
- or g.user_session.record.get("user_id") or "")
- phenotype_id = str(data_.get('phenotype-id'))
+ author = (
+ (g.user_session.record.get(b"user_id") or b"").decode("utf-8")
+ or g.user_session.record.get("user_id")
+ or ""
+ )
+ phenotype_id = str(data_.get("phenotype-id"))
if not (file_ := request.files.get("file")):
flash("No sample-data has been uploaded", "warning")
else:
- create_dirs_if_not_exists([
- SAMPLE_DATADIR := os.path.join(TMPDIR, "sample-data"),
- DIFF_DATADIR := os.path.join(SAMPLE_DATADIR, "diffs"),
- UPLOAD_DATADIR := os.path.join(SAMPLE_DATADIR, "updated")
- ])
+ create_dirs_if_not_exists(
+ [
+ SAMPLE_DATADIR := os.path.join(TMPDIR, "sample-data"),
+ DIFF_DATADIR := os.path.join(SAMPLE_DATADIR, "diffs"),
+ UPLOAD_DATADIR := os.path.join(SAMPLE_DATADIR, "updated"),
+ ]
+ )
current_time = str(datetime.datetime.now().isoformat())
- _file_name = (f"{author}.{request.args.get('resource-id')}."
- f"{current_time}")
+ _file_name = (
+ f"{author}.{request.args.get('resource-id')}." f"{current_time}"
+ )
diff_data = {}
with database_connection() as conn:
diff_data = remove_insignificant_edits(
diff_data=csv_diff(
- base_csv=(base_csv := get_trait_csv_sample_data(
- conn=conn,
- trait_name=str(name),
- phenotype_id=str(phenotype_id))),
+ base_csv=(
+ base_csv := get_trait_csv_sample_data(
+ conn=conn,
+ trait_name=str(name),
+ phenotype_id=str(phenotype_id),
+ )
+ ),
delta_csv=(delta_csv := file_.read().decode()),
- tmp_dir=TMPDIR),
- epsilon=0.001)
+ tmp_dir=TMPDIR,
+ ),
+ epsilon=0.001,
+ )
headers = get_allowable_sampledata_headers(conn)
invalid_headers = extract_invalid_csv_headers(
- allowed_headers=headers,
- csv_text=delta_csv)
+ allowed_headers=headers, csv_text=delta_csv
+ )
if invalid_headers:
- flash("You have invalid headers: "
- f"""{', '.join(invalid_headers)}. Valid headers """
- f"""are: {', '.join(headers)}""",
- "warning")
+ flash(
+ "You have invalid headers: "
+ f"""{', '.join(invalid_headers)}. Valid headers """
+ f"""are: {', '.join(headers)}""",
+ "warning",
+ )
return redirect(
f"/datasets/{dataset_id}/traits/{name}"
- f"?resource-id={request.args.get('resource-id')}")
+ f"?resource-id={request.args.get('resource-id')}"
+ )
# Edge case where the csv file has not been edited!
if not any(diff_data.values()):
- flash("You have not modified the csv file you downloaded!",
- "warning")
- return redirect(f"/datasets/{dataset_id}/traits/{name}"
- f"?resource-id={request.args.get('resource-id')}")
-
- with open(os.path.join(
- UPLOAD_DATADIR,
- f"{_file_name}.csv"), "w") as f_:
+ flash(
+ "You have not modified the csv file you downloaded!", "warning"
+ )
+ return redirect(
+ f"/datasets/{dataset_id}/traits/{name}"
+ f"?resource-id={request.args.get('resource-id')}"
+ )
+
+ with open(
+ os.path.join(UPLOAD_DATADIR, f"{_file_name}.csv"), "w"
+ ) as f_:
f_.write(base_csv)
- with open(os.path.join(
- UPLOAD_DATADIR,
- f"{_file_name}.delta.csv"), "w") as f_:
+ with open(
+ os.path.join(UPLOAD_DATADIR, f"{_file_name}.delta.csv"), "w"
+ ) as f_:
f_.write(delta_csv)
- with open(os.path.join(DIFF_DATADIR,
- f"{_file_name}.json"), "w") as f:
- diff_data.update({
- "trait_name": str(name),
- "phenotype_id": str(phenotype_id),
- "dataset_id": name,
- "resource_id": request.args.get('resource-id'),
- "author": author,
- "timestamp": (datetime
- .datetime
- .now()
- .strftime("%Y-%m-%d %H:%M:%S")),
- })
+ with open(os.path.join(DIFF_DATADIR, f"{_file_name}.json"), "w") as f:
+ diff_data.update(
+ {
+ "trait_name": str(name),
+ "phenotype_id": str(phenotype_id),
+ "dataset_id": name,
+ "resource_id": request.args.get("resource-id"),
+ "author": author,
+ "timestamp": (
+ datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
+ ),
+ }
+ )
f.write(json.dumps(diff_data))
flash("Sample-data has been successfully uploaded", "success")
# Run updates:
@@ -302,14 +337,25 @@ def update_phenotype(dataset_id: str, name: str):
updated_phenotypes = ""
with database_connection() as conn:
updated_phenotypes = update(
- conn, "Phenotype",
+ conn,
+ "Phenotype",
data=Phenotype(**phenotype_),
- where=Phenotype(id_=data_.get("phenotype-id")))
+ where=Phenotype(id_=data_.get("phenotype-id")),
+ )
diff_data = {}
if updated_phenotypes:
- diff_data.update({"Phenotype": diff_from_dict(old={
- k: data_.get(f"old_{k}") for k, v in phenotype_.items()
- if v is not None}, new=phenotype_)})
+ diff_data.update(
+ {
+ "Phenotype": diff_from_dict(
+ old={
+ k: data_.get(f"old_{k}")
+ for k, v in phenotype_.items()
+ if v is not None
+ },
+ new=phenotype_,
+ )
+ }
+ )
publication_ = {
"abstract": data_.get("abstract"),
"authors": data_.get("authors"),
@@ -318,39 +364,58 @@ def update_phenotype(dataset_id: str, name: str):
"volume": data_.get("volume"),
"pages": data_.get("pages"),
"month": data_.get("month"),
- "year": data_.get("year")
+ "year": data_.get("year"),
}
updated_publications = ""
with database_connection() as conn:
updated_publications = update(
- conn, "Publication",
+ conn,
+ "Publication",
data=Publication(**publication_),
- where=Publication(id_=data_.get("pubmed-id",
- data_.get("old_id_"))))
+ where=Publication(
+ id_=data_.get("pubmed-id", data_.get("old_id_"))
+ ),
+ )
if updated_publications:
- diff_data.update({"Publication": diff_from_dict(old={
- k: data_.get(f"old_{k}") for k, v in publication_.items()
- if v is not None}, new=publication_)})
+ diff_data.update(
+ {
+ "Publication": diff_from_dict(
+ old={
+ k: data_.get(f"old_{k}")
+ for k, v in publication_.items()
+ if v is not None
+ },
+ new=publication_,
+ )
+ }
+ )
if diff_data:
- diff_data.update({
- "phenotype_id": str(phenotype_id),
- "dataset_id": name,
- "resource_id": request.args.get('resource-id'),
- "author": author,
- "timestamp": (datetime
- .datetime
- .now()
- .strftime("%Y-%m-%d %H:%M:%S")),
- })
+ diff_data.update(
+ {
+ "phenotype_id": str(phenotype_id),
+ "dataset_id": name,
+ "resource_id": request.args.get("resource-id"),
+ "author": author,
+ "timestamp": (
+ datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
+ ),
+ }
+ )
with database_connection() as conn:
- insert(conn,
- table="metadata_audit",
- data=MetadataAudit(dataset_id=name,
- editor=author,
- json_data=json.dumps(diff_data)))
+ insert(
+ conn,
+ table="metadata_audit",
+ data=MetadataAudit(
+ dataset_id=name,
+ editor=author,
+ json_data=json.dumps(diff_data),
+ ),
+ )
flash(f"Diff-data: \n{diff_data}\nhas been uploaded", "success")
- return redirect(f"/datasets/{dataset_id}/traits/{name}"
- f"?resource-id={request.args.get('resource-id')}")
+ return redirect(
+ f"/datasets/{dataset_id}/traits/{name}"
+ f"?resource-id={request.args.get('resource-id')}"
+ )
@metadata_edit.route("/traits/<name>", methods=("POST",))
@@ -382,31 +447,56 @@ def update_probeset(name: str):
"probe_set_blat_mb_end": data_.get("probe_set_blat_mb_end"),
"probe_set_strand": data_.get("probe_set_strand"),
"probe_set_note_by_rw": data_.get("probe_set_note_by_rw"),
- "flag": data_.get("flag")
+ "flag": data_.get("flag"),
}
diff_data = {}
- author = ((g.user_session.record.get(b"user_id")
- or b"").decode("utf-8")
- or g.user_session.record.get("user_id") or "")
- if update(conn, "ProbeSet",
- data=Probeset(**probeset_),
- where=Probeset(id_=data_.get("id"))):
- diff_data.update({"Probeset": diff_from_dict(old={
- k: data_.get(f"old_{k}") for k, v in probeset_.items()
- if v is not None}, new=probeset_)})
+ author = (
+ (g.user_session.record.get(b"user_id") or b"").decode("utf-8")
+ or g.user_session.record.get("user_id")
+ or ""
+ )
+ if update(
+ conn,
+ "ProbeSet",
+ data=Probeset(**probeset_),
+ where=Probeset(id_=data_.get("id")),
+ ):
+ diff_data.update(
+ {
+ "Probeset": diff_from_dict(
+ old={
+ k: data_.get(f"old_{k}")
+ for k, v in probeset_.items()
+ if v is not None
+ },
+ new=probeset_,
+ )
+ }
+ )
if diff_data:
diff_data.update({"probeset_name": data_.get("probeset_name")})
diff_data.update({"author": author})
- diff_data.update({"resource_id": request.args.get('resource-id')})
- diff_data.update({"timestamp": datetime.datetime.now().strftime(
- "%Y-%m-%d %H:%M:%S")})
- insert(conn,
- table="metadata_audit",
- data=MetadataAudit(dataset_id=data_.get("id"),
- editor=author,
- json_data=json.dumps(diff_data)))
- return redirect(f"/datasets/traits/{name}"
- f"?resource-id={request.args.get('resource-id')}")
+ diff_data.update({"resource_id": request.args.get("resource-id")})
+ diff_data.update(
+ {
+ "timestamp": datetime.datetime.now().strftime(
+ "%Y-%m-%d %H:%M:%S"
+ )
+ }
+ )
+ insert(
+ conn,
+ table="metadata_audit",
+ data=MetadataAudit(
+ dataset_id=data_.get("id"),
+ editor=author,
+ json_data=json.dumps(diff_data),
+ ),
+ )
+ return redirect(
+ f"/datasets/traits/{name}"
+ f"?resource-id={request.args.get('resource-id')}"
+ )
@metadata_edit.route("/<dataset_id>/traits/<phenotype_id>/csv")
@@ -417,10 +507,12 @@ def get_sample_data_as_csv(dataset_id: str, phenotype_id: int):
get_trait_csv_sample_data(
conn=conn,
trait_name=str(dataset_id),
- phenotype_id=str(phenotype_id)),
+ phenotype_id=str(phenotype_id),
+ ),
mimetype="text/csv",
- headers={"Content-disposition":
- f"attachment; filename=sample-data-{dataset_id}.csv"}
+ headers={
+ "Content-disposition": f"attachment; filename=sample-data-{dataset_id}.csv"
+ },
)
@@ -429,39 +521,49 @@ def get_sample_data_as_csv(dataset_id: str, phenotype_id: int):
def list_diffs():
files = _get_diffs(
diff_dir=f"{current_app.config.get('TMPDIR')}/sample-data/diffs",
- user_id=((g.user_session.record.get(b"user_id") or
- b"").decode("utf-8")
- or g.user_session.record.get("user_id") or ""),
- redis_conn=redis.from_url(current_app.config["REDIS_URL"],
- decode_responses=True),
- gn_proxy_url=current_app.config.get("GN2_PROXY"))
+ user_id=(
+ (g.user_session.record.get(b"user_id") or b"").decode("utf-8")
+ or g.user_session.record.get("user_id")
+ or ""
+ ),
+ redis_conn=redis.from_url(
+ current_app.config["REDIS_URL"], decode_responses=True
+ ),
+ gn_proxy_url=current_app.config.get("GN2_PROXY"),
+ )
return render_template(
- "display_files.html",
- approved=sorted(files.get("approved"),
- reverse=True,
- key=lambda d: d.get("time_stamp")),
- rejected=sorted(files.get("rejected"),
- reverse=True,
- key=lambda d: d.get("time_stamp")),
- waiting=sorted(files.get("waiting"),
- reverse=True,
- key=lambda d: d.get("time_stamp")))
+ "display_files.html",
+ approved=sorted(
+ files.get("approved"),
+ reverse=True,
+ key=lambda d: d.get("time_stamp"),
+ ),
+ rejected=sorted(
+ files.get("rejected"),
+ reverse=True,
+ key=lambda d: d.get("time_stamp"),
+ ),
+ waiting=sorted(
+ files.get("waiting"),
+ reverse=True,
+ key=lambda d: d.get("time_stamp"),
+ ),
+ )
@metadata_edit.route("/diffs/<name>")
def show_diff(name):
TMPDIR = current_app.config.get("TMPDIR")
- with open(os.path.join(f"{TMPDIR}/sample-data/diffs",
- name), 'r') as myfile:
+ with open(
+ os.path.join(f"{TMPDIR}/sample-data/diffs", name), "r"
+ ) as myfile:
content = myfile.read()
content = json.loads(content)
for data in content.get("Modifications"):
- data["Diff"] = "\n".join(difflib.ndiff([data.get("Original")],
- [data.get("Current")]))
- return render_template(
- "display_diffs.html",
- diff=content
- )
+ data["Diff"] = "\n".join(
+ difflib.ndiff([data.get("Original")], [data.get("Current")])
+ )
+ return render_template("display_diffs.html", diff=content)
@metadata_edit.route("<resource_id>/diffs/<file_name>/reject")
@@ -469,11 +571,12 @@ def show_diff(name):
@login_required
def reject_data(resource_id: str, file_name: str):
TMPDIR = current_app.config.get("TMPDIR")
- os.rename(os.path.join(f"{TMPDIR}/sample-data/diffs", file_name),
- os.path.join(f"{TMPDIR}/sample-data/diffs",
- f"{file_name}.rejected"))
+ os.rename(
+ os.path.join(f"{TMPDIR}/sample-data/diffs", file_name),
+ os.path.join(f"{TMPDIR}/sample-data/diffs", f"{file_name}.rejected"),
+ )
flash(f"{file_name} has been rejected!", "success")
- return redirect(url_for('metadata_edit.list_diffs'))
+ return redirect(url_for("metadata_edit.list_diffs"))
@metadata_edit.route("<resource_id>/diffs/<file_name>/approve")
@@ -482,22 +585,25 @@ def reject_data(resource_id: str, file_name: str):
def approve_data(resource_id: str, file_name: str):
sample_data = {file_name: str}
TMPDIR = current_app.config.get("TMPDIR")
- with open(os.path.join(f"{TMPDIR}/sample-data/diffs",
- file_name), 'r') as myfile:
+ with open(
+ os.path.join(f"{TMPDIR}/sample-data/diffs", file_name), "r"
+ ) as myfile:
sample_data = json.load(myfile)
with database_connection() as conn:
for modification in (
- modifications := [d for d in
- sample_data.get("Modifications")]):
+ modifications := [d for d in sample_data.get("Modifications")]
+ ):
if modification.get("Current"):
update_sample_data(
conn=conn,
trait_name=sample_data.get("trait_name"),
original_data=modification.get("Original"),
updated_data=modification.get("Current"),
- csv_header=sample_data.get("Columns",
- "Strain Name,Value,SE,Count"),
- phenotype_id=int(sample_data.get("phenotype_id")))
+ csv_header=sample_data.get(
+ "Columns", "Strain Name,Value,SE,Count"
+ ),
+ phenotype_id=int(sample_data.get("phenotype_id")),
+ )
n_deletions = 0
with database_connection() as conn:
@@ -506,9 +612,11 @@ def approve_data(resource_id: str, file_name: str):
conn=conn,
trait_name=sample_data.get("trait_name"),
data=data,
- csv_header=sample_data.get("Columns",
- "Strain Name,Value,SE,Count"),
- phenotype_id=int(sample_data.get("phenotype_id")))
+ csv_header=sample_data.get(
+ "Columns", "Strain Name,Value,SE,Count"
+ ),
+ phenotype_id=int(sample_data.get("phenotype_id")),
+ )
if __deletions:
n_deletions += 1
# Remove any data that already exists from sample_data deletes
@@ -519,27 +627,39 @@ def approve_data(resource_id: str, file_name: str):
with database_connection() as conn:
for data in [d for d in sample_data.get("Additions")]:
if insert_sample_data(
- conn=conn,
- trait_name=sample_data.get("trait_name"),
- data=data,
- csv_header=sample_data.get("Columns",
- "Strain Name,Value,SE,Count"),
- phenotype_id=int(sample_data.get("phenotype_id"))):
+ conn=conn,
+ trait_name=sample_data.get("trait_name"),
+ data=data,
+ csv_header=sample_data.get(
+ "Columns", "Strain Name,Value,SE,Count"
+ ),
+ phenotype_id=int(sample_data.get("phenotype_id")),
+ ):
n_insertions += 1
- if any([sample_data.get("Additions"),
+ if any(
+ [
+ sample_data.get("Additions"),
sample_data.get("Modifications"),
- sample_data.get("Deletions")]):
+ sample_data.get("Deletions"),
+ ]
+ ):
with database_connection() as conn:
- insert(conn,
- table="metadata_audit",
- data=MetadataAudit(
- dataset_id=sample_data.get("trait_name"),
- editor=sample_data.get("author"),
- json_data=json.dumps(sample_data)))
+ insert(
+ conn,
+ table="metadata_audit",
+ data=MetadataAudit(
+ dataset_id=sample_data.get("trait_name"),
+ editor=sample_data.get("author"),
+ json_data=json.dumps(sample_data),
+ ),
+ )
# Once data is approved, rename it!
- os.rename(os.path.join(f"{TMPDIR}/sample-data/diffs", file_name),
- os.path.join(f"{TMPDIR}/sample-data/diffs",
- f"{file_name}.approved"))
+ os.rename(
+ os.path.join(f"{TMPDIR}/sample-data/diffs", file_name),
+ os.path.join(
+ f"{TMPDIR}/sample-data/diffs", f"{file_name}.approved"
+ ),
+ )
if n_deletions:
flash(f"# Deletions: {n_deletions}", "success")
if n_insertions:
@@ -547,12 +667,20 @@ def approve_data(resource_id: str, file_name: str):
if len(modifications):
flash(f"# Modifications: {len(modifications)}", "success")
else: # Edge case where you need to automatically reject the file
- os.rename(os.path.join(f"{TMPDIR}/sample-data/diffs", file_name),
- os.path.join(f"{TMPDIR}/sample-data/diffs",
- f"{file_name}.rejected"))
- flash(("Automatically rejecting this file since no "
- "changes could be applied."), "warning")
- return redirect(url_for('metadata_edit.list_diffs'))
+ os.rename(
+ os.path.join(f"{TMPDIR}/sample-data/diffs", file_name),
+ os.path.join(
+ f"{TMPDIR}/sample-data/diffs", f"{file_name}.rejected"
+ ),
+ )
+ flash(
+ (
+ "Automatically rejecting this file since no "
+ "changes could be applied."
+ ),
+ "warning",
+ )
+ return redirect(url_for("metadata_edit.list_diffs"))
@metadata_edit.route("/case-attributes")