import collections import os START_TO_CLOSE_TIMEOUT = 18000 LINES_PER_FILE = 1000000 STATUS_UPDATE_INTERVALS = 10 # no. of dynamodb progress info. update requests FORMAT_CACHE_SIZE = 524288 # 500K calls to cache DEFAULT_REPORT_VERSION = 1 REPORT_DELIMITER = '\t' TXT_FILE = 'TXT' XLS_FILE = 'XLS' TEMP_DIR = os.getenv('TEMP_DIR') or '.' FILE_ENCODING = { 'txt': 'utf-8', 'xls': 'utf-16' } ENCLOSE_CHARACTER = { 'txt': '', 'xls': '"' } ENV = os.getenv('Environment') EMAIL_SENDER = 'donotreply@theorchard.com' FILE_IS_READY_EMAIL = os.getenv('FILE_IS_READY_EMAIL') LOCAL_AVRO_FILE_PATH = ( '{tmp_dir}/custom_report/{{user_id_type}}/avro/{{user_params_key}}' '.avro').format( tmp_dir=TEMP_DIR) LOCAL_FILE_PATH = ( '{tmp_dir}/custom_report/{{user_id_type}}/{{user_params_key}}/' '{{file_name}}').format( tmp_dir=TEMP_DIR) EXPORT_GENERATION_DIR = os.path.join(TEMP_DIR, 'custom_report') BUCKET = os.getenv('ACCOUNTING_STATEMENT_EXPORT_BUCKET') FINAL_REPORT_S3_PATH = ( 's3://{bucket}/statement_detail_exports/' '{{user_id_type}}/{{user_params}}/{{key_name}}').format( bucket=BUCKET) FINAL_REPORT_NAME = ( '{date}_{reporting_period}_{report_type}_{user_name}_{number_format}') DEFAULT_FILE_REPORT_TYPE = 'customreport' FILE_REPORT_TYPES = { 'all': 'fullreport', 'physical': 'physicalreport', } # Note that there is no EB for dev environment. So I cannot # just add an environment variable for this. HISTORY_PAGE_URL_HOST = { 'dev': 'http://workstation.192.168.99.100.xip.io', 'qa': 'https://workstation.qaorch.com', 'prod': 'https://workstation.theorchard.com' } HISTORY_PAGE_URL = ( '{host}/accounting/statementshistory/' 'period/{period}/{min_period}/{max_period}/history') money_columns = [ 'publishing', 'split_rate', 'label_share_net_receipts', 'cloud_publishing', 'mech_administrative_fee', 'ringtone_publishing', 'original_price', 'discount', 'unit_price', 'adjusted_gross', 'gross', 'subaccount_label_share_net_receipts' ] integer_columns = [ 'quantity' ] Column = collections.namedtuple('Column', ['name', 'title']) columns_v2_list = [ Column('period', title='Period'), Column('activity_period', title='Activity Period'), Column('dms', title='Retailer'), Column('territory', title='Territory'), Column('orchard_upc', title='Orchard UPC'), Column('manufacturer_upc', title="Manufacturer's UPC"), Column('label_catalog', title='Project Code'), Column('product_code', title='Product Code'), Column('subaccount', title='Subaccount'), Column('imprint_label', title='Imprint Label'), Column('artist_name', title='Artist Name'), Column('release_name', title='Product Name'), Column('track_name', title='Track Name'), Column('track_artists', title='Track Artist'), Column('isrc', title='ISRC'), Column('volume', title='Volume'), Column('track_number', title='Track #'), Column('trans_type', title='Trans Type'), Column('transactiontypedesc', title='Trans Type Description'), Column('original_price', title='Unit Price'), Column('discount', title='Discount'), Column('unit_price', title='Actual Price'), Column('quantity', title='Quantity'), Column('gross', title='Total'), Column('adjusted_gross', title='Adjusted Total'), Column('split_rate', title='Split Rate'), Column('label_share_net_receipts', title='Label Share Net Receipts'), Column('ringtone_publishing', title='Ringtone Publishing'), Column('cloud_publishing', title='Cloud Publishing'), Column('publishing', title='Publishing'), Column('mech_administrative_fee', title='Mech. Administrative Fee'), Column( 'subaccount_label_share_net_receipts', title='Label Share Net Receipts'), Column('preferred_currency', title='Preferred Currency'), Column('statement_detail_id', title='statement_detail_id'), Column('isdistributor', title='isdistributor'), Column('user_id_type', title='user_id_type'), ] physical_report_columns_list = [ Column('period', title='Period'), Column('activity_period', title='Activity Period'), Column('dms', title='Retailer'), Column('territory', title='Territory'), Column('orchard_upc', title='Orchard UPC'), Column('label_catalog', title='Project Code'), Column('product_code', title='Product Code'), Column('subaccount', title='Subaccount'), Column('imprint_label', title='Imprint Label'), Column('artist_name', title='Artist Name'), Column('release_name', title='Product Name'), Column('physical_product_type', title='Product Type'), Column('physical_product_format', title='Product Format'), Column('display_configuration', title='Display Configuration'), Column('trans_type', title='Trans Type'), Column('transactiontypedesc', title='Trans Type Description'), Column('original_price', title='Unit Price'), Column('discount', title='Discount'), Column('unit_price', title='Actual Price'), Column('quantity', title='Quantity'), Column('gross', title='Total'), Column('adjusted_gross', title='Adjusted Total'), Column('split_rate', title='Split Rate'), Column('label_share_net_receipts', title='Label Share Net Receipts'), Column('publishing', title='Publishing'), Column( 'subaccount_label_share_net_receipts', title='Label Share Net Receipts'), Column('mech_administrative_fee', title='Mech. Administrative Fee'), Column('preferred_currency', title='Preferred Currency'), Column('statement_detail_id', title='statement_detail_id'), Column('isdistributor', title='isdistributor'), Column('user_id_type', title='user_id_type') ] physical_report_columns = collections.OrderedDict(physical_report_columns_list) columns_v2 = collections.OrderedDict(columns_v2_list) header_mapping = { 2: columns_v2, } DEFAULT_HEADER_MAP = columns_v2 DEFAULT_PHYSICAL_REPORT_SCHEMA = physical_report_columns PHYSICAL_REPORT_EXCLUDED_COLUMNS = [ 'manufacturer_upc', 'isrc', 'volume', 'track_name', 'track_number', 'ringtone_publishing', ] PHYSICAL_TRANSACTION_TYPES = ('PS', 'PH', 'OP', 'LP', 'MP', 'TP', 'RE', 'OR', 'LR', 'MR', 'TR') # noqa: E501 EXCLUDE_COLUMNS_BY_VERSION = {} # workflow expires after ## hours WORKFLOW_EXPIRATION_TIME = 48