示例#1
0
class TestingConfig(Config):
    TESTING = True
    DEBUG = True
    MONGO_URI = env_var("MONGO_GCE_URI")
    DB_NAME = env_var("MONGO_STAGE")
    BIGQUERY_SITES = env_var("BIGQUERY_SITES_STAGE")
    BIGQUERY_EVENTS = env_var("BIGQUERY_EVENTS_STAGE")
示例#2
0
class DevelopmentConfig(Config):
    DEVELOPMENT = True
    DEBUG = True
    MONGO_URI = env_var("MONGO_LOCAL_URI")
    DB_NAME = env_var("MONGO_DEV")
    BIGQUERY_SITES = env_var("BIGQUERY_SITES_STAGE")
    BIGQUERY_EVENTS = env_var("BIGQUERY_EVENTS_STAGE")
示例#3
0
class Config:
    DEBUG = False
    TESTING = False
    CSRF_ENABLED = True
    SECRET_KEY = env_var("SECRET_KEY")

    CACHE_TYPE = 'RedisCache'
    CACHE_DEFAULT_TIMEOUT = TWO_HOURS
    CACHE_KEY_PREFIX = f'Analytics-{APP_ENV}'
    CACHE_REDIS_HOST = env_var('REDIS_SERVER')
    CACHE_REDIS_PORT = env_var('REDIS_PORT')
    CACHE_REDIS_URL = f"redis://{env_var('REDIS_SERVER')}:{env_var('REDIS_PORT')}"

    CLARITY_API_BASE_URL = env_var("CLARITY_API_BASE_URL")
    CLARITY_API_KEY = env_var("CLARITY_API_KEY")

    SWAGGER = {
        "swagger": "2.0",
        "info": {
            "title": "Analytics API",
            "description": "API docs for analytics AirQO microservice",
            "version": "0.0.1"
        },
        "schemes": ["http", "https"],
        'footer_text':
        LazyString(lambda: f'© AirQo. {datetime.now().year}'),
        'head_text': '<style>.top_text{color: red;}</style>',
        'doc_expansion': "list",
        'ui_params': {
            'apisSorter': 'alpha',
            'operationsSorter': 'alpha',
        },
        'ui_params_text': '''{
            "operationsSorter" : (a, b) => a.get("path").localeCompare(b.get("path"))
        }''',
        "url_prefix": f"{BASE_URL}"
    }
示例#4
0
from decouple import config as env_var
from pymongo import MongoClient

from config import config
from .model_operations import ModelOperations

APP_CONFIG = config.get(env_var("FLASK_ENV"))


class BasePyMongoModel(ModelOperations):
    """base model for all database models"""

    __abstract__ = True

    def __init__(self, tenant, collection_name):
        super().__init__()
        self.tenant = tenant.lower()
        self.collection_name = collection_name
        self.db = self._connect()
        self.collection = self.db[collection_name]

    def _connect(self):
        client = MongoClient(APP_CONFIG.MONGO_URI)
        db = client[f'{APP_CONFIG.DB_NAME}_{self.tenant}']

        # lets hard code the db here for dev purposes
        # db = client['airqo_analytics']
        return db

    def __repr__(self):
        return f"{self.__class__.__name__}({self.tenant}, {self.collection_name})"
示例#5
0
class ProductionConfig(Config):
    DEBUG = False
    MONGO_URI = env_var("MONGO_GCE_URI")
    DB_NAME = env_var("MONGO_PROD")
    BIGQUERY_SITES = env_var("BIGQUERY_SITES_PROD")
    BIGQUERY_EVENTS = env_var("BIGQUERY_EVENTS_PROD")
示例#6
0
from datetime import datetime
from pathlib import Path
from dotenv import load_dotenv
from decouple import config as env_var
from flasgger import LazyString

env_path = Path('.') / '.env'
load_dotenv(dotenv_path=env_path, verbose=True)

TWO_HOURS = 7200  # seconds

BASE_URL = "/api/v1/analytics"

APP_ENV = env_var('FLASK_ENV', 'production')


class Config:
    DEBUG = False
    TESTING = False
    CSRF_ENABLED = True
    SECRET_KEY = env_var("SECRET_KEY")

    CACHE_TYPE = 'RedisCache'
    CACHE_DEFAULT_TIMEOUT = TWO_HOURS
    CACHE_KEY_PREFIX = f'Analytics-{APP_ENV}'
    CACHE_REDIS_HOST = env_var('REDIS_SERVER')
    CACHE_REDIS_PORT = env_var('REDIS_PORT')
    CACHE_REDIS_URL = f"redis://{env_var('REDIS_SERVER')}:{env_var('REDIS_PORT')}"

    CLARITY_API_BASE_URL = env_var("CLARITY_API_BASE_URL")
    CLARITY_API_KEY = env_var("CLARITY_API_KEY")