def recover_step1_post(json): try: data = CurrentUserSchema(only=("email", )).load(json).data except ValidationError as e: return jsonify(error="validation-failed", fields=e.messages), 422 user = User.by_email_address(data["email_address"]) if not user: return jsonify(error="email-unknown"), 422 user.generate_recover_key(request.remote_addr) current_user = User.get(request.user_id) if request.user_id else None if current_user.admin: url = u"http://skylines.aero/users/recover?key=%x" % user.recover_key return jsonify(url=url) try: send_recover_mail(user) except ServiceUnavailable: return jsonify(error="mail-service-unavailable"), 503 db.session.commit() return jsonify()
def read(): current_user = User.get(request.user_id) if not current_user: return jsonify(error='invalid-token'), 401 schema = CurrentUserSchema(exclude=('id')) return jsonify(schema.dump(current_user).data)
def update(): json = request.get_json() if json is None: return jsonify(error='invalid-request'), 400 try: data = CurrentUserSchema(partial=True).load(json).data except ValidationError, e: return jsonify(error='validation-failed', fields=e.messages), 422
def new_post(): json = request.get_json() if json is None: return jsonify(error='invalid-request'), 400 try: data = CurrentUserSchema(only=('email', 'firstName', 'lastName', 'password')).load(json).data except ValidationError, e: return jsonify(error='validation-failed', fields=e.messages), 422
def recover_step2_post(json): try: data = CurrentUserSchema(only=("password", "recoveryKey")).load(json).data except ValidationError as e: return jsonify(error="validation-failed", fields=e.messages), 422 user = User.by_recover_key(int(data["recover_key"], base=16)) if not user: return jsonify(error="recovery-key-unknown"), 422 user.password = data["password"] user.recover_key = None db.session.commit() return jsonify()
def read(user_id): user = get_requested_record(User, user_id) user_schema = CurrentUserSchema( ) if user_id == request.user_id else UserSchema() user_json = user_schema.dump(user).data if request.user_id: current_user = User.get(request.user_id) user_json["followed"] = current_user.follows(user) if "extended" in request.args: user_json["distanceFlights"] = _distance_flights(user) user_json["stats"] = _quick_stats(user) user_json["takeoffLocations"] = _get_takeoff_locations(user) mark_user_notifications_read(user) return jsonify(user_json)
def recover_step1_post(json): try: data = CurrentUserSchema(only=("email", )).load(json).data except ValidationError as e: return jsonify(error="validation-failed", fields=e.messages), 422 user = User.by_email_address(data["email_address"]) if not user: return jsonify(error="email-unknown"), 422 user.generate_recover_key(request.remote_addr) try: send_recover_mail(user) except ServiceUnavailable: return jsonify(error="mail-service-unavailable"), 503 db.session.commit() return jsonify()
def new_post(): json = request.get_json() if json is None: return jsonify(error="invalid-request"), 400 try: data = (CurrentUserSchema(only=("email", "firstName", "lastName", "password")).load(json).data) except ValidationError as e: return jsonify(error="validation-failed", fields=e.messages), 422 user = User(**data) user.created_ip = request.remote_addr db.session.add(user) create_new_user_event(user) db.session.commit() return jsonify(user=UserSchema().dump(user).data)
def index(): if 'application/json' in request.headers.get('Accept', ''): user_schema = CurrentUserSchema( ) if g.user == g.current_user else UserSchema() user = user_schema.dump(g.user).data if g.current_user: user['followed'] = g.current_user.follows(g.user) if 'extended' in request.args: user['distanceFlights'] = _distance_flights(g.user) user['stats'] = _quick_stats() user['takeoffLocations'] = _get_takeoff_locations() return jsonify(**user) mark_user_notifications_read(g.user) return render_template('ember-page.jinja', openlayers=True, active_page='settings')
def update(): current_user = User.get(request.user_id) if not current_user: return jsonify(error='invalid-token'), 401 json = request.get_json() if json is None: return jsonify(error='invalid-request'), 400 try: data = CurrentUserSchema(partial=True).load(json).data except ValidationError as e: return jsonify(error='validation-failed', fields=e.messages), 422 if 'email_address' in data: email = data.get('email_address') if email != current_user.email_address and User.exists( email_address=email): return jsonify(error='email-exists-already'), 422 current_user.email_address = email if 'first_name' in data: current_user.first_name = data.get('first_name') if 'last_name' in data: current_user.last_name = data.get('last_name') if 'distance_unit' in data: current_user.distance_unit = data.get('distance_unit') if 'speed_unit' in data: current_user.speed_unit = data.get('speed_unit') if 'lift_unit' in data: current_user.lift_unit = data.get('lift_unit') if 'altitude_unit' in data: current_user.altitude_unit = data.get('altitude_unit') if 'tracking_callsign' in data: current_user.tracking_callsign = data.get('tracking_callsign') if 'tracking_delay' in data: current_user.tracking_delay = data.get('tracking_delay') if 'password' in data: if 'currentPassword' not in data: return jsonify(error='current-password-missing'), 422 if not current_user.validate_password(data['currentPassword']): return jsonify(error='wrong-password'), 403 current_user.password = data['password'] current_user.recover_key = None if 'club_id' in data and data['club_id'] != current_user.club_id: club_id = data['club_id'] if club_id is not None and not Club.exists(id=club_id): return jsonify(error='unknown-club'), 422 current_user.club_id = club_id create_club_join_event(club_id, current_user) # assign the user's new club to all of his flights that have # no club yet flights = Flight.query().join(IGCFile) flights = flights.filter( and_( Flight.club_id == None, or_(Flight.pilot_id == current_user.id, IGCFile.owner_id == current_user.id))) for flight in flights: flight.club_id = club_id db.session.commit() return jsonify()
def index(): if 'application/json' not in request.headers.get('Accept', ''): return redirect(url_for('.profile', user=g.user_id)) schema = CurrentUserSchema(exclude=('id')) return jsonify(**schema.dump(g.user).data)
def recover_step1_post(json): try: data = CurrentUserSchema(only=('email', )).load(json).data except ValidationError, e: return jsonify(error='validation-failed', fields=e.messages), 422
def schema(): return CurrentUserSchema()
def partial_schema(): return CurrentUserSchema(partial=True)
def update(): current_user = User.get(request.user_id) if not current_user: return jsonify(error="invalid-token"), 401 json = request.get_json() if json is None: return jsonify(error="invalid-request"), 400 try: data = CurrentUserSchema(partial=True).load(json).data except ValidationError as e: return jsonify(error="validation-failed", fields=e.messages), 422 if "email_address" in data: email = data.get("email_address") if email != current_user.email_address and User.exists( email_address=email): return jsonify(error="email-exists-already"), 422 current_user.email_address = email if "first_name" in data: current_user.first_name = data.get("first_name") if "last_name" in data: current_user.last_name = data.get("last_name") if "distance_unit" in data: current_user.distance_unit = data.get("distance_unit") if "speed_unit" in data: current_user.speed_unit = data.get("speed_unit") if "lift_unit" in data: current_user.lift_unit = data.get("lift_unit") if "altitude_unit" in data: current_user.altitude_unit = data.get("altitude_unit") if "tracking_callsign" in data: current_user.tracking_callsign = data.get("tracking_callsign") if "tracking_delay" in data: current_user.tracking_delay = data.get("tracking_delay") if "password" in data: if "currentPassword" not in data: return jsonify(error="current-password-missing"), 422 if not current_user.validate_password(data["currentPassword"]): return jsonify(error="wrong-password"), 403 current_user.password = data["password"] current_user.recover_key = None if "club_id" in data and data["club_id"] != current_user.club_id: club_id = data["club_id"] if club_id is not None and not Club.exists(id=club_id): return jsonify(error="unknown-club"), 422 current_user.club_id = club_id create_club_join_event(club_id, current_user) # assign the user's new club to all of his flights that have # no club yet flights = Flight.query().join(IGCFile) flights = flights.filter( and_( Flight.club_id == None, or_( Flight.pilot_id == current_user.id, IGCFile.owner_id == current_user.id, ), )) for flight in flights: flight.club_id = club_id db.session.commit() return jsonify()