def post(self): # Check if any projects exist existingProjects, error = Project.queryAll() if error: return res.internalServiceError(error) # get existing projects from 42 API data = Api42.allProjects() if not data: return res.internalServiceError("unable to query the 42 API") # only add new projects that are not in the projects table newProjects = [] existingProjects = [] for d in data: # check if project exists projectCheck = Project.query.filter_by( id_project42=d['id_project42']).first() # only add the new projects that don't exist in the database if not projectCheck: newProject, err = project_schema.load(d) if err: db.session.rollback() return res.internalServiceError('bad data') db.session.add(newProject) newProjects.append(project_schema.dump(newProject).data) else: projectCheck.name = d['name'] projectCheck.slug = d['slug'] projectCheck.tier = d['tier'] existingProjects.append(project_schema.dump(projectCheck).data) print("COMMITTING NEW PROJECTS") db.session.commit() # change return message if projects were updated retMessage = 'created new project' if newProjects else 'no new projects needed to be updated' retData = { 'newProjects': newProjects, 'existingProjects': existingProjects } return res.postSuccess(retMessage, retData) # LOAD takes a python DICTIONARY of data and will return a new CLASS object (the 'record') # DUMP takes a CLASS object (the 'record') and returns a tuple of data and something else
def get(self): data, error = Project.queryAll() if error: return res.internalServiceError(error) return res.getSuccess('found projects', data)