diff --git a/qubesadmin/base.py b/qubesadmin/base.py index 2a009b6..cb9d64a 100644 --- a/qubesadmin/base.py +++ b/qubesadmin/base.py @@ -154,6 +154,23 @@ class PropertyHolder(object): assert isinstance(is_default, bool) return is_default + def clone_properties(self, src, proplist=None): + '''Clone properties from other object. + + :param PropertyHolder src: source object + :param list proplist: list of properties \ + (:py:obj:`None` or omit for all properties) + ''' + + if proplist is None: + proplist = self.property_list() + + for prop in proplist: + try: + setattr(self, prop, getattr(src, prop)) + except AttributeError: + continue + def __getattr__(self, item): # pylint: disable=too-many-return-statements if item.startswith('_'):