"""Report.""" class Report: """Report.""" s3_path_template = 's3://{bucket}/{prefix}{account_prefix}{key}/{filename}' user_params_template = '{period}__all__{file_type}__en_US' account_prefix = 'user_id_type=' file_type = 'AVRO' status = 'GENERATED' def __init__(self, period, bucket, s3_path): """Store report metadata.""" _, _, account_key, filename = s3_path.split('/') prefix_len = len(self.account_prefix) self.user_id_type = account_key[prefix_len:] self.filename = filename self.period_ids = period.period_ids self.prefix = period.prefix self.bucket = bucket self.s3_path = self.s3_path_template.format( bucket=self.bucket, prefix=self.prefix, account_prefix=self.account_prefix, key=self.user_id_type, filename=self.filename) self.user_params = self.user_params_template.format( period=self.period_ids, file_type=self.file_type) @property def ddb_item(self): """Get the dynamodb item as a dict.""" return { 'file_type': self.file_type, 'period_ids': self.period_ids, 's3_path': self.s3_path, 'status': self.status, 'user_id_type': self.user_id_type, 'user_params': self.user_params}