Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions app/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,17 @@
from app.extensions import jwt, db
import os
from dotenv import load_dotenv
from flask_cors import CORS

__version__ = "0.1.1" # géré automatiquement par la CI


load_dotenv(".env")
def create_app():
app = Flask(__name__)



CORS(app, resources={r"/*": {"origins": "*"}})

app.config.from_object(config[os.getenv("FLASK_ENV") or "development"])#en mode dev par défaut si rien de spécifié


Expand Down
56 changes: 48 additions & 8 deletions app/routes/routes1.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
import os
import json
from urllib import response
from flask import Blueprint, current_app, json, request, jsonify
from flask_jwt_extended import create_access_token
from app.extensions import db
Expand All @@ -6,8 +9,9 @@
import re
from app.services.auth import verify_token
from app.extensions import db
from depsec_db.models import Project, User
from depsec_db.models import Project, User, SBOM
import requests
from requests.structures import CaseInsensitiveDict
#from depsec_models.models import * #import des modèles depuis le package


Expand Down Expand Up @@ -41,6 +45,17 @@ def add_dico(dico):

dico['id'] = max_id + 1

if Project.query.filter((Project.titre == dico["titre"]) | (Project.path == dico["path"])).first():
return jsonify({"error": f"Un projet avec ce titre ou ce chemin existe deja !"}), 400

# Génère un chemin spécifique en fonction du titre du projet
safe_title =dico['titre'].replace(" ", "_").lower() # Ex: "Mon Projet" → "mon_projet"
project_path = os.path.join(dico['path'], safe_title)

# Vérifie si le dossier existe, sinon le créer
if not os.path.exists(project_path):
os.makedirs(project_path)

new_project = Project(
id = dico['id'],
auteur_id=dico["auteur_id"],
Expand All @@ -49,24 +64,49 @@ def add_dico(dico):
path=dico["path"]
)

project_for_sbom = {
"id": dico['id'],
"auteur_id": dico['auteur_id'],
"titre": dico['titre'],
"status": dico['status'],
"path": dico['path']
}


db.session.add(new_project)
db.session.commit()


project = Project.query.filter_by(id=dico['id']).first()
### requête avec la table SBOM pour créer un SBOM ###
requests.post("http://jeanclaudenunes.online:5010/", json=new_project.to_dict())
data = json.dumps({"id":project.id})
headers = CaseInsensitiveDict()
headers["Content-Type"] = "application/json"
sbom_response = requests.post("http://depsec.jeanclaudenunes.online:5010/",headers=headers, data=data, timeout=5)
sbom_response.raise_for_status()


return jsonify({"message": f"Projet {new_project.titre} ajoute avec succes"}), 200

def del_dico(id):
project = return_project_by_id(id)

if not project:
return jsonify({"error": f"Projet avec l'ID {id} non trouve"}), 404


db.session.delete(project)
db.session.commit()

return jsonify({"message": f"Projet avec l'ID {id} supprime avec succes"}), 200

try:
db.session.delete(project)
db.session.commit()

return jsonify({"message": f"Projet avec l'ID {id} supprime avec succes"}), 200
except:
db.session.rollback()
sbom_response = requests.delete(f"http://depsec.jeanclaudenunes.online:5010/sbom/{id}", timeout=5)
sbom_response.raise_for_status()
db.session.delete(project)
db.session.commit()
return jsonify({"message": f"Projet avec l'ID {id} supprime avec succes"}), 200
# ------------------------------------------------------------------------------------------------------------ #


Expand All @@ -81,7 +121,7 @@ def get_projects():
def get_project_by_id(project_id):
project = Project.query.get(project_id)
if not project:
return jsonify({'error': 'Projet non trouvé'}), 404
return jsonify({'error': 'Projet non trouve !'}), 404
return jsonify(project.to_dict()), 200

@projets_bp.route('/', methods=['POST'])
Expand Down
2 changes: 1 addition & 1 deletion requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -10,5 +10,5 @@ python-semantic-release
setuptools
flask_migrate
psycopg2-binary
fastapi
flask-cors
git+https://github.com/DEPSEC-Project/DB-Management.git@main