Move out to bs.sqlalchemy
This commit is contained in:
parent
abb0a025fe
commit
c9b20c865b
@ -14,11 +14,16 @@
|
|||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
|
from sqlalchemy import Column, DateTime, Unicode, UnicodeText
|
||||||
from sqlalchemy.exc import IntegrityError
|
from sqlalchemy.exc import IntegrityError
|
||||||
from sqlalchemy.orm import object_mapper
|
from sqlalchemy.orm import object_mapper
|
||||||
|
from sqlalchemy.ext.hybrid import hybrid_property
|
||||||
from sqlalchemy.ext.declarative import declared_attr
|
from sqlalchemy.ext.declarative import declared_attr
|
||||||
|
|
||||||
from billingstack import exceptions, utils
|
from billingstack import exceptions, utils
|
||||||
|
from billingstack.sqlalchemy.types import UUID
|
||||||
|
from billingstack.openstack.common.uuidutils import generate_uuid
|
||||||
|
from billingstack.openstack.common import timeutils
|
||||||
|
|
||||||
|
|
||||||
class ModelBase(object):
|
class ModelBase(object):
|
||||||
@ -89,3 +94,47 @@ class ModelBase(object):
|
|||||||
if not k[0] == '_'])
|
if not k[0] == '_'])
|
||||||
local.update(joined)
|
local.update(joined)
|
||||||
return local.iteritems()
|
return local.iteritems()
|
||||||
|
|
||||||
|
|
||||||
|
class BaseMixin(object):
|
||||||
|
"""
|
||||||
|
A mixin that provides id, and some dates.
|
||||||
|
"""
|
||||||
|
id = Column(UUID, default=generate_uuid, primary_key=True)
|
||||||
|
created_at = Column(DateTime, default=timeutils.utcnow)
|
||||||
|
updated_at = Column(DateTime, onupdate=timeutils.utcnow)
|
||||||
|
|
||||||
|
|
||||||
|
TYPES = {
|
||||||
|
"float": float,
|
||||||
|
"str": unicode,
|
||||||
|
"unicode": unicode,
|
||||||
|
"int": int,
|
||||||
|
"bool": bool
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
class PropertyMixin(object):
|
||||||
|
"""
|
||||||
|
Helper mixin for Property classes.
|
||||||
|
|
||||||
|
Store the type of the value using type() or the pre-defined data_type
|
||||||
|
and cast it on value when returning the value.
|
||||||
|
|
||||||
|
Supported types are in the TYPES dict.
|
||||||
|
"""
|
||||||
|
id = Column(UUID, default=generate_uuid, primary_key=True)
|
||||||
|
data_type = Column(Unicode(20), nullable=False, default=u'str')
|
||||||
|
name = Column(Unicode(60), index=True, nullable=False)
|
||||||
|
_value = Column('value', UnicodeText)
|
||||||
|
|
||||||
|
@hybrid_property
|
||||||
|
def value(self):
|
||||||
|
data_type = TYPES.get(self.data_type, str)
|
||||||
|
return data_type(self._value)
|
||||||
|
|
||||||
|
@value.setter
|
||||||
|
def value(self, value):
|
||||||
|
data_type = type(value).__name__
|
||||||
|
self.data_type = data_type
|
||||||
|
self._value = value
|
@ -17,7 +17,7 @@ from oslo.config import cfg
|
|||||||
from billingstack.openstack.common import log as logging
|
from billingstack.openstack.common import log as logging
|
||||||
from billingstack import exceptions
|
from billingstack import exceptions
|
||||||
from billingstack import utils as common_utils
|
from billingstack import utils as common_utils
|
||||||
from billingstack.storage.impl_sqlalchemy import utils as db_utils
|
from billingstack.sqlalchemy import utils as db_utils
|
||||||
from billingstack.storage import base
|
from billingstack.storage import base
|
||||||
from billingstack.storage.impl_sqlalchemy import models
|
from billingstack.storage.impl_sqlalchemy import models
|
||||||
from billingstack.storage.impl_sqlalchemy.session import get_session, SQLOPTS
|
from billingstack.storage.impl_sqlalchemy.session import get_session, SQLOPTS
|
||||||
|
@ -22,10 +22,9 @@ from sqlalchemy.ext.declarative import declarative_base, declared_attr
|
|||||||
|
|
||||||
from billingstack import utils
|
from billingstack import utils
|
||||||
from billingstack.openstack.common import log as logging
|
from billingstack.openstack.common import log as logging
|
||||||
from billingstack.openstack.common import timeutils
|
|
||||||
from billingstack.openstack.common.uuidutils import generate_uuid
|
|
||||||
from billingstack.sqlalchemy.types import JSON, UUID
|
from billingstack.sqlalchemy.types import JSON, UUID
|
||||||
from billingstack.sqlalchemy.model_base import ModelBase
|
from billingstack.sqlalchemy.model_base import (ModelBase, BaseMixin,
|
||||||
|
PropertyMixin)
|
||||||
|
|
||||||
LOG = logging.getLogger(__name__)
|
LOG = logging.getLogger(__name__)
|
||||||
|
|
||||||
@ -33,59 +32,6 @@ LOG = logging.getLogger(__name__)
|
|||||||
BASE = declarative_base(cls=ModelBase)
|
BASE = declarative_base(cls=ModelBase)
|
||||||
|
|
||||||
|
|
||||||
TYPES = {
|
|
||||||
"float": float,
|
|
||||||
"str": unicode,
|
|
||||||
"unicode": unicode,
|
|
||||||
"int": int,
|
|
||||||
"bool": bool
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
class PropertyMixin(object):
|
|
||||||
"""
|
|
||||||
Helper mixin for Property classes.
|
|
||||||
|
|
||||||
Store the type of the value using type() or the pre-defined data_type
|
|
||||||
and cast it on value when returning the value.
|
|
||||||
|
|
||||||
Supported types are in the TYPES dict.
|
|
||||||
"""
|
|
||||||
id = Column(UUID, default=generate_uuid, primary_key=True)
|
|
||||||
data_type = Column(Unicode(20), nullable=False, default=u'str')
|
|
||||||
name = Column(Unicode(60), index=True, nullable=False)
|
|
||||||
_value = Column('value', UnicodeText)
|
|
||||||
|
|
||||||
@hybrid_property
|
|
||||||
def value(self):
|
|
||||||
data_type = TYPES.get(self.data_type, str)
|
|
||||||
return data_type(self._value)
|
|
||||||
|
|
||||||
@value.setter
|
|
||||||
def value(self, value):
|
|
||||||
data_type = type(value).__name__
|
|
||||||
self.data_type = data_type
|
|
||||||
self._value = value
|
|
||||||
|
|
||||||
|
|
||||||
class BaseMixin(object):
|
|
||||||
"""
|
|
||||||
A mixin that provides id, and some dates.
|
|
||||||
"""
|
|
||||||
id = Column(UUID, default=generate_uuid, primary_key=True)
|
|
||||||
created_at = Column(DateTime, default=timeutils.utcnow)
|
|
||||||
updated_at = Column(DateTime, onupdate=timeutils.utcnow)
|
|
||||||
|
|
||||||
|
|
||||||
TYPES = {
|
|
||||||
"float": float,
|
|
||||||
"str": unicode,
|
|
||||||
"unicode": unicode,
|
|
||||||
"int": int,
|
|
||||||
"bool": bool
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
class Currency(BASE):
|
class Currency(BASE):
|
||||||
"""
|
"""
|
||||||
Allowed currency
|
Allowed currency
|
||||||
|
Loading…
x
Reference in New Issue
Block a user