This repository has been archived on 2024-05-31. You can view files and clone it, but cannot push or open issues or pull requests.
devicehub-teal/ereuse_devicehub/config.py

79 lines
2.9 KiB
Python
Raw Normal View History

2018-04-27 17:16:43 +00:00
from distutils.version import StrictVersion
from itertools import chain
2018-06-10 16:47:49 +00:00
from typing import Set
2018-04-27 17:16:43 +00:00
2019-01-19 18:19:35 +00:00
import boltons.urlutils
from teal.auth import TokenAuth
2018-04-10 15:06:39 +00:00
from teal.config import Config
from teal.enums import Currency
from teal.utils import import_resource
2018-04-10 15:06:39 +00:00
from ereuse_devicehub.resources import agent, event, lot, tag, user
from ereuse_devicehub.resources.device import definitions
from ereuse_devicehub.resources.documents import documents
2018-09-07 10:38:02 +00:00
from ereuse_devicehub.resources.enums import PriceSoftware, RatingSoftware
2018-04-10 15:06:39 +00:00
class DevicehubConfig(Config):
RESOURCE_DEFINITIONS = set(chain(import_resource(definitions),
import_resource(event),
import_resource(user),
import_resource(tag),
2018-08-08 19:25:53 +00:00
import_resource(agent),
import_resource(lot),
import_resource(documents))
)
2018-06-10 16:47:49 +00:00
PASSWORD_SCHEMES = {'pbkdf2_sha256'} # type: Set[str]
2018-06-21 16:10:19 +00:00
SQLALCHEMY_DATABASE_URI = 'postgresql://dhub:ereuse@localhost/devicehub' # type: str
2018-07-14 14:41:22 +00:00
SCHEMA = 'dhub'
2018-07-02 10:52:54 +00:00
MIN_WORKBENCH = StrictVersion('11.0a1') # type: StrictVersion
"""
2018-07-14 14:41:22 +00:00
the minimum version of ereuse.org workbench that this devicehub
2018-06-26 13:36:21 +00:00
accepts. we recommend not changing this value.
"""
ORGANIZATION_NAME = None # type: str
ORGANIZATION_TAX_ID = None # type: str
"""
The organization using this Devicehub.
It is used by default, for example, when creating tags.
"""
API_DOC_CONFIG_TITLE = 'Devicehub'
API_DOC_CONFIG_VERSION = '0.2'
API_DOC_CONFIG_COMPONENTS = {
'securitySchemes': {
'bearerAuth': TokenAuth.API_DOCS
}
}
API_DOC_CLASS_DISCRIMINATOR = 'type'
2018-07-14 14:41:22 +00:00
WORKBENCH_RATE_SOFTWARE = RatingSoftware.ECost
WORKBENCH_RATE_VERSION = StrictVersion('1.0')
PHOTOBOX_RATE_SOFTWARE = RatingSoftware.ECost
PHOTOBOX_RATE_VERSION = StrictVersion('1.0')
"""
Official versions for WorkbenchRate and PhotoboxRate
"""
PRICE_SOFTWARE = PriceSoftware.Ereuse
PRICE_VERSION = StrictVersion('1.0')
PRICE_CURRENCY = Currency.EUR
"""
Official versions
"""
2019-01-19 18:19:35 +00:00
TAG_BASE_URL = None
TAG_TOKEN = None
"""Access to the tag provider."""
2018-07-14 14:41:22 +00:00
2019-01-21 15:08:55 +00:00
def __init__(self, schema: str = None, token=None) -> None:
if not self.ORGANIZATION_NAME or not self.ORGANIZATION_TAX_ID:
raise ValueError('You need to set the main organization parameters.')
2019-01-21 15:08:55 +00:00
if not self.TAG_BASE_URL:
2019-01-19 18:19:35 +00:00
raise ValueError('You need a tag service.')
2019-01-21 15:08:55 +00:00
self.TAG_TOKEN = token or self.TAG_TOKEN
if not self.TAG_TOKEN:
raise ValueError('You need a tag token')
2019-01-19 18:19:35 +00:00
self.TAG_BASE_URL = boltons.urlutils.URL(self.TAG_BASE_URL)
2019-01-21 15:08:55 +00:00
if schema:
self.SCHEMA = schema
super().__init__()