def process_dos_results(client, content_loader, user):
    content_loader.load_manifest(FRAMEWORK_SLUG, 'declaration', 'declaration')
    declaration_content = content_loader.get_manifest(FRAMEWORK_SLUG, 'declaration')

    dos_registered_suppliers = client\
        .get_interested_suppliers(FRAMEWORK_SLUG)\
        .get('interestedSuppliers', None)

    for supplier_id in dos_registered_suppliers:
        print("SUPPLIER: {}".format(supplier_id))
        declaration = client.get_supplier_declaration(supplier_id, FRAMEWORK_SLUG)['declaration']

        declaration_result = check_declaration_answers(declaration_content, declaration) if declaration else FAIL
        supplier_has_submitted_services = process_submitted_drafts(client, supplier_id, user)

        if declaration_result == PASS and supplier_has_submitted_services:
            print("  PASSED")
            res = set_framework_result(client, FRAMEWORK_SLUG, supplier_id, True, user)
            print(res)

        elif declaration_result == DISCRETIONARY and supplier_has_submitted_services:
            print("  DISCRETIONARY")
            # No-op here: leave result as NULL in the database
        else:
            print("  FAILED")
            res = set_framework_result(client, FRAMEWORK_SLUG, supplier_id, False, user)
            print(res)
def process_g8_results(client, user):

    g8_registered_suppliers = client.get_interested_suppliers(FRAMEWORK_SLUG).get('interestedSuppliers', None)

    for supplier_id in g8_registered_suppliers:
        print("SUPPLIER: {}".format(supplier_id))
        declaration = client.get_supplier_declaration(supplier_id, FRAMEWORK_SLUG)['declaration']
        declaration_result = check_declaration_answers(declaration) if declaration else FAIL
        supplier_has_submitted_services = has_supplier_submitted_services(client, FRAMEWORK_SLUG, supplier_id)
        if declaration_result == PASS and supplier_has_submitted_services:
            print("  PASSED")
            res = set_framework_result(client, FRAMEWORK_SLUG, supplier_id, True, user)
            print(res)

        elif declaration_result == DISCRETIONARY and supplier_has_submitted_services:
            print("  DISCRETIONARY")
            # No-op here: leave result as NULL in the database
        else:
            print("  FAILED")
            res = set_framework_result(client, FRAMEWORK_SLUG, supplier_id, False, user)
            print(res)
sys.path.insert(0, '.')

import getpass

from docopt import docopt

from dmapiclient import DataAPIClient

from dmscripts.env import get_api_endpoint_from_stage
from dmscripts.logging import configure_logger
from dmscripts.framework_utils import set_framework_result


logger = configure_logger()

if __name__ == '__main__':
    arguments = docopt(__doc__)

    framework_slug = arguments['<framework>']
    data_api_url = get_api_endpoint_from_stage(arguments['<stage>'], 'api')
    client = DataAPIClient(data_api_url, arguments['--api-token'])
    user = getpass.getuser()
    result = True if arguments['--pass'] else False

    with open(arguments['<ids_file>'], 'r') as f:
        supplier_ids = filter(None, [l.strip() for l in f.readlines()])

    for supplier_id in supplier_ids:
        logger.info(set_framework_result(client, framework_slug, supplier_id, result, user))
    logger.info("DONE")
def test_set_framework_result_returns_error_message_if_update_fails(mock_data_client):
    mock_data_client.set_framework_result.side_effect = HTTPError()
    assert set_framework_result(mock_data_client, 'g-whizz-6', 123456, True, 'user') == \
        '  Error inserting result for 123456 (True): Request failed (status: 503)'
def test_set_framework_result_calls_with_correct_arguments(mock_data_client):
    assert set_framework_result(mock_data_client, 'g-whizz-6', 123456, True, 'user') == \
        '  Result set OK: 123456 - PASS'
    mock_data_client.set_framework_result.assert_called_with(123456, 'g-whizz-6', True, 'user')