"""Model for the USPhysicalRetailerAggregateView.""" from collections import OrderedDict from reporting.models.persister import aggregate from reporting.models.us_physical_retailer_view import USPhysicalRetailerView class USPhysicalRetailerAggregateView(USPhysicalRetailerView): """US Retailer Aggregate View model.""" @classmethod def all(cls, params): """Get all data rows.""" filters = [ 'artist', 'retailer', 'product_type', 'product_name', 'sub_label', 'release_date', 'vendor_id', 'subacct_id', 'product_code', 'upc_ean', 'is_generic_product', ] return aggregate(cls, params, filters) @staticmethod def to_dict(row): """Convert Retailer Aggregate View to a dict.""" data = OrderedDict() data['Retailer'] = row[0] data['Retailer Code'] = row[1] data['Open Orders'] = row[2] data['Backorders'] = row[3] data['First4WeekS#'] = row[4] data['5DayS#'] = row[5] data['5DayR#'] = row[6] data['Last4WkS#'] = row[7] data['Last4WkR#'] = row[8] data['MTDS#'] = row[9] data['MTDR#'] = row[10] data['CYTDS#'] = row[11] data['CYTDR#'] = row[12] data['CumTDS#'] = row[13] data['CumTDR#'] = row[14] return data @classmethod def headers(self): """Get all headers.""" return [ 'Retailer', 'Retailer Code', 'Open Orders', 'Backorders', 'First4WeekS#', '5DayS#', '5DayR#', 'Last4WkS#', 'Last4WkR#', 'MTDS#', 'MTDR#', 'CYTDS#', 'CYTDR#', 'CumTDS#', 'CumTDR#', ]