def Private(dataset_id): try: client = Socrata(cfg["web"], cfg["token"], username=cfg["email"], password=cfg["password"]) client.set_permission(dataset_id, "private") info = "OK" except: info = "ERROR" return info
def CreateETL(view_data, title, description, category, tags): #preparing data cols = list(view_data) columns = [{ "fieldName": cols[0].lower(), "name": cols[0], "dataTypeName": "text" }] for i in range(1, len(cols)): x = { "fieldName": cols[i].lower(), "name": cols[i], "dataTypeName": "text" } columns.append(x) tags = tags.split(",") #Uploadin data try: client = Socrata(cfg["web"], cfg["token"], username=cfg["email"], password=cfg["password"]) print(tags) print(category) print(description) print(columns) print(cols) NewDataSet = client.create(title, description=description, columns=columns, tags=tags, category=category) client.publish(NewDataSet.get('id')) client.set_permission(NewDataSet.get('id'), "private") # Convertion to JSON datajson = view_data.to_json(None, orient='records') # JSON to list datajson = json.loads(datajson) client.replace(NewDataSet.get('id'), datajson) print('Socrata done') error = 'OK' dataset_id = NewDataSet.get('id') client.close() except BaseException as e: #if there is an error, reload login with error message error = str(e) print('Error description:') print(error) dataset_id = 'NoData' return error, dataset_id
def CreateMetadata(filename, sheetname, FirstCol, LastCol, tags, title): #Create Socrata client client = Socrata(cfg["web"], cfg["token"], username=cfg["email"], password=cfg["password"]) #preparing Excel file parse_cols = '%s:%s' % (FirstCol, LastCol) #getting path of the excel file path = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'documents/%s' % filename.replace(" ", "_")) #Reading excel with Panda ExcelFile = pd.read_excel(path, sheetname=sheetname, parse_cols=parse_cols, index=False) #Defining columns automatically cols = list(ExcelFile) columns = [{ "fieldName": cols[0].lower(), "name": cols[0], "dataTypeName": "text" }] for i in range(1, len(cols)): x = { "fieldName": cols[i].lower(), "name": cols[i], "dataTypeName": "text" } columns.append(x) #create dataset NewDataSet = client.create( title, description="Lista de antenas Wi-fi en el atlántico", columns=columns, tags=tags, category="Ciencia, Tecnología e Innovación") ## Publish dataset NewDataSet.get('id') get the dataset ID client.publish(NewDataSet.get('id')) client.set_permission(NewDataSet.get('id'), "public") # Reemplazar datos # Conversion a JSON datajson = ExcelFile.to_json(None, orient='records') # Conversion a list datajson = json.loads(datajson) client.replace(NewDataSet.get('id'), datajson) print('Socrata done') client.close()
def test_set_permission(): mock_adapter = {} mock_adapter["prefix"] = PREFIX adapter = requests_mock.Adapter() mock_adapter["adapter"] = adapter client = Socrata(DOMAIN, APPTOKEN, username=USERNAME, password=PASSWORD, session_adapter=mock_adapter) response_data = "empty.txt" setup_old_api_mock(adapter, "PUT", response_data, 200) # Test response response = client.set_permission(DATASET_IDENTIFIER, "public") assert response.status_code == 200 # Test request request = adapter.request_history[0] query_string = request.url.split("?")[-1] params = query_string.split("&") assert len(params) == 2 assert "method=setPermission" in params assert "value=public.read" in params client.close()
def test_set_permission(): mock_adapter = {} mock_adapter["prefix"] = PREFIX adapter = requests_mock.Adapter() mock_adapter["adapter"] = adapter client = Socrata(DOMAIN, APPTOKEN, username=USERNAME, password=PASSWORD, session_adapter=mock_adapter) response_data = "empty.txt" resource = "/api/views" + PATH set_up_mock(adapter, "PUT", response_data, 200, resource=resource) # Test response response = client.set_permission(PATH, "public") assert response.status_code == 200 # Test request request = adapter.request_history[0] qs = request.url.split("?")[-1] assert qs == "method=setPermission&value=public.read" client.close()