From 524573f21dfc3d88b1512850d52da7e5b545cf9d Mon Sep 17 00:00:00 2001 From: Sastry Isukapalli Date: Thu, 11 Jan 2018 14:45:11 -0500 Subject: Seed code for OSDF placement adapter Issue-ID: OPTFRA-46 Change-Id: Ia1e5ecae1052d0ef93d99cf560216822051c438f Signed-off-by: Sastry Isukapalli --- models/api/common.py | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100755 models/api/common.py (limited to 'models/api/common.py') diff --git a/models/api/common.py b/models/api/common.py new file mode 100755 index 0000000..0d2d0eb --- /dev/null +++ b/models/api/common.py @@ -0,0 +1,54 @@ +# ------------------------------------------------------------------------- +# Copyright (c) 2015-2017 AT&T Intellectual Property +# +# 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 datetime +from pprint import pformat + +from dateutil.parser import parse +from schematics.exceptions import ConversionError +from schematics.models import Model +from schematics.types import DateTimeType + + +class OSDFModel(Model): + """Extends generic model with a couple of extra methods""" + def __str__(self): + """Return values of object's attributes -- excluding hidden or callable ones""" + def _str_format(x): + """Coerce as string for some special objects""" + return str(x) if isinstance(x, datetime.datetime) else x + + z1 = dict((x, getattr(self, x)) for x in dir(self) + if not x.startswith("_") and not callable(getattr(self, x))) + z1 = dict((x, _str_format(y)) for x, y in z1.items()) + return pformat(z1, depth=4, indent=2, width=1000) + + def __repr__(self): + """Return values of object's attributes -- excluding hidden or callable ones""" + return self.__str__() + + +class CustomISODateType(DateTimeType): + """Schematics doesn't support full ISO, so we use custom one""" + def to_native(self, value, context=None): + if isinstance(value, datetime.datetime): + return value + try: + return parse(value) + except: + raise ConversionError(u'Invalid timestamp {}'.format(value)) -- cgit 1.2.3-korg