from flask import make_response, request from ki.models import Address, User, Profile from app import db def update_address(profile, address_data): address = profile.address if (address is None): address = Address(profile=profile) db.session.add(address) address.name = address_data.get("name", "") address.street = address_data.get("street", "") address.house_number = address_data.get("house_number", "") address.additional = address_data.get("additional", "") address.postcode = address_data.get("postcode", "") address.city = address_data.get("city", "") address.country = address_data.get("country", "") def update_profile(user_id): user = User.query.filter(User.id == int(user_id)).first() if user is None: return make_response({}, 404) profile = user.profile if (profile is None): profile = Profile(user=user, nickname=user.auth_id) db.session.add(profile) profile.pronouns = request.json.get("pronouns", "") profile.volunteerwork = request.json.get("volunteerwork", "") profile.freetext = request.json.get("freetext", "") update_address(profile, request.json.get("address", {})) db.session.commit() return make_response({"profile": profile.to_dict()})