def create_canned_project() -> Tuple[Project, User]: """ Generates a canned project in the DB to help with integration tests """ test_aoi_geojson = geojson.loads( json.dumps(get_canned_json('test_aoi.json'))) task_feature = geojson.loads( json.dumps(get_canned_json('splittable_task.json'))) test_user = create_canned_user() test_project_dto = DraftProjectDTO() test_project_dto.project_name = 'Test' test_project_dto.user_id = test_user.id test_project_dto.area_of_interest = test_aoi_geojson test_project = Project() test_project.create_draft_project(test_project_dto) test_project.set_project_aoi(test_project_dto) test_project.total_tasks = 1 # Setup test task test_task = Task.from_geojson_feature(1, task_feature) test_task.task_status = TaskStatus.MAPPED.value test_task.mapped_by = test_user.id test_project.tasks.append(test_task) test_project.create() return test_project, test_user
def test_feature_collection_multi_polygon_with_zcoord_dissolve(self): # arrange project_json = get_canned_json('canned_kml_project.json') project_dto = DraftProjectDTO(project_json) expected = geojson.loads(json.dumps(get_canned_json('2d_multi_polygon.json'))) aoi_geojson = geojson.loads(json.dumps(project_dto.area_of_interest)) # act result = GridService.merge_to_multi_polygon(aoi_geojson, dissolve=True) # assert self.assertEquals(str(expected), str(result))
def put(self): """ Creates a tasking-manager project --- tags: - project-admin produces: - application/json parameters: - in: header name: Authorization description: Base64 encoded session token required: true type: string default: Token sessionTokenHere== - in: body name: body required: true description: JSON object for creating draft project schema: properties: projectName: type: string default: HOT Project areaOfInterest: schema: properties: type: type: string default: FeatureCollection features: type: array items: schema: $ref: "#/definitions/GeoJsonFeature" tasks: schema: properties: type: type: string default: FeatureCollection features: type: array items: schema: $ref: "#/definitions/GeoJsonFeature" arbitraryTasks: type: boolean default: false responses: 201: description: Draft project created successfully 400: description: Client Error - Invalid Request 401: description: Unauthorized - Invalid credentials 500: description: Internal Server Error """ try: draft_project_dto = DraftProjectDTO(request.get_json()) draft_project_dto.user_id = tm.authenticated_user_id draft_project_dto.validate() except DataError as e: current_app.logger.error(f'error validating request: {str(e)}') return str(e), 400 try: draft_project_id = ProjectAdminService.create_draft_project( draft_project_dto) return {"projectId": draft_project_id}, 201 except (InvalidGeoJson, InvalidData) as e: return {"error": f'{str(e)}'}, 400 except Exception as e: error_msg = f'Project PUT - unhandled error: {str(e)}' current_app.logger.critical(error_msg) return {"error": error_msg}, 500