"""Define Asset object.""" asset_types = ['audio', 'cover'] class Asset(object): def __init__(self, **kwargs): self.orch_upc = None self.long_orch_upc = None self.source_relid = None self.s3_file_name = None self.vendor_id = None self.alw_id = None self.tuid = None self.product_id = None self.release_level_key = None # TODO: Fix asset_type check. Might be content_type in ASSETS_V2 if not self.asset_type and 'type' not in kwargs.keys(): raise AttributeError('\'type\' must be specified.') if not self.asset_type and kwargs['type'] not in asset_types: type_list = '\', \''.join(asset_types) raise AttributeError( '\'type\' must be one of (\'{}\')'.format(type_list)) self.__dict__.update(kwargs) def update(self, **kwargs): # Update all vals self.__dict__.update(kwargs) # Another way to update # for key in kwargs: # setattr(self, key, kwargs[key]) def __str__(self): return ',\n'.join([ '{}: {}'.format(k, v) for k, v in self.__dict__.items()]) def __eq__(self, other): if isinstance(self, other.__class__): for attr, value in self.__dict__.items(): if getattr(self, attr) != getattr(other, attr): return False return True class Cover(Asset): def __init__(self, **kwargs): self.asset_type = 'cover' self.orchard_cover_file = None self.long_orchard_cover_file = None self.source_cover_jpg_file = None self.source_cover_tif_file = None self.content_type = 'TIF' super(Cover, self).__init__(**kwargs) class Audio(Asset): def __init__(self, **kwargs): self.asset_type = 'audio' self.orchard_audio_file = None self.orchard_audio_file_flac = None self.long_orchard_audio_file = None self.long_orchard_audio_file_flac = None self.source_audio_file = None self.source_audio_file_flac = None self.content_type = 'WAV' super(Audio, self).__init__(**kwargs) if __name__ == '__main__': x = Audio( orch_upc='upc', long_orch_upc='long_orch_upc', orchard_audio_file='orchard_audio_file', orchard_audio_file_flac='orchard_audio_file_flac', long_orchard_audio_file='long_orchard_audio_file', long_orchard_audio_file_flac='long_orchard_audio_file_flac', source_relid='source_relid', source_audio_file='source_audio_file', source_audio_file_flac='source_audio_file_flac', s3_file_name='file_name' ) y = Audio( orch_upc='upc', long_orch_upc='long_orch_upc', orchard_audio_file='orchard_audio_file', orchard_audio_file_flac='orchard_audio_file_flac', long_orchard_audio_file='long_orchard_audio_file', long_orchard_audio_file_flac='long_orchard_audio_file_flac', source_relid='source_relid', source_audio_file='source_audio_file', source_audio_file_flac='source_audio_file_flac', s3_file_name='file_name' ) print(x) print(x == y) x.update(orch_upc='new_upc') print(x) print(x.type) print(x == y)