forked from kompetenzinventar/ki-backend
implement languages update
This commit is contained in:
@ -1,7 +1,7 @@
|
||||
from flask import make_response, request
|
||||
from sqlalchemy import not_
|
||||
|
||||
from ki.models import Address, Contact, ContactType, User, Profile, ProfileSkill, Skill
|
||||
from ki.models import Address, Contact, ContactType, Language, User, Profile, ProfileLanguage, ProfileSkill, Skill
|
||||
from app import db
|
||||
|
||||
|
||||
@ -21,6 +21,28 @@ def update_address(profile, address_data):
|
||||
address.country = address_data.get("country", "")
|
||||
|
||||
|
||||
def update_languages(profile, languages_data):
|
||||
profile_language_ids = []
|
||||
|
||||
for language_data in languages_data:
|
||||
language_id = language_data["language"]["id"]
|
||||
language = Language.query.get(language_id)
|
||||
|
||||
profile_language = ProfileLanguage.query.filter(ProfileLanguage.profile == profile,
|
||||
ProfileLanguage.language_id == language_id).first()
|
||||
|
||||
if profile_language is None:
|
||||
profile_language = ProfileLanguage(profile=profile, language=language)
|
||||
db.session.add(profile_language)
|
||||
|
||||
profile_language.level = language_data["level"]
|
||||
|
||||
profile_language_ids.append(language_id)
|
||||
|
||||
ProfileLanguage.query.filter(ProfileLanguage.profile == profile,
|
||||
not_(ProfileLanguage.language_id.in_(profile_language_ids))).delete()
|
||||
|
||||
|
||||
def update_skills(profile, skills_data):
|
||||
profile_skill_ids = []
|
||||
|
||||
@ -89,6 +111,7 @@ def update_profile(user_id: int):
|
||||
update_address(profile, request.json.get("address", {}))
|
||||
update_contacts(profile, request.json.get("contacts", {}))
|
||||
update_skills(profile, request.json.get("skills", {}))
|
||||
update_languages(profile, request.json.get("languages", {}))
|
||||
|
||||
db.session.commit()
|
||||
|
||||
|
Reference in New Issue
Block a user