def exportData(): type = request.form.get('type') name = request.form.get('name') user = request.form.get('user') try: repo_id = int(request.form.get('repo')) except TypeError: repo_id = None try: schema_id = int(request.form.get('schema')) except TypeError: schema_id = None try: record_ids = json.loads(request.form.get('records')) except TypeError: record_ids = None print repo_id, schema_id try: return makeResponse( payload=ExportManager.export(name, user, type, repo_id, schema_id, record_ids), headers={"Content-disposition": "attachment; filename=tmp.json"}) except Exception as e: print "endpoint", e.message return makeResponse(error=e)
def getRepoForPortal(repo_uuid): try: return makeResponse(payload=RepoManager.getRepoForPortal(repo_uuid)) except FindError as e: return makeResponse(error=e) except DbError as e: return makeResponse(error=e)
def listRepoFollowers(repo_id): try: return makeResponse(payload=RepoManager.getFollowers(int(repo_id))) except FindError as e: return makeResponse(error=e) except DbError as e: return makeResponse(error=e)
def importEventsForRepo(repo_id): try: return makeResponse(payload=UploadManager.getImportEventsForRepo(repo_id), message="") except Exception as e: return makeResponse(error=e)
def refresh(): current_user = get_jwt_identity() try: return makeResponse(payload={'access_token': create_access_token(identity=current_user)}) except Exception as e: return makeResponse(error=e)
def getRepoOwner(repo_id): try: owner = RepoManager.getOwner(int(repo_id)) return makeResponse(payload=owner) except FindError as e: return makeResponse(error=e) except DbError as e: return makeResponse(error=e)
def removeRepoFollower(repo_id, person_id): try: RepoManager.removeFollower(int(repo_id), int(person_id)) return makeResponse(message="Follower removed") except FindError as e: return makeResponse(error=e) except DbError as e: return makeResponse(error=e)
def deleteRepoOwner(repo_id, person_id): try: rel_deleted = RepoManager.deleteOwner(int(repo_id), int(person_id)) return makeResponse(payload={}, message="Deleted owner") except FindError as e: return makeResponse(error=e) except DbError as e: return makeResponse(error=e)
def addRepoFollower(repo_id, person_id): try: RepoManager.addFollower(int(repo_id), int(person_id)) return makeResponse(message="Collaborator added") except FindError as e: return makeResponse(error=e) except DbError as e: return makeResponse(error=e)
def deletePerson(person_id): try: PeopleManager.deletePerson(person_id) return makeResponse(message="Deleted person", payload={}) except FindError as e: return makeResponse(error=e) except DbError as e: return makeResponse(error=e)
def getRepoInfo(repo_id): try: repo = RepoManager.getInfo(int(repo_id)) return makeResponse(payload=repo) except FindError as e: return makeResponse(error=e) except DbError as e: return makeResponse(error=e)
def login(): username = request.form.get('username') password = request.form.get('password') try: return makeResponse(message="Login successful", payload=AuthManager.login(username, password)) except AuthError as e: return makeResponse(error=e)
def deleteType(repo_id, type_id): current_user = get_jwt_identity() if PeopleManager.checkRepoPermissions(current_user, repo_id) == False: return makeResponse(status=401, message="You do not have permissions to access this repository!") try: return makeResponse(payload=SchemaManager.deleteType(repo_id, type_id), message="Deleted type") except Exception as e: return makeResponse(error=e)
def getRepoDataCounts(): repo_id = int(request.form.get('repo_id')) try: return makeResponse(payload=RepoManager.getDataCounts(repo_id)) except FindError as e: return makeResponse(error=e) except DbError as e: return makeResponse(error=e)
def listRepoUsers(): repo_id = int(request.form.get('repo_id')) try: return makeResponse(payload=RepoManager.getUsers(repo_id)) except FindError as e: return makeResponse(error=e) except DbError as e: return makeResponse(error=e)
def deleteRepo(): repo_id = int(request.form.get('repo_id')) try: RepoManager.delete(repo_id) return makeResponse(payload={"repo_id": repo_id}, message="Repository deleted") except FindError as e: return makeResponse(error=e) except DbError as e: return makeResponse(error=e)
def sendPasswordReset(email_address): try: if AuthManager.sendPasswordReset(email_address): msg = "Password reset" else: msg = "Password not changed" return makeResponse(message=msg, payload={}) except AuthError as e: return makeResponse(error=e)
def getPersonRepos(): identity = request.form.get('person_id') if identity is None: current_token = get_raw_jwt() identity = current_token['identity'] try: return makeResponse(payload=PeopleManager.getReposForPerson(identity)) except FindError as e: return makeResponse(error=e)
def getType(repo_id, schema_id): current_user = get_jwt_identity() if PeopleManager.checkRepoPermissions(current_user, repo_id) == False: return makeResponse( status=401, message="You do not have permissions to access this repository!") try: return makeResponse(payload=SchemaManager.getType(repo_id, schema_id)) except Exception as e: return makeResponse(error=e)
def logout(): try: current_token = get_raw_jwt() jti = current_token['jti'] revoke_token(jti) return makeResponse(payload={}, message="Logged out") except KeyError as e: return makeResponse(error=e) except Exception as e: return makeResponse(error=e)
def removeRepoCollab(): repo_id = request.form.get('repo_id') person_id = request.form.get('person_id') try: RepoManager.removeCollaborator(int(repo_id), int(person_id)) return makeResponse(message="Collaborator removed") except FindError as e: return makeResponse(error=e) except DbError as e: return makeResponse(error=e)
def addType(repo_id): name = request.form.get('name') code = request.form.get('code') description = request.form.get('description') current_user = get_jwt_identity() if PeopleManager.checkRepoPermissions(current_user, repo_id) == False: return makeResponse(status=401, message="You do not have permissions to access this repository!") try: return makeResponse(message="Added type", payload=SchemaManager.addType(repo_id, name, code, description, extractRepeatingParameterBlocksFromRequest(request, 'fields'))) except Exception as e: return makeResponse(error=e)
def addList(repo_id): name = request.form.get('name') code = request.form.get('code') description = request.form.get('description') merge_setting = request.form.get('merge_allowed') items = extractRepeatingParameterBlocksFromRequest(request, 'items') try: return makeResponse(payload=ListManager.addList(repo_id, name, code, merge_setting, description, items)) except Exception as e: return makeResponse(error=e)
def addList(repo_id): name = request.form.get('name') code = request.form.get('code') description = request.form.get('description') merge_setting = request.form.get('merge_allowed') items = extractRepeatingParameterBlocksFromRequest(request, 'items') try: return makeResponse(payload=ListManager.addList( repo_id, name, code, merge_setting, description, items)) except Exception as e: return makeResponse(error=e)
def addData(repo_id, typecode): data = request.form.get('data') current_user = get_jwt_identity() if PeopleManager.checkRepoPermissions(current_user, repo_id) == False: return makeResponse(status=401, message="You do not have permissions to access this repository!") try: if SchemaManager.addDataToRepo(repo_id, typecode, json.loads(data)): return makeResponse(payload={"msg": "Added data to repository"}) else: return makeResponse(payload={"msg": "No data to add"}) except Exception as e: return makeResponse(error=e)
def paging(): exp = request.args.get('q') node = request.args.get('n') try: start = int(request.args.get('s')) end = int(request.args.get('e')) except ValueError as e: return makeResponse(error=e) try: return makeResponse(payload=SearchManager.quick(exp, node, start, end)) except SearchError as e: return makeResponse(error=e)
def addRepoCollab(): repo_id = int(request.form.get('repo_id')) person_id = int(request.form.get('person_id')) access = request.form.get('access') try: RepoManager.addCollaborator(repo_id, person_id, access) return makeResponse(message="Collaborator added") except FindError as e: return makeResponse(error=e) except DbError as e: return makeResponse(error=e)
def getDataForType(repo_id, type, start, limit): # TODO: check that user has access to this data try: start = int(start) limit = int(limit) except: start = 0 limit = 1000 try: return makeResponse(payload=DataManager.getDataForType(repo_id, type, start, limit)) except SaveError as e: return makeResponse(error=e)
def editList(repo_id, list_id): name = request.form.get('name') code = request.form.get('code') description = request.form.get('description') allow_merge = request.form.get('merge_allowed') items = extractRepeatingParameterBlocksFromRequest(request, 'items') delete_items = extractRepeatingParameterFromRequest(request, 'itemsToDelete') try: return makeResponse(payload=ListManager.editList(repo_id, list_id, name, code, description, items, delete_items, allow_merge)) except Exception as e: return makeResponse(error=e)
def addField(repo_id, typecode): name = request.form.get('name') code = request.form.get('code') fieldtype = request.form.get('type') description = request.form.get('description') current_user = get_jwt_identity() if PeopleManager.checkRepoPermissions(current_user, repo_id) == False: return makeResponse(status=401, message="You do not have permissions to access this repository!") try: return makeResponse(payload=SchemaManager.addField(repo_id, typecode, name, code, fieldtype, description), message="Added field") except Exception as e: return makeResponse(error=e)
def getDataForType(repo_id, type, start, limit): # TODO: check that user has access to this data try: start = int(start) limit = int(limit) except: start = 0 limit = 1000 try: return makeResponse( payload=DataManager.getDataForType(repo_id, type, start, limit)) except SaveError as e: return makeResponse(error=e)
def editRepo(repo_id): url = request.form.get('url') name = request.form.get('name') readme = request.form.get('readme') license = request.form.get('license') published = request.form.get('published') featured = request.form.get('featured') try: return makeResponse(payload=RepoManager.edit(repo_id, name, url, readme, license, published, featured), message="Edited repository") except FindError as e: return makeResponse(error=e) except ValidationError as e: return makeResponse(error=e)
def addData(repo_id, typecode): data = request.form.get('data') current_user = get_jwt_identity() if PeopleManager.checkRepoPermissions(current_user, repo_id) == False: return makeResponse( status=401, message="You do not have permissions to access this repository!") try: if SchemaManager.addDataToRepo(repo_id, typecode, json.loads(data)): return makeResponse(payload={"msg": "Added data to repository"}) else: return makeResponse(payload={"msg": "No data to add"}) except Exception as e: return makeResponse(error=e)
def setPassword(person_id): #TODO: user may only set their own password by id; non-auth user can reset password with valid key password = request.form.get('password') try: if AuthManager.setPassword(person_id, password): msg = "Password changed" else: msg = "Password not changed" return makeResponse(message=msg, payload={}) except FindError as e: return makeResponse(error=e) except AuthError as e: return makeResponse(error=e)
def editList(repo_id, list_id): name = request.form.get('name') code = request.form.get('code') description = request.form.get('description') allow_merge = request.form.get('merge_allowed') items = extractRepeatingParameterBlocksFromRequest(request, 'items') delete_items = extractRepeatingParameterFromRequest( request, 'itemsToDelete') try: return makeResponse(payload=ListManager.editList( repo_id, list_id, name, code, description, items, delete_items, allow_merge)) except Exception as e: return makeResponse(error=e)
def setRepoOwner(repo_id): # Get person by auth token current_token = get_raw_jwt() jti = current_token['jti'] # email address identity = current_token['identity'] ident_str = "p.email = {identity}" try: RepoManager.setOwner(int(repo_id), identity, ident_str) return makeResponse(payload={}, message="Set repository owner") except FindError as e: return makeResponse(error=e) except DbError as e: return makeResponse(error=e)
def addField(repo_id, typecode): name = request.form.get('name') code = request.form.get('code') fieldtype = request.form.get('type') description = request.form.get('description') current_user = get_jwt_identity() if PeopleManager.checkRepoPermissions(current_user, repo_id) == False: return makeResponse( status=401, message="You do not have permissions to access this repository!") try: return makeResponse(payload=SchemaManager.addField( repo_id, typecode, name, code, fieldtype, description), message="Added field") except Exception as e: return makeResponse(error=e)
def addType(repo_id): name = request.form.get('name') code = request.form.get('code') description = request.form.get('description') current_user = get_jwt_identity() if PeopleManager.checkRepoPermissions(current_user, repo_id) == False: return makeResponse( status=401, message="You do not have permissions to access this repository!") try: return makeResponse(message="Added type", payload=SchemaManager.addType( repo_id, name, code, description, extractRepeatingParameterBlocksFromRequest( request, 'fields'))) except Exception as e: return makeResponse(error=e)
def importData(): repo_id = int(request.form.get('repo_id')) filename = request.form.get('filename') original_filename = request.form.get('original_filename') data_mapping = request.form.get('data_mapping').split("|") field_names = request.form.get('field_names').split("|") type = request.form.get('type') ignore_first = request.form.get('ignore_first') schema_name = request.form.get('schema_name') data_types = request.form.get('column_types').split("|") field_descriptions = request.form.get('field_descriptions').split("|") search_display_fields = request.form.get('field_search_display').split("|") allow_list_merge = request.form.get('allow_list_merge').split("|") try: return makeResponse(payload=UploadManager.importData(repo_id, type, filename, original_filename, data_mapping, ignore_first, field_names, schema_name, data_types, field_descriptions, search_display_fields, allow_list_merge), message="File imported") except UploadError as e: return makeResponse(error=e)