def get_count_sheet_by_id(event, context): """ Get an count record by its id """ logger.debug('event: {}'.format(event)) params = get_path_parameters(event) try: entity_id = params['entity_id'] item = context.repo.get_count_by_id(context.supplier_id, entity_id) count_sheet_string = count_sheet.generate(item) return { 'statusCode': 200, 'body': count_sheet_string, 'isBase64Encoded': True } except NoSuchEntity as ex: return { 'statusCode': 404, 'body': json.dumps({ 'error': '{RESOURCE} Resource not found'.format(RESOURCE=str(ex)) }) }
def delete_by_id(event, context): """ Delete supplier by entity_id and version """ logger.debug('event: {}'.format(event)) params = get_path_parameters(event) try: entity_id = params['entity_id'] if context.supplier_id != entity_id: return { 'statusCode': 403, 'body': json.dumps({ 'error': 'Forbidden. x-supplier-id header must match entity_id' }) } context.repo.delete_supplier_by_id(entity_id) return {'statusCode': 204} except NoSuchEntity: return { 'statusCode': 404, 'body': json.dumps({'error': 'Resource not found'}) } except NotAnAdminUser: return { 'statusCode': 403, 'body': json.dumps({'error': "Forbidden. Admins only"}) }
def get_purchase_orders_by_ship_date(event, context): """ Get list of purchase orders by ship_date range """ logger.debug('event: {}'.format(event)) params = get_path_parameters(event) min_ship_date = params['min_ship_date'] max_ship_date = params.get('max_ship_date', None) if hasattr(context, 'supplier_id'): supplier_id = context.supplier_id distributors = [] else: supplier_id = None distributor_id = context.distributor_id try: repo = DynamoRepository( region_name=os.environ['REGION'], dynamodb_local_endpoint=os.environ['DYNAMO_ENDPOINT']) except KeyError: repo = DynamoRepository(region_name=os.environ['REGION'], ) supplier_distributors = repo.get_all_distributor_suppliers( distributor_id) distributors = [ item['supplier_distributor_id'] for item in supplier_distributors ] items = context.repo.get_purchase_orders_by_ship_date_range( min_ship_date, max_ship_date, supplier_id, distributors) return {'statusCode': 200, 'body': json.dumps(items)}
def get_by_id(event, context): """ Get a supplier by its id """ logger.debug('event: {}'.format(event)) params = get_path_parameters(event) try: entity_id = params['entity_id'] if context.supplier_id != entity_id: return { 'statusCode': 403, 'body': json.dumps({ 'error': 'Forbidden. x-supplier-id header must match entity_id' }) } item = context.repo.get_supplier_by_id(entity_id) return {'statusCode': 200, 'body': json.dumps(item)} except NoSuchEntity: return { 'statusCode': 404, 'body': json.dumps({'error': 'Resource not found'}) }
def get_by_id(event, context): """ Get an adjustment record by its id """ logger.debug('event: {}'.format(event)) params = get_path_parameters(event) try: entity_id = params['entity_id'] item = context.repo.get_adjustment_record_by_id( context.supplier_id, entity_id) return {'statusCode': 200, 'body': json.dumps(item)} except NoSuchEntity as ex: return { 'statusCode': 404, 'body': json.dumps({ 'error': '{RESOURCE} Resource not found'.format(RESOURCE=str(ex)) }) }
def delete_user_in_supplier(event, context): """ Delete user in supplier by email_id """ logger.debug('event: {}'.format(event)) params = get_path_parameters(event) try: user_id = params['user_id'] context.repo.delete_user_in_supplier(context.supplier_id, user_id) return {'statusCode': 204} except NoSuchEntity as ex: return { 'statusCode': 404, 'body': json.dumps({'error': '{MSG}'.format(MSG=str(ex))}) } except NotAnAdminUser: return { 'statusCode': 403, 'body': json.dumps({'error': "Forbidden. Admins only"}) } except: logger.log_uncaught_exception()
def get_production_by_daterange(event, context): """ Get list of production entries by production_date range """ logger.debug('event: {}'.format(event)) params = get_path_parameters(event) min_production_date = params['min_production_date'] max_production_date = params.get('max_production_date', None) items = context.repo.get_production_by_production_date_range( context.supplier_id, min_production_date, max_production_date) return {'statusCode': 200, 'body': json.dumps(items)}
def delete_by_id(event, context): """ Delete production entry by entity_id and version """ logger.debug('event: {}'.format(event)) params = get_path_parameters(event) try: entity_id = params['entity_id'] context.repo.delete_production_by_id(context.supplier_id, entity_id) return {'statusCode': 204} except NoSuchEntity: return { 'statusCode': 404, 'body': json.dumps({'error': 'Resource not found'}) }
def get_by_id(event, context): """ Get an count record by its id """ logger.debug('event: {}'.format(event)) params = get_path_parameters(event) if hasattr(context, 'supplier_id'): supplier_id = context.supplier_id distributors = [] else: supplier_id = None distributor_id = context.distributor_id try: repo = DynamoRepository( region_name=os.environ['REGION'], dynamodb_local_endpoint=os.environ['DYNAMO_ENDPOINT']) except KeyError: repo = DynamoRepository(region_name=os.environ['REGION'], ) supplier_distributors = repo.get_all_distributor_suppliers( distributor_id) distributors = [ item['supplier_distributor_id'] for item in supplier_distributors ] try: entity_id = params['entity_id'] item = context.repo.get_purchase_order_by_id(entity_id, supplier_id, distributors) return {'statusCode': 200, 'body': json.dumps(item)} except NoSuchEntity as ex: return { 'statusCode': 404, 'body': json.dumps({ 'error': '{RESOURCE} Resource not found'.format(RESOURCE=str(ex)) }) }
def get_by_id(event, context): """ Get a container by its id """ logger.debug('event: {}'.format(event)) params = get_path_parameters(event) try: entity_id = params['entity_id'] item = context.repo.get_container_by_id(context.supplier_id, entity_id) return {'statusCode': 200, 'body': json.dumps(item)} except NoSuchEntity: return { 'statusCode': 404, 'body': json.dumps({'error': 'Resource not found'}) }
def delete_by_id(event, context): """ Delete distributor_supplier by entity_id and version """ logger.debug('event: {}'.format(event)) params = get_path_parameters(event) try: entity_id = params['entity_id'] context.repo.delete_distributor_supplier_by_id(context.distributor_id, entity_id) return {'statusCode': 204} except NoSuchEntity: return { 'statusCode': 404, 'body': json.dumps({'error': 'Resource not found'}) } except: logger.log_uncaught_exception()
def get_details_by_date_range(event, context): """ Get list of counts by count_date range """ logger.debug('event: {}'.format(event)) params = get_path_parameters(event) start_date = params['start_date'] end_date = params.get('end_date', None) try: items = context.repo.get_details_by_date_range(context.supplier_id, start_date, end_date) return {'statusCode': 200, 'body': json.dumps(items)} except AuroraSqlExecuteFailed: return { 'statusCode': 500, 'body': json.dumps({'error': 'Internal Error. SQL Execution failed'}) }
def delete_by_id(event, context): """ Delete count record by entity_id and version """ logger.debug('event: {}'.format(event)) params = get_path_parameters(event) try: entity_id = params['entity_id'] context.repo.delete_count_by_id(context.supplier_id, entity_id) return {'statusCode': 204} except NoSuchEntity as ex: return { 'statusCode': 404, 'body': json.dumps({ 'error': '{RESOURCE} Resource not found'.format(RESOURCE=str(ex)) }) }