def before_all(context):
    app.config.from_object('config.TestingConfig')
    # context.client = app.test_client()
    context.server = main
    context.address = main.address
    context.thread = threading.Thread(target=context.server.serve_forever)
    context.thread.start()  # start flask app server
    context.browser = webdriver.Firefox()
    db.init_app(app)
    with app.app_context():
        # Extensions like Flask-SQLAlchemy now know what the "current" app
        # is while within this block. Therefore, you can now run........
        db.create_all()
        user1 = User('Sathwik', 'Singari', '*****@*****.**', 'dm08b048')
        user1.set_user_farmer()
        db.session.add(user1)
        db.session.add(User('Bilbo', 'Baggins', '*****@*****.**', 'bilbobaggins'))
        db.session.add(Unit('Kg'))
        db.session.add(Unit('gm'))
        db.session.add(Unit('l'))
        db.session.add(Unit('ml'))
        db.session.flush()
        db.session.add(Address('123 Hill Rd', None, 'Sydney', 'NSW', 'Australia', 2010))
        db.session.add(Address('126 Hill Rd', None, 'Sydney', 'NSW', 'Australia', 2010))
        db.session.flush()
        db.session.add(Farm('Shire Farms', 1))
        db.session.add(Farm('Mordor Farms', 2))
        db.session.flush()
        db.session.add(Works(1, 1))
        db.session.add(Works(1, 2))
        db.session.flush()
        db.session.add(User('Joe', 'Farmer', '*****@*****.**', 'louise1993'))
        db.session.commit()
 def setUp(self):
     self.postgres = Postgresql()
     self.app = create_app(db_url=self.postgres.url())
     self.app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False
     db.init_app(self.app)
     self.ctx = self.app.app_context()
     self.ctx.push()
     self.token = f'Bearer {token}'
     self.accessToken = f'Bearer {accessToken}'
def before_all(context):
    app.config.from_object('config.TestingConfig')
    # context.client = app.test_client()
    context.server = main
    context.address = main.address
    context.thread = threading.Thread(target=context.server.serve_forever)
    context.thread.start()  # start flask app server
    context.browser = webdriver.Firefox()
    db.init_app(app)
    with app.app_context():
        # Extensions like Flask-SQLAlchemy now know what the "current" app
        # is while within this block. Therefore, you can now run........
        db.create_all()
        db.session.add(User('Sathwik', 'Singari', '*****@*****.**', 'dm08b048'))
        db.session.add(User('Bilbo', 'Baggins', '*****@*****.**', 'bilbobaggins'))
        User.query.get(1).set_user_farmer()
        db.session.add(User('Billy', 'Bogan','*****@*****.**','password'))
        db.session.add(Unit('Kg'))
        db.session.add(Unit('gm'))
        db.session.add(Unit('l'))
        db.session.add(Unit('ml'))
        db.session.flush()

        db.session.add(Address('123 Hill Rd', None, 'Sydney', 'NSW', 'Australia', 2010))
        db.session.add(Address('126 Hill Rd', None, 'Sydney', 'NSW', 'Australia', 2010))
        db.session.add(Farm('Shire Farms', 1))
        db.session.add(Farm('Mordor Farms', 2))

        #db.session.add(Image('eggplant.jpg', 'produce/1/eggplant.jpeg'))
        #db.session.add(Produce('Eggplant', 'Sweet organic eggplants', 'Vegetable', 1, 1))
        #db.session.add(Price(1, 1, 4.35))
        #db.session.add(Price(1, 2, 2.8))

        db.session.add(Produce('corn', 'vegetable', 'tasty', 1, 1))
        db.session.add(Produce('milk', 'dairy', 'yum', 2, 2))
        db.session.flush()
        db.session.add(Price(1, 1, 2.2))
        db.session.add(Price(2, 1, 4.4))
        db.session.add(RecentProduce(1, 1))
        db.session.flush()
        db.session.add(Works(1, 1))
        db.session.add(Works(1, 2))
        db.session.add(Works(4,1))
        db.session.flush()
        db.session.add(User('Joe', 'Farmer', '*****@*****.**', 'louise1993'))
        #db.session.add(Works(4, 1))
        db.session.add(Field('west block', 'Shire Farms', 1))
        db.session.add(Resource('fertiliser', 1))

        db.session.commit()
Example #4
0
def setup_flask():
    app = Flask(__name__)
    app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
    app.config['MAX_CONTENT_LENGTH'] = 16 * 1024 * 1024
    app.config['JWT_SECRET_KEY'] = "supersecretkeyhastochange"
    app.config['JWT_ACCESS_TOKEN_EXPIRES'] = False
    app.config['SQLALCHEMY_DATABASE_URI'] = f'sqlite:///{DB_PATH}'
    app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False

    CORS(app)
    Compress(app)
    jwt = JWTManager(app)

    # init DB
    with app.app_context():
        db.init_app(app)
        if not os.path.exists(DB_PATH):
            db.create_all()
            admin = User(username="******", password="******")
            if db.session.query(User).filter_by(username='******').count() < 1:
                db.session.add(admin)
                db.session.commit()
    return app
Example #5
0
    _LOGGER.warning('WARNING: GCM disabled, invalid sender id found')
    gcm_enabled = False

mqtt_enabled = True
if cfg.mqtt_broker_address == '':
    _LOGGER.warning("WARNING: MQTT disabled, please enter the address for mqtt broker")
    mqtt_enabled = False
if cfg.mqtt_broker_address == 0:
    _LOGGER.warning('WARNING: MQTT disabled, invalid address for mqtt broker')
    mqtt_enabled = False

app = Flask(__name__)
app.debug = cfg.debug
app.config['SQLALCHEMY_DATABASE_URI'] = cfg.database_uri
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db.init_app(app)
db.app = app

try:
    database.init_db()
except Exception as err:
    _LOGGER.error("couldn't initialize database with URI: %s", cfg.database_uri)
    if cfg.GLOBAL_BACKTRACE_ENABLE:
        raise err
    else:
        sys.exit(1)


@app.route('/')
def index():
    return redirect('https://www.push.fish')
if config.google_api_key == '':
    stderr.write("WARNING: GCM disabled, please enter the google api key for gcm")
    gcm_enabled = False
if not isinstance(config.google_gcm_sender_id, int):
    stderr.write("WARNING: GCM disabled, sender id is not an integer")
    gcm_enabled = False
elif config.google_gcm_sender_id == 0:
    stderr.write('WARNING: GCM disabled, invalid sender id found')
    gcm_enabled = False


app = Flask(__name__)
app.debug = config.debug or int(getenv('FLASK_DEBUG', 0)) > 0
app.config['SQLALCHEMY_DATABASE_URI'] = config.database_uri
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db.init_app(app)
with app.app_context():
    db.engine.execute("SET NAMES 'utf8mb4' COLLATE 'utf8mb4_unicode_ci'")


@app.route('/')
def index():
    return redirect('http://docs.pushjet.io')


@app.route('/robots.txt')
@app.route('/favicon.ico')
def robots_txt():
    return send_from_directory(app.static_folder, request.path[1:])

Example #7
0
def init_extensions(app, db_url):
    app.config["SQLALCHEMY_DATABASE_URI"] = db_url
    app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = True
    db.init_app(app)
    migrate.init_app(app, db)
    CORS(app, resources={r"*": {"origins": "http://localhost:3000"}})
def create_app(config_name):
    app = FlaskAPI(__name__, instance_relative_config=True)
    app.config.from_object(app_config[config_name])
    app.config.from_pyfile('config.py')
    app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
    app.config["SQLALCHEMY_DATABASE_URI"] = os.getenv(
        'SQLALCHEMY_DATABASE_URI')
    db.init_app(app)
    ma = Marshmallow(app)
    CORS(app)

    @app.route('/', methods=['GET'])
    def welcome_to_api():
        """Check if API is running"""
        response = {
            "status": 200,
            "message": "Welcome To Country Bite App Backend API"
        }
        return make_response(jsonify(response)), 200

########################################################################################### Login & Register

    @app.route('/api/v1/user/register', methods=['POST'])
    def register_new_user():
        name = request.get_json()['name']
        country = request.get_json()['country']
        phone = request.get_json()['phone']
        password = request.get_json()['password']
        email = request.get_json()['email']
        role = request.get_json()['role']
        thumbnail = request.get_json()['thumbnail']
        if not thumbnail:
            thumbnail = 'https://img.favpng.com/20/11/12/computer-icons-user-profile-png-favpng-0UAKKCpRRsMj5NaiELzw1pV7L.jpg'
        verify_data = Register_Validation({
            "name": name,
            "country": country,
            "password": password,
            "email": email,
            "thumbnail": thumbnail,
            "role": role
        })
        is_verified = verify_data.check_input()
        if is_verified[0] == 200:
            if not User.query.filter_by(email=email).first():
                new_user = User(name, country, password, phone, email,
                                thumbnail, role)
                new_user.save()
                return make_response(
                    jsonify({"message": "User successfully created!"})), 201
            else:
                return make_response(
                    jsonify({"message": "Email already being used here."}))
        else:
            return make_response(jsonify({"message":
                                          is_verified[1]})), is_verified[0]

    @app.route('/api/v1/user/login', methods=['POST'])
    def login_registered_user():
        email = request.get_json()['email']
        password = request.get_json()['password']
        user = User.query.filter_by(email=email).first()
        if user:
            if user.user_email_verified(password):
                token = user.generate_token()
                return user.login_times + ""
                user.last_login = datetime.now()
                user.save()
                return make_response(
                    jsonify({
                        "token": token,
                        "message": "You have successfully LoggedIn"
                    })), 200
            else:
                return make_response(
                    jsonify({"message": "You entered a wrong password"})), 200
        else:
            return make_response(
                jsonify({"message": "Wrong credentials, try again"})), 200

########################################################################################### Countries CRUD

    @app.route('/api/v1/countries', methods=['GET', 'POST'])
    @login_required
    def get_add_new_country(current_user, user_country):
        if request.method == 'GET':
            countries = Country.query.all()
            return make_response(
                jsonify({"countries": countries_schema.dump(countries)})), 200
        if request.method == 'POST':
            name = request.data.get('name', '')
            code = request.data.get('code', '')
            if name and code:
                new_country = Country(name, code)
                new_country.save()
                return make_response(
                    jsonify({
                        "message": "Country successfully saved!",
                        "country": country_schema.dump(new_country)
                    })), 201
            else:
                return make_response(
                    jsonify({"message": "Add a country name and code"})), 400

    @app.route('/api/v1/countries/<country_id>',
               methods=['GET', 'PUT', 'DELETE'])
    @login_required
    def get_update_delete_country(current_user, user_country, id):
        country = Country.query.get(id)
        if country:
            if request.method == 'DELETE':
                country.delete()
                return make_response(
                    jsonify(
                        {"message":
                         "You Successfully deleted Country " + id})), 202
            elif request.method == 'GET':
                return make_response(
                    jsonify({"country": country_schema.dump(country)})), 200
            elif request.method == 'PUT':
                name = str(request.data.get('name', ''))
                code = int(request.data.get('code', 0))
                if name and code:
                    country.name = name
                    country.code = code
                    country.save()
                    return make_response(
                        jsonify({
                            "message":
                            "You successfully updated country " + id,
                            "country":
                            country_schema.dump(country)
                        })), 202
                else:
                    return make_response(
                        jsonify({"message": "Include both Name & Code"})), 400
        else:
            return make_response(jsonify({"message":
                                          "Country does not exist"})), 404

########################################################################################### Posts CRUD

    @app.route('/api/v1/posts', methods=['GET', 'POST'])
    @login_required
    def get_add_new_post(current_user, user_country):
        if request.method == 'GET':
            posts = Post.query.all()
            return make_response(jsonify({"posts":
                                          posts_schema.dump(posts)})), 200
        if request.method == 'POST':
            user = current_user
            country = Country.query.filter_by(name=user_country).first()
            message = request.data.get('message', '')
            image = request.data.get('image', '')

            if message or image == 200:
                new_post = Post(user, country.id, message, image)
                new_post.save()
                return make_response(
                    jsonify({
                        "message": "Post successfully saved!",
                        "Post": post_schema.dump(new_post)
                    })), 201
            else:
                return make_response(
                    jsonify({"message": "Add some text or upload image"})), 400

    @app.route('/api/v1/posts/<post_id>', methods=['GET', 'PUT', 'DELETE'])
    @login_required
    def get_update_delete_posts(current_user, user_country, post_id):
        post = Post.query.get(post_id)
        if post:
            if request.method == 'DELETE':
                post.delete()
                return make_response(
                    jsonify({"message":
                             "You Successfully deleted Post " + id})), 202
            elif request.method == 'GET':
                return make_response(jsonify({"post":
                                              post_schema.dump(post)})), 200
            elif request.method == 'PUT':
                message = str(request.data.get('message', ''))
                image = str(request.data.get('image', ''))
                if current_user == post.user and user_country == post.country:
                    if message:
                        post.message = message
                    if image:
                        post.image = image
                    post.save()
                    return make_response(
                        jsonify({
                            "message": "You successfully updated post " + id,
                            "review": post_schema.dump(post)
                        })), 202
                else:
                    return make_response(
                        jsonify({
                            "message":
                            "This Post belongs to a different user"
                        })), 400
        else:
            return make_response(jsonify({"message":
                                          "Post does not exist"})), 404

    return app