"""Interface to the ows-project-manager microservice. The model is responsible to make a call to a ows-project-manager microservice. It makes a request to ows-project-manager endpoint ('/project/' ,methods=['GET']) and returns a result of the request. """ from oto import response from owsrequest import request as requests from sales_goals.constants import ows_services def check_project_ownership(project_id, account_type=None, account_id=None): """Check project ownership by its id. Fetch project information by performing a HEAD call to ows-project-manager Args: project_id (int): uid of a project. account_type (str): Grass account type. account_id (str): Grass account id. Returns: response.Response: the result of the HEAD call with a project id. """ if not account_type and not account_id: return response.Response(status=200) request_url = ( '/ownership/' '{ACCOUNT_TYPE}/' '{ACCOUNT_ID}/' 'project/' '{PROJECT_ID}' ).format( ACCOUNT_TYPE=account_type, ACCOUNT_ID=account_id, PROJECT_ID=project_id) ownership_response = requests.head( ows_services.OWS_PROJECT_SERVICE_NAME, request_url) return response.Response(status=ownership_response.status_code) def get_project_marketing_priorities(project_id): """Get the project marketing priority.""" request_url = ( '/project/{}/mkt_priority' ).format(project_id) project_response = requests.get( ows_services.OWS_PROJECT_SERVICE_NAME, request_url, ) if project_response.status_code == 200: result = project_response.json()['mkt_priority'] return response.Response( status=project_response.status_code, message=result) return response.Response(status=project_response.status_code) def dataload_project_marketing_priorities(project_ids): """Dataload project marketing priorities.""" project_response = requests.post( ows_services.OWS_PROJECT_SERVICE_NAME, '/project/mkt_priority/dataloader', json=project_ids, ) if project_response.status_code == 200: result = project_response.json()['mkt_priority'] return response.Response( status=project_response.status_code, message=result) return response.Response(status=project_response.status_code) def set_project_marketing_priority(project_id, country_id, priority): """Set project marketing priority. Save project marketing priority by performing a POST call to ows-project-manager Args: project_id (int): id of a project. country_id (int): id of a country. priority (str): marketing priority. Returns: response.Response: the result of the HEAD call with a project id. """ """Set the marketing priority for project.""" request_url = ( '/project/{}/mkt_priority' ).format(project_id) data = {'country_id': country_id, 'priority': priority} project_response = requests.post( ows_services.OWS_PROJECT_SERVICE_NAME, request_url, json=data, ) return response.Response(status=project_response.status_code) def delete_project_marketing_priority(project_id, projection_id): """Delete the project marketing priority.""" request_url = ( '/project/{}/mkt_priority/{}' ).format(project_id, projection_id) project_response = requests.delete( ows_services.OWS_PROJECT_SERVICE_NAME, request_url, ) return response.Response(status=project_response.status_code) def get_products_for_project(project_id): """Get the project marketing priority.""" request_url = ( '/project/{}/products' ).format(project_id) project_response = requests.get( ows_services.OWS_PROJECT_SERVICE_NAME, request_url, ) if project_response.status_code == 200: return project_response.json() return response.Response(status=project_response.status_code) def delete_project_marketing_priority_in_bulk(project_id): """Delete the project marketing priority in bulk.""" request_url = ( '/project/{}/mkt_priority' ).format(project_id) project_response = requests.delete( ows_services.OWS_PROJECT_SERVICE_NAME, request_url, ) return response.Response(status=project_response.status_code)