update/software/software/api/controllers/v1/base.py

53 lines
1.4 KiB
Python

"""
Copyright (c) 2013-2024 Wind River Systems, Inc.
SPDX-License-Identifier: Apache-2.0
"""
import datetime
import wsme
from wsme import types as wtypes
class APIBase(wtypes.Base):
created_at = datetime.datetime
"The time in UTC at which the object is created"
updated_at = datetime.datetime
"The time in UTC at which the object is updated"
def as_dict(self):
"""Render this object as a dict of its fields."""
return dict((k, getattr(self, k))
for k in self.fields # pylint: disable=no-member
if hasattr(self, k) and
getattr(self, k) != wsme.Unset)
def unset_fields_except(self, except_list=None):
"""Unset fields so they don't appear in the message body.
:param except_list: A list of fields that won't be touched.
"""
if except_list is None:
except_list = []
for k in self.as_dict():
if k not in except_list:
setattr(self, k, wsme.Unset)
@classmethod
def from_rpc_object(cls, m, fields=None):
"""Convert a RPC object to an API object."""
obj_dict = m.as_dict()
# Unset non-required fields so they do not appear
# in the message body
obj_dict.update(dict((k, wsme.Unset)
for k in obj_dict.keys()
if fields and k not in fields))
return cls(**obj_dict)