"""Interface to ows-conflict-manager microservice.""" from oto import response from owsrequest import request from masters_registry import utils from masters_registry.constant import api_const from masters_registry.constant import error from masters_registry.constant import field_const def bulk_update_conflict_status( grouped_conflicts_ids, status, note, account_id, account_type, orchard_user_id, correlation_id=None): """Bulk update conflict status in ows-conflict-manager. Use POST /conflicts/status/bulk endpoint Args: grouped_conflicts_ids (list): a list of grouped conflict ids strings A list of strings in the following format: 'tuid|conflict_date|conflicting_owner|action' status (str): conflict status possible statuses: 'CONTACTED_LABEL_MANAGER', 'ORCHARD_ASSERTED', 'ORCHARD_RELEASED', 'CONFLICTING_PARTY_ASSERTED', 'CONFLICTING_PARTY_RELEASED', note (str): optional note account_id (str): workstation account ID account_type (str): vendor or subaccount orchard_user_id (str): Orchard user_id for checking feature flags correlation_id (str): optional correlationID for logs Returns: response.Response: response from ows-conflict-manager """ payload = { field_const.GROUPED_CONFLICTS_IDS: grouped_conflicts_ids, field_const.STATUS: status, field_const.NOTE: note, field_const.ACCOUNT_ID: account_id, field_const.ACCOUNT_TYPE: account_type } account = { field_const.ACCOUNT_TYPE: account_type, field_const.ACCOUNT_ID: account_id } headers = { field_const.CONTENT_TYPE: field_const.APPLICATION_JSON, field_const.ORCHARD_USER_ID: orchard_user_id } conflicts_response = request.post( api_const.OWS_CONFLICT_MANAGER, '/conflicts/status/bulk', json=payload, correlation_id=correlation_id, params=account, headers=headers) message = utils.get_response_json(conflicts_response) if conflicts_response.status_code == 200: return response.Response(message=message) return response.create_error_response( code=error.OWS_CONFLICT_MANAGER_ERROR, message=message, status=conflicts_response.status_code)