def decorated_function(*args, **kwargs): if not request.authorization: return abort(400) auth = request.authorization # Check user user = User.query.filter(User.email == auth.username, User.password == auth.password).first() if not user: return abort(400) g.user = user # Device allowed? device = Device.query.filter(Device.user_id == user.id, Device.device == get_device()).first() if not device or not device.active: if not device: device = Device(user.id, get_device()) db.session.add(device) db.session.commit() if send_device_authentication(device): return Response(json.dumps({"device": device.device, "id": device.id}), 400, content_type='application/json') return Response(json.dumps({"message": "I'm a little tea pot."}), 404, content_type='application/json') # Log ip ip = get_ip() login = Login.query.filter(Login.user_id == user.id, Login.ip == ip).first() if not login: login = Login(user.id, ip) gi = pygeoip.GeoIP('GeoLiteCity.dat').record_by_addr(ip) if gi: login.latitude = gi.get('latitude', 0) login.longitude = gi.get('longitude', 0) db.session.add(login) else: login.time = datetime.now() db.session.commit() return f(*args, **kwargs)