def delete_release(codename): """ DELETE method to delete a single release """ release = db_session.query(Release).get(codename) if not release: return ( flask.jsonify({"message": f"Release {codename} doesn't exist"}), 404, ) if len(release.statuses) > 0: return ( flask.jsonify( { "message": ( f"Cannot delete '{codename}' release. " f"Release already in use" ) } ), 400, ) db_session.delete(release) db_session.commit() return flask.jsonify({"message": f"Release {codename} deleted"}), 200
def update_statuses(cve, data, packages): statuses = cve.packages statuses_query = db_session.query(Status).filter(Status.cve_id == cve.id) statuses_to_delete = { f"{v.package_name}||{v.release_codename}": v for v in statuses_query.all() } for package_data in data.get("packages", []): name = package_data["name"] if packages.get(name) is None: package = Package(name=name) package.source = package_data["source"] package.ubuntu = package_data["ubuntu"] package.debian = package_data["debian"] packages[name] = package db_session.add(package) for status_data in package_data["statuses"]: update_status = False codename = status_data["release_codename"] status = statuses[name].get(codename) if status is None: update_status = True status = Status( cve_id=cve.id, package_name=name, release_codename=codename ) elif f"{name}||{codename}" in statuses_to_delete: del statuses_to_delete[f"{name}||{codename}"] if status.status != status_data["status"]: update_status = True status.status = status_data["status"] if status.description != status_data["description"]: update_status = True status.description = status_data["description"] if status.component != status_data.get("component"): update_status = True status.component = status_data.get("component") if status.pocket != status_data.get("pocket"): update_status = True status.pocket = status_data.get("pocket") if update_status: statuses[name][codename] = status db_session.add(status) for key in statuses_to_delete: db_session.delete(statuses_to_delete[key])
def delete_cve(cve_id): """ Delete a CVE from db @params string: query string with the CVE id """ cve_query = db_session.query(CVE) cve = cve_query.filter(CVE.id == cve_id).first() try: db_session.delete(cve) db_session.commit() except IntegrityError as error: return flask.jsonify({"message": error.orig.args[0]}), 400 return flask.jsonify({"message": "CVE deleted successfully"}), 200
def delete_notice(notice_id): """ DELETE method to delete a single notice """ notice = db_session.query(Notice).get(notice_id) if not notice: return ( flask.jsonify({"message": f"Notice {notice_id} doesn't exist"}), 404, ) db_session.delete(notice) db_session.commit() return flask.jsonify({"message": f"Notice {notice_id} deleted"}), 200