##// END OF EJS Templates
ini: added new key
ini: added new key

File last commit:

r112:998f0d14
r129:489ce37b
Show More
__init__.py
130 lines | 4.8 KiB | text/x-python | PythonLexer
# -*- coding: utf-8 -*-
# Copyright 2010 - 2017 RhodeCode GmbH and the AppEnlight project authors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import logging
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import MetaData
from sqlalchemy.orm import scoped_session
from sqlalchemy.orm import sessionmaker
from zope.sqlalchemy import ZopeTransactionExtension
import ziggurat_foundations
from ziggurat_foundations.models.base import get_db_session
log = logging.getLogger(__name__)
DBSession = scoped_session(sessionmaker(extension=ZopeTransactionExtension()))
NAMING_CONVENTION = {
"ix": 'ix_%(column_0_label)s',
"uq": "uq_%(table_name)s_%(column_0_name)s",
"ck": "ck_%(table_name)s_%(constraint_name)s",
"fk": "fk_%(table_name)s_%(column_0_name)s_%(referred_table_name)s",
"pk": "pk_%(table_name)s"
}
metadata = MetaData(naming_convention=NAMING_CONVENTION)
Base = declarative_base(metadata=metadata)
# optional for request.db approach
ziggurat_foundations.models.DBSession = DBSession
class Datastores(object):
redis = None
es = None
def register_datastores(es_conn, redis_conn, redis_lockmgr):
Datastores.es = es_conn
Datastores.redis = redis_conn
Datastores.lockmgr = redis_lockmgr
class SliceableESQuery(object):
def __init__(self, query, sort_query=None, aggregations=False, **kwconfig):
self.query = query
self.sort_query = sort_query
self.aggregations = aggregations
self.items_per_page = kwconfig.pop('items_per_page', 10)
self.page = kwconfig.pop('page', 1)
self.kwconfig = kwconfig
self.result = None
def __getitem__(self, index):
config = self.kwconfig.copy()
config['es_from'] = index.start
query = self.query.copy()
if self.sort_query:
query.update(self.sort_query)
self.result = Datastores.es.search(query, size=self.items_per_page,
**config)
if self.aggregations:
self.items = self.result.get('aggregations')
else:
self.items = self.result['hits']['hits']
return self.items
def __iter__(self):
return self.result
def __len__(self):
config = self.kwconfig.copy()
query = self.query.copy()
self.result = Datastores.es.search(query, size=self.items_per_page,
**config)
if self.aggregations:
self.items = self.result.get('aggregations')
else:
self.items = self.result['hits']['hits']
count = int(self.result['hits']['total'])
return count if count < 5000 else 5000
from appenlight.models.resource import Resource
from appenlight.models.application import Application
from appenlight.models.user import User
from appenlight.models.alert_channel import AlertChannel
from appenlight.models.alert_channel_action import AlertChannelAction
from appenlight.models.metric import Metric
from appenlight.models.application_postprocess_conf import \
ApplicationPostprocessConf
from appenlight.models.auth_token import AuthToken
from appenlight.models.event import Event
from appenlight.models.external_identity import ExternalIdentity
from appenlight.models.group import Group
from appenlight.models.group_permission import GroupPermission
from appenlight.models.group_resource_permission import GroupResourcePermission
from appenlight.models.log import Log
from appenlight.models.plugin_config import PluginConfig
from appenlight.models.report import Report
from appenlight.models.report_group import ReportGroup
from appenlight.models.report_comment import ReportComment
from appenlight.models.report_assignment import ReportAssignment
from appenlight.models.report_stat import ReportStat
from appenlight.models.slow_call import SlowCall
from appenlight.models.tag import Tag
from appenlight.models.user_group import UserGroup
from appenlight.models.user_permission import UserPermission
from appenlight.models.user_resource_permission import UserResourcePermission
from ziggurat_foundations import ziggurat_model_init
ziggurat_model_init(User, Group, UserGroup, GroupPermission, UserPermission,
UserResourcePermission, GroupResourcePermission,
Resource,
ExternalIdentity, passwordmanager=None)