Loading app/controller/experience.py +28 −27 Original line number Diff line number Diff line Loading @@ -71,36 +71,36 @@ def get_experience(id): def create_experience(): try: data = request.get_json() experience_start_date = None experience_end_date = None start_date = None end_date = None website = data.get("website") translations = data.get("translations") if "experience_start_date" not in data: return jsonify({"error": "Missing end_date"}), 400 if "start_date" not in data: return jsonify({"error": "Missing start_date"}), 400 else: try: experience_start_date: date = datetime.strptime( data.get("experience_start_date"), "%Y-%m-%d" start_date: date = datetime.strptime( data.get("start_date"), "%Y-%m-%d" ).date() except ValueError: return ( jsonify( {"error": "experience_start_date must be in YYYY-MM-DD format"} {"error": "start_date must be in YYYY-MM-DD format"} ), 400, ) if "experience_end_date" in data: if "end_date" in data and data.get("end_date") is not None: try: experience_end_date: date = datetime.strptime( data.get("experience_end_date"), "%Y-%m-%d" end_date: date = datetime.strptime( data.get("end_date"), "%Y-%m-%d" ).date() except ValueError: return ( jsonify( { "error": "if you provide experience_end_date, it must be in YYYY-MM-DD format" "error": "if you provide end_date, it must be in YYYY-MM-DD format" } ), 400, Loading Loading @@ -139,8 +139,9 @@ def create_experience(): 400, ) print( start_date, end_date, website, translations) experience_id = insertExperience( experience_start_date, experience_end_date, website, translations start_date, end_date, website, translations ) if experience_id > 0: Loading Loading @@ -173,39 +174,39 @@ def update_experience(id): elif experience: data = request.get_json() experience_start_date = None experience_end_date = None start_date = None end_date = None website = None translations = data.get("translations") if "experience_start_date" in data: if "start_date" in data: try: experience_start_date: date = datetime.strptime( data.get("experience_start_date"), "%Y-%m-%d" start_date: date = datetime.strptime( data.get("start_date"), "%Y-%m-%d" ).date() except ValueError: return ( jsonify( { "error": "experience_start_date must be in YYYY-MM-DD format" "error": "start_date must be in YYYY-MM-DD format" } ), 400, ) if "experience_end_date" in data: if data.get("experience_end_date") is None: experience_end_date = "NULL" if "end_date" in data: if data.get("end_date") is None: end_date = "NULL" else: try: experience_end_date: date = datetime.strptime( data.get("experience_end_date"), "%Y-%m-%d" end_date: date = datetime.strptime( data.get("end_date"), "%Y-%m-%d" ).date() except ValueError: return ( jsonify( { "error": "experience_end_date must be in YYYY-MM-DD format" "error": "end_date must be in YYYY-MM-DD format" } ), 400, Loading Loading @@ -255,11 +256,11 @@ def update_experience(id): ), 400, ) print(id, start_date, end_date, website, translations) updatedExperience = updateExperience( id, experience_start_date, experience_end_date, start_date, end_date, website, translations, ) Loading app/model/experience/experience.py +18 −13 Original line number Diff line number Diff line Loading @@ -101,15 +101,15 @@ def getExperience(ExperienceId: int) -> Any | Literal[-1] | Literal[False]: def insertExperience( experience_start_date: date, experience_end_date: date, start_date: date, end_date: date, website: str, translations: list[dict[str, str]], ) -> bool | int: InsertExperienceQuery = """INSERT INTO experience (experience_start_date, experience_end_date, website) VALUES (%s, %s, %s) RETURNING id;""" print(start_date, end_date, website, translations) try: with db_cursor() as (conn, cur): # Start transaction Loading @@ -118,10 +118,11 @@ def insertExperience( # Insert experience and fetch the generated ID cur.execute( InsertExperienceQuery, (experience_start_date, experience_end_date, website), (start_date, end_date, website), ) conn.commit() experience_id = cur.fetchone()[0] print(f"Inserted experience with ID: {experience_id}") for ExperienceTranslation in translations: if not insertExperienceTranslation( experience_id, Loading @@ -133,7 +134,7 @@ def insertExperience( raise Exception( f"Database error while inserting experience translation for {ExperienceTranslation['language_code']}" ) print("before commit") conn.execute("COMMIT") current_app.logger.info(f"Successfully inserted experience with ID {experience_id}") return experience_id Loading Loading @@ -164,6 +165,7 @@ def insertExperienceTranslation( try: with db_cursor() as (conn, cur): print("before insert experience translation") cur.execute( InsertExperienceQuery, ( Loading @@ -174,7 +176,10 @@ def insertExperienceTranslation( job_place, ), ) print("after insert experience translation") conn.commit() print("after commit experience translation") return True except Exception as e: Loading Loading @@ -270,8 +275,8 @@ def deleteExperienceTranslation(ExperienceId: int, language_code: str) -> bool: def updateExperience( id: int, experience_start_date: date, experience_end_date: date, start_date: date, end_date: date, website: str, translations: list[dict[str, str]], ): Loading @@ -281,16 +286,16 @@ def updateExperience( update_fields = [] update_values = [] if experience_start_date: if start_date: update_fields.append("experience_start_date = %s") update_values.append(experience_start_date) update_values.append(start_date) if experience_end_date is not None: if experience_end_date == "NULL": if end_date is not None: if end_date == "NULL": update_fields.append("experience_end_date = NULL") else: update_fields.append("experience_end_date = %s") update_values.append(experience_end_date) update_values.append(end_date) if website is not None: if website == "NULL": Loading Loading
app/controller/experience.py +28 −27 Original line number Diff line number Diff line Loading @@ -71,36 +71,36 @@ def get_experience(id): def create_experience(): try: data = request.get_json() experience_start_date = None experience_end_date = None start_date = None end_date = None website = data.get("website") translations = data.get("translations") if "experience_start_date" not in data: return jsonify({"error": "Missing end_date"}), 400 if "start_date" not in data: return jsonify({"error": "Missing start_date"}), 400 else: try: experience_start_date: date = datetime.strptime( data.get("experience_start_date"), "%Y-%m-%d" start_date: date = datetime.strptime( data.get("start_date"), "%Y-%m-%d" ).date() except ValueError: return ( jsonify( {"error": "experience_start_date must be in YYYY-MM-DD format"} {"error": "start_date must be in YYYY-MM-DD format"} ), 400, ) if "experience_end_date" in data: if "end_date" in data and data.get("end_date") is not None: try: experience_end_date: date = datetime.strptime( data.get("experience_end_date"), "%Y-%m-%d" end_date: date = datetime.strptime( data.get("end_date"), "%Y-%m-%d" ).date() except ValueError: return ( jsonify( { "error": "if you provide experience_end_date, it must be in YYYY-MM-DD format" "error": "if you provide end_date, it must be in YYYY-MM-DD format" } ), 400, Loading Loading @@ -139,8 +139,9 @@ def create_experience(): 400, ) print( start_date, end_date, website, translations) experience_id = insertExperience( experience_start_date, experience_end_date, website, translations start_date, end_date, website, translations ) if experience_id > 0: Loading Loading @@ -173,39 +174,39 @@ def update_experience(id): elif experience: data = request.get_json() experience_start_date = None experience_end_date = None start_date = None end_date = None website = None translations = data.get("translations") if "experience_start_date" in data: if "start_date" in data: try: experience_start_date: date = datetime.strptime( data.get("experience_start_date"), "%Y-%m-%d" start_date: date = datetime.strptime( data.get("start_date"), "%Y-%m-%d" ).date() except ValueError: return ( jsonify( { "error": "experience_start_date must be in YYYY-MM-DD format" "error": "start_date must be in YYYY-MM-DD format" } ), 400, ) if "experience_end_date" in data: if data.get("experience_end_date") is None: experience_end_date = "NULL" if "end_date" in data: if data.get("end_date") is None: end_date = "NULL" else: try: experience_end_date: date = datetime.strptime( data.get("experience_end_date"), "%Y-%m-%d" end_date: date = datetime.strptime( data.get("end_date"), "%Y-%m-%d" ).date() except ValueError: return ( jsonify( { "error": "experience_end_date must be in YYYY-MM-DD format" "error": "end_date must be in YYYY-MM-DD format" } ), 400, Loading Loading @@ -255,11 +256,11 @@ def update_experience(id): ), 400, ) print(id, start_date, end_date, website, translations) updatedExperience = updateExperience( id, experience_start_date, experience_end_date, start_date, end_date, website, translations, ) Loading
app/model/experience/experience.py +18 −13 Original line number Diff line number Diff line Loading @@ -101,15 +101,15 @@ def getExperience(ExperienceId: int) -> Any | Literal[-1] | Literal[False]: def insertExperience( experience_start_date: date, experience_end_date: date, start_date: date, end_date: date, website: str, translations: list[dict[str, str]], ) -> bool | int: InsertExperienceQuery = """INSERT INTO experience (experience_start_date, experience_end_date, website) VALUES (%s, %s, %s) RETURNING id;""" print(start_date, end_date, website, translations) try: with db_cursor() as (conn, cur): # Start transaction Loading @@ -118,10 +118,11 @@ def insertExperience( # Insert experience and fetch the generated ID cur.execute( InsertExperienceQuery, (experience_start_date, experience_end_date, website), (start_date, end_date, website), ) conn.commit() experience_id = cur.fetchone()[0] print(f"Inserted experience with ID: {experience_id}") for ExperienceTranslation in translations: if not insertExperienceTranslation( experience_id, Loading @@ -133,7 +134,7 @@ def insertExperience( raise Exception( f"Database error while inserting experience translation for {ExperienceTranslation['language_code']}" ) print("before commit") conn.execute("COMMIT") current_app.logger.info(f"Successfully inserted experience with ID {experience_id}") return experience_id Loading Loading @@ -164,6 +165,7 @@ def insertExperienceTranslation( try: with db_cursor() as (conn, cur): print("before insert experience translation") cur.execute( InsertExperienceQuery, ( Loading @@ -174,7 +176,10 @@ def insertExperienceTranslation( job_place, ), ) print("after insert experience translation") conn.commit() print("after commit experience translation") return True except Exception as e: Loading Loading @@ -270,8 +275,8 @@ def deleteExperienceTranslation(ExperienceId: int, language_code: str) -> bool: def updateExperience( id: int, experience_start_date: date, experience_end_date: date, start_date: date, end_date: date, website: str, translations: list[dict[str, str]], ): Loading @@ -281,16 +286,16 @@ def updateExperience( update_fields = [] update_values = [] if experience_start_date: if start_date: update_fields.append("experience_start_date = %s") update_values.append(experience_start_date) update_values.append(start_date) if experience_end_date is not None: if experience_end_date == "NULL": if end_date is not None: if end_date == "NULL": update_fields.append("experience_end_date = NULL") else: update_fields.append("experience_end_date = %s") update_values.append(experience_end_date) update_values.append(end_date) if website is not None: if website == "NULL": Loading