Beispiel #1
0
def create_app(script_info=None):

    # instantiate the app
    app = Flask(__name__)

    # enable CORS
    CORS(app)

    # set config
    app_settings = os.getenv('APP_SETTINGS')
    app.config.from_object(app_settings)
    mongo = PyMongo(app, tz_aware=True)
    app.__setattr__('mongo', mongo)

    # set up extensions
    mongo.init_app(app)

    # register blueprints
    from project.api.service_b_routes import service_b_blueprint
    app.register_blueprint(service_b_blueprint)

    # shell context for flask cli
    app.shell_context_processor({'app': app})

    return app
Beispiel #2
0
class Database:
    def __init__(self):
        self.mongo = PyMongo()

    def init_app(self, app):
        self.mongo.init_app(app)

    def delete(self, collection_name, query):
        self.mongo.db[collection_name].delete_one(query)

    def update(self, collection_name, query, new_values):
        self.mongo.db[collection_name].update_one(query, new_values)

    def add(self, collection_name, data):
        return self.mongo.db[collection_name].insert_one(data)

    def find_one(self, collection_name, query):
        return self.mongo.db[collection_name].find_one(query)

    def find(self, collection_name, query):
        return self.mongo.db[collection_name].find(query)

    def clear_db(self):
        db = self.mongo.db
        for collection in db.list_collection_names():
            db[collection].delete_many({})
def app():
    db = MongoEngine()
    crypt = Bcrypt()
    mongo = PyMongo()
    mail = Mail()

    login_manager = LoginManager()
    login_manager.login_view = None
    login_manager.login_message_category = 'info'

    app = create_app({
        "SECRET_KEY": 'testsecret',
        "SECURITY_PASSWORD_SALT": 'testsalt',
        "SECURITY_CSRF_COOKIE": {
            "key": "XSRF-TOKEN"
        },
        "SECURITY_CSRF_IGNORE_UNAUTH_ENDPOINTS": True,
        "WTF_CSRF_TIME_LIMIT": None,
        "WTF_CSRF_CHECK_DEFAULT": False,
        "MONGODB_SETTINGS": {
            'host': 'mongodb://localhost/pwsched-test'
        },
        "MONGO_URI": 'mongodb://localhost/pwsched-test',
        "TESTING": True
    })

    db.init_app(app)
    crypt.init_app(app)
    login_manager.init_app(app)
    mongo.init_app(app)
    mail.init_app(app)

    Shift.drop_collection()
    Congregation.drop_collection()
    User.drop_collection()

    congregation = Congregation(name="English - Willimantic").save()
    shift = Shift(location="UConn",
                  datetime=datetime.now,
                  congregation=congregation.to_dbref()).save()
    congregation.shifts.append(shift.to_dbref())
    congregation.save()
    hashed_password = crypt.generate_password_hash('password').decode('utf-8')
    User(
        name="Brother Service Overseer",
        email="*****@*****.**",
        password=hashed_password,
        congregation=(
            Congregation.objects().order_by('-id').first().to_dbref())).save()

    yield app

    Shift.drop_collection()
    Congregation.drop_collection()
    User.drop_collection()
Beispiel #4
0
def create_app():
    app = Flask(__name__)
    app.config[
        "MONGO_URI"] = 'mongodb+srv://admin:[email protected]/mydb?retryWrites=true&w=majority'
    #app.config["MONGO_URI"] = 'mongodb+srv://project_user:[email protected]/BusNetwork?retryWrites=true&w=majority'
    app.config["FILE_UPLOADS"] = '/static/file/uploads'
    mongo = PyMongo(app)
    mongo.init_app(app)

    app.register_blueprint(main)
    return app
Beispiel #5
0
def make_db(app):
    # SQL
    db = SQLAlchemy()
    db.init_app(app)

    # Mongo
    mg = PyMongo()
    mg.init_app(app)

    # CORS
    CORS(app)
    return db, mg, app
Beispiel #6
0
def init_app(app):
    global mongo
    global video_detections
    global tfl_videos
    mongo = PyMongo(app)
    mongo.init_app(app)

    # Set database collections which are used by the API
    video_detections = mongo.db.videoDetections
    tfl_videos = mongo.db.TfLvideos

    # Index on fields which get sorted on for faster query performance
    tfl_videos.create_index('datetime')
def setup_app(name, config='config'):
    app = Flask(__name__)
    app.config["MONGO_DBNAME"] = "NIST_test"
    db = PyMongo(app, config_prefix='MONGO')
    #APP_URL = "http://127.0.0.1:5001"

    ## Original ##
    #app = Flask(name)
    #app.config.from_object(config)

    app.debug = True

    # Flask-MongoEngine instance
    db.init_app(app)

    # Custom Converters
    app.url_map.converters['objectid'] = ObjectIDConverter

    return app
Beispiel #8
0
def init_app(app):
    global mongo

    mongo = PyMongo(app)
    mongo.init_app(app)
Beispiel #9
0
class planItDb():
    def __init__(self, secret):
        self.sig = JSONWebSignatureSerializer(secret)
        self.log = logging.getLogger("planItDb")

    def init_db(self, app):
        self.mongo = PyMongo()
        self.mongo.init_app(app)

    def log_access(self, idinfo, request, response):
        #ensure we have the user in the user db
        curs = self.mongo.db.users.find({'sub':idinfo['sub']}).limit(1)
        if curs.count() == 0:
            self.log.info("Add user to db: {}".format(idinfo))
            # need to make a copy because mongo adds its objectid, whcih
            # cannot be seralized into the session.
            d = idinfo.copy()
            d['created'] = datetime.datetime.utcnow()
            d['remote_addr'] = [request.remote_addr]
            self.mongo.db.users.insert(d)
        else:
            dbuser = curs.next()
            if request.remote_addr not in dbuser['remote_addr']:
                self.mongo.db.users.update(
                    {'_id': dbuser['_id']},
                    {'$push': {'remote_addr': request.remote_addr}}
                )

        self.mongo.db.accesses.insert(
        {
            'sub': idinfo['sub'],
            'headers': dict(request.headers),
            'args': {x:request.args[x] for x in request.args.keys()},
            'time': datetime.datetime.utcnow(),
            'remote': request.remote_addr,
            'url': request.url,
            'status': response.status_code,
            'length': response.content_length
        })
    def validate_key(self, key, remote_addr):
        doc = self.mongo.db.keys.find({'signature': key}).next()
        if doc == None:
            return False

        if 'active' not in doc:
            return False

        op = {
            '$inc': {'use_info.use_count': 1},
            '$set': {'use_info.last_used': datetime.datetime.utcnow()}
            }
        if remote_addr not in doc['use_info']['remotes']:
            op['$push'] = {'use_info.remotes': remote_addr}
        self.mongo.db.keys.update({'_id': doc['_id']}, op)

        return doc['active']

    def enable_key(self, idinfo, signature, remote_addr):
        return self.mongo.db.keys.update(
            {'sub': idinfo['sub'], 'signature': signature},
            {'$set': {'active': True}}
        )
    def disable_key(self, idinfo, signature, remote_addr):
        return self.mongo.db.keys.update(
            {'sub': idinfo['sub'], 'signature': signature},
            {'$set': {'active': False}}
        )
    def delete_key(self, idinfo, signature, remote_addr):
        self.mongo.db.users.update(
                {"sub": idinfo['sub']},
                {'$push': {'deleted_keys':
                    {'when': datetime.datetime.utcnow(),
                    'remote_addr': remote_addr,
                     'signature': signature}}
                    }
            )
        return self.mongo.db.keys.remove(
            {'sub': idinfo['sub'], 'signature': signature})

    def get_or_create_webkey(self, idinfo, remote_addr):
        "look for a webkey, reutrn if found, else create one and return it"
        curs = self.mongo.db.keys.find(
            {'sub': idinfo['sub'], 'web': True, 'active':True},
            {'_id': False})
        if curs.count() > 0:
            return curs.next()
        return self.create_key(idinfo, remote_addr, web=True)

    def create_key(self, idinfo, remote_addr, web=False):
        "create a new key for the user with idinfo (jwt)"
        keydoc = {
            'sub': idinfo['sub'],
            'created': datetime.datetime.utcnow(),
            'create_address': remote_addr,
            'use_info': {'use_count': 0,
                        'remotes': [remote_addr]},
            'active': True,
            'web': web,
            'signature': [0*64] # dummy data
        }
        self.mongo.db.keys.insert(keydoc)
        # do the insert to get the _id, then compute the signature on the id

        # store the doc id,
        docid = keydoc['_id']
        del keydoc['_id']

        keydoc['signature'] = self.sig.dumps(str(docid)).decode('utf-8')
        self.log.info("signature is: {}".format(keydoc['signature']))

        self.mongo.db.keys.update(
            {"_id": docid},
            {'$set': {'signature': keydoc['signature']}}
        )

        self.mongo.db.users.update(
            {"sub": idinfo['sub']},
            {'$push': {'created_keys':
                {'when': datetime.datetime.utcnow(),
                 'remote_addr': remote_addr,
                 'signature': keydoc['signature']}}}

        )

        return keydoc

    def list_keys(self, idinfo):
        keys = list(self.mongo.db.keys.find(
            {'sub': idinfo['sub']},
            {'_id': False}))

        self.log.info("got keys: {}".format(keys))

        return keys
def configure_mongo(app: Flask, py_mongo: PyMongo = MONGO_DB):
    app.config["MONGO_URI"] = os.environ.get(
        "MONGODB_URI", default='mongodb://localhost:27017/myDatabase')
    py_mongo.init_app(app)
    perform_migrations(app.config["MONGO_URI"])
Beispiel #11
0
import jwt
import time
from pymongo import MongoClient
from flask_pymongo import PyMongo
import gridfs
from db_config import *
from common import *
# from StringIO import StringIO
from io import StringIO

pymongoDB = Blueprint('pymongoDB', __name__)

app2 = Flask(__name__)
app2.config['MONGO_URI'] = "mongodb://*****:*****@pymongoDB.route("/pymongoDB/uploadFileMongo", methods=['GET', 'POST'])
def uploadFileMongo():
Beispiel #12
0
def configure_mongo(app: Flask, py_mongo: PyMongo = MONGO_DB):
    app.config["MONGO_URI"] = os.environ.get("MONGODB_URI", default='mongodb://localhost:27017/mongo')
    py_mongo.init_app(app)
Beispiel #13
0
login_manger.login_view = 'online.login'
log = logger()
oauth = OAuth()

# app config---------------------------------------------------------------------
app.config.from_object(db_config['database'])
app.config.from_object(config['email'])
app.config.from_object(config['paging'])
app.config.from_object(config['cache'])
app.config.from_object(config['session'])
app.config.from_object(db_config['csrf'])
app.config.from_object(db_config['key'])
app.config.from_object(config['upload'])

# init---------------------------------------------------------------------------
mdb_user.init_app(app, config_prefix='MONGO_USER')
mdb_cont.init_app(app, config_prefix='MONGO_CONT')
mdb_sys.init_app(app, config_prefix='MONGO_SYS')
cache.init_app(app)
sess.init_app(app)
csrf.init_app(app)
bootstrap.init_app(app)
login_manger.init_app(app)
moment.init_app(app)
mail.init_app(app)
log.init_app(app)
oauth.init_app(app)

# oauth --------------------------------------------------------------------------
#QQ
QQ_APP_ID = os.getenv('QQ_APP_ID', db_config['my_oauth'].QQ_APP_ID)
Beispiel #14
0
# -*-coding:utf-8-*-
from flask import Flask
from flask_login import LoginManager
from flask_pymongo import PyMongo
from apps.db_config import MongoDB, Secret

__author__ = "Allen Woo"

# 创建flask实例对象
app = Flask(__name__)
# 创建对象
mongo = PyMongo()
login_manger = LoginManager()
login_manger.session_protection = 'strong'

# app加载配置
app.config.from_object(MongoDB)
app.config.from_object(Secret)

# 初始化mongo我们数据库库配置变量的前缀都是MONGO
mongo.init_app(app, config_prefix='MONGO')
login_manger.init_app(app)

# 注册蓝本
from apps.blueprint import api, view
app.register_blueprint(view, url_prefix="")
app.register_blueprint(api, url_prefix="/api")



Beispiel #15
0
from flask import Flask
from warehouse.routes.backend import Backend
from flask_login import LoginManager
from flask_pymongo import PyMongo

# Initializes Flask
app = Flask(__name__, template_folder="./template")
app.config["MONGO_URI"] = "mongodb://127.0.0.1/SmartHouse"
db = PyMongo(app)

db.init_app(app)
Backend = Backend(db)

login_manager = LoginManager()
login_manager.login_view = 'auth.login'
login_manager.init_app(app)

from user import User


@login_manager.user_loader
def load_user(user_id):
    # since the user_id is just the primary key of our user table, use it in the query for the user
    return User(int(user_id))


from warehouse.routes.main import main
# Registers the paths for the main component
app.register_blueprint(main)

from warehouse.routes.auth import auth
Beispiel #16
0
from flask import Flask
from flask_pymongo import PyMongo
from pymongo import MongoClient
from config import Config

app = Flask(__name__)
app.config.from_object(Config)
mongo = PyMongo(app)
mongo.init_app(app)

from app import routes
Beispiel #17
0
app = Flask(__name__)

database_file = open('db.txt', 'U')
db_host = database_file.readline().strip() #URL and port
dbname = database_file.readline().strip()
user = database_file.readline().strip()
password = database_file.readline().strip()
database_file.close()
app.config['MONGO_DBNAME'] = dbname
app.config['MONGO_URI'] = 'mongodb://' + user + ':' + password + '@' + db_host + '/' + dbname
app.config['MONGO_CONNECT'] = False

mongo = PyMongo()
with app.app_context():
	mongo.init_app(app)

import json

#Copy from StackOverflow-----------------------------
from os import path
import os

extra_dirs = ['static','templates']
extra_files = extra_dirs[:]
for extra_dir in extra_dirs:
    for dirname, dirs, files in os.walk(extra_dir):
        for filename in files:
            filename = path.join(dirname, filename)
            if path.isfile(filename):
                extra_files.append(filename)
Beispiel #18
0
application.config['SQLALCHEMY_DATABASE_URI'] = 'postgresql+psycopg2://%(user)s:%(pw)s@%(host)s:%(port)s/%(db)s' % POSTGRES
application.config['WTF_CSRF_ENABLED'] = True

# MONGO URI(DISABLED)
application.config ['MONGO_URI'] = 'mongodb://localhost:27017/redwingdb'
application.config ["ACCEPTABLE_COLUMNS"] = ['type','item','storage_type','item_type','weight',
        'uom','stock','value']


# Start application and database instances
db.app = application
db.init_app (application)

mongo = PyMongo (application)
mongo.init_app (application)

logfile_collection = mongo.db.logfiles

db.create_all ()
db.session.commit ()


'''
---------------------------------------------------
IMAGE UPLOAD LOADING FOR PLOTS AND VISUALIZATIONS
---------------------------------------------------
'''

# Load static image from server to html pages (for visualization tool)
# TODO:Add more comments explaining this.