def post(self, user_id): user = User.get_by_id(int(user_id)) first_name = self.request.get("first_name") last_name = self.request.get("last_name") address = self.request.get("address") phone_number = self.request.get("phone_number") User.update(user=user, first_name=first_name, last_name=last_name, address=address, phone_number=phone_number) self.redirect_to("user-details", user_id=int(user_id))
def update_user_profile(): try: payload = get_payload() except jwt.exceptions.PyJWTError: # TODO: explain the error more obviously return format_response(data=None, success=False, message=_('You are not authorized'), status_code=401) user_id = payload['id'] connect_db() user = g.db.execute(sa.select([User ]).where(User.c.id == user_id)).fetchone() form = ProfileForm(context={'user': user}, partial=True) data = form.load(request.json or {}) values_to_update = {'modified': sa.func.NOW()} for key in data: if key in ['username', 'name', 'email']: values_to_update.update({key: data[key]}) elif key == 'password': values_to_update.update( {'password': generate_password_hash(data[key])}) transaction = g.db.begin() g.db.execute( User.update().values(**values_to_update).where(User.c.id == user_id)) transaction.commit() return format_response(data=None)