forked from kompetenzinventar/ki-backend
implement searchtopics
This commit is contained in:
@ -5,7 +5,8 @@
|
||||
from flask import make_response, request
|
||||
from sqlalchemy import not_
|
||||
|
||||
from ki.models import Address, Contact, ContactType, Language, User, Profile, ProfileLanguage, ProfileSkill, Skill
|
||||
from ki.models import Address, Contact, ContactType, Language, User, Profile, ProfileLanguage, ProfileSearchtopic, \
|
||||
ProfileSkill, Skill
|
||||
from app import db
|
||||
|
||||
|
||||
@ -71,6 +72,30 @@ def update_skills(profile, skills_data):
|
||||
not_(ProfileSkill.skill_id.in_(profile_skill_ids))).delete()
|
||||
|
||||
|
||||
def update_searchtopics(profile, searchtopics_data):
|
||||
profile_searchtopics_ids = []
|
||||
|
||||
for searchtopic_data in searchtopics_data:
|
||||
skill_name = searchtopic_data["skill"]["name"]
|
||||
skill = Skill.query.filter(Skill.name == skill_name).first()
|
||||
|
||||
if (skill is None):
|
||||
skill = Skill(name=skill_name)
|
||||
db.session.add(skill)
|
||||
|
||||
profile_searchtopic = ProfileSearchtopic.query.filter(ProfileSearchtopic.profile == profile,
|
||||
ProfileSearchtopic.skill == skill).first()
|
||||
|
||||
if (profile_searchtopic is None):
|
||||
profile_searchtopic = ProfileSearchtopic(profile=profile, skill=skill)
|
||||
db.session.add(profile_searchtopic)
|
||||
|
||||
profile_searchtopics_ids.append(skill.id)
|
||||
|
||||
ProfileSearchtopic.query.filter(ProfileSearchtopic.profile == profile,
|
||||
not_(ProfileSearchtopic.skill_id.in_(profile_searchtopics_ids))).delete()
|
||||
|
||||
|
||||
def update_contacts(profile, contacts_data):
|
||||
contact_ids_to_be_deleted = list(map(lambda c: c.id, profile.contacts))
|
||||
|
||||
@ -117,6 +142,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_searchtopics(profile, request.json.get("searchtopics"))
|
||||
update_languages(profile, request.json.get("languages", {}))
|
||||
|
||||
db.session.commit()
|
||||
|
Reference in New Issue
Block a user