''' Tutorial link: https://realpython.com/flask-connexion-rest-api-part-2/ https://github.com/realpython/materials/blob/master/flask-connexion-rest-part-2/version_1/people.py Sqlalchemy version: 1.2.15 Python version: 3.7 ''' import os # import sys, inspect # currentdir = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe()))) # parentdir = os.path.dirname(currentdir) # sys.path.insert(0, parentdir) # import requests from sqlalchemy.orm import session from gschliefgraben_glasfaser.models import ObservationSchema, Person, PersonSchema, Observation from gschliefgraben_glasfaser.my_api import MyApi from db.pg_models import create_pg_session #from models import Person, PersonSchema # response = requests.get('https://api.com/') # print(response) # shows the response's HTTP status code # print(response.json()) # shows the response's JSON response body, if it has one # print(response.content) # get the data content of the response def main(): ''' main method ''' db_user = os.environ.get("POSTGIS_DBUSER") print(db_user) pg_session: session = create_pg_session() # pg_person: Person = pg_session.query(Person).first() observation: Observation = pg_session.query(Observation).first() # print(pg_person) # serialize db data to json # person_schema = PersonSchema() # dump_data = person_schema.dump(pg_person) # print(dump_data) # serialize db data to json observation_schema = ObservationSchema() dump_data = observation_schema.dump(observation) print(dump_data) # # deserialize # load_data: Person = person_schema.load(dump_data) # print(load_data) # request ortmann api # token = 'eyJraWQiOiJlakFmX1MwMTBMU3doS0Zod05wZDQtQkZPYTM4cDRYRE1zU1hFa0lrRlhFIiwiYWxnIjoiUlMyNTYifQ.eyJ2ZXIiOjEsImp0aSI6IkFULkZRUHNCOWh5Snd6eEM5d3ZWelRvaTNpZVlMWlJiT3U4YzFCbWJWRGM1SFkiLCJpc3MiOiJodHRwczovL2Rldi01MjUwMDA2Lm9rdGEuY29tL29hdXRoMi9kZWZhdWx0IiwiYXVkIjoiYXBpOi8vZGVmYXVsdCIsImlhdCI6MTY0NTc4Mjg0NSwiZXhwIjoxNjQ1Nzg2NDQ1LCJjaWQiOiIwb2EyOWhzdGZ3RnFya1BrUDVkNyIsInNjcCI6WyJnc2NobGllZmdyYWJlbiJdLCJzdWIiOiIwb2EyOWhzdGZ3RnFya1BrUDVkNyJ9.c-pTs-3VJMnFO2SOqxOvsABAloprUmOjk6SO9J71NrgLj7claKZOMLZxRyUeSBLWCJFFNI3A6xMd4twEexjJdUR8UEM4U50srxr2p_enaMm1_jZTSt_76u6H05kwV-A2AOQPkx-Fxxaj_PDjT7w43Zlg6SUEoT11uGKR6KtxVYbclGtWgOR7wvH4NZav-P_EDjHwHxbk2kQSf7tBU1JbWl74Xt58gzv1t8VNtLYLICabRsuTNQUNiO7Y1rtUEav4ugf7WZMIY1cP_4rCupZrAFbxrnyprAuXA2x01Z9hbFmiaK0QDlrwHcCHL_1fKvj9uIbO5JeI1x81X6g7eAxQdA' # response = requests.get('https://api.dgnss-sensors.com/gschliefgraben?sensors=("inclino1_14")', # headers={ # 'Authorization': 'Bearer' + token, # 'cache-control': 'no-cache', # 'Content-Type': 'application/x-www-form-urlencoded', # 'accept': 'application/json' # }, # data='grant_type=client_credentials&scope=gschliefgraben') # print(response) token_api = os.environ.get("TOKEN_API") test_api = MyApi(token_api) data = test_api.getSensorData("inclino1_14") print(data) # create(dump_data) def create(person_json: PersonSchema): """ This function creates a new person in the people structure based on the passed-in person data :param person: person to create in people structure :return: 201 on success, 406 on person exists """ login = person_json.get('login') #lname = person.get('lname') db_session = create_pg_session() # existing_person = Person.query \ # .filter(Person.login == login) \ # .one_or_none() existing_person: bool = ( db_session.query(Person) .filter(Person.login == login) .one_or_none() ) # Can we insert this person? if existing_person is None: # Create a person instance using the schema and the passed in person schema = PersonSchema() # deserialize to object new_person: Person = schema.load(person_json) # Add the person to the database db_session.add(new_person) db_session.commit() # Serialize and return the newly created person in the response data = schema.dump(new_person) return data, 201 # Otherwise, nope, person exists already else: print(409, f'Person {login} exists already') if __name__ == "__main__": main()