Beispiel #1
0
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))
            })
        }
Beispiel #2
0
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"})
        }
Beispiel #3
0
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)}
Beispiel #4
0
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'})
        }
Beispiel #5
0
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()
Beispiel #7
0
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)}
Beispiel #8
0
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'})
        }
Beispiel #9
0
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))
            })
        }
Beispiel #10
0
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'})
        }
Beispiel #11
0
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()
Beispiel #12
0
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'})
        }
Beispiel #13
0
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))
            })
        }