def list_reader_load(json): next_page = json.get('next_page') if json.get('next_page') else 1 search_text = request.args.get('search_text') or '' article_fields = 'title|id|subtitle|short|image_file_id|subtitle|publishing_tm|read_count,company.name|logo_file_id|id,' \ 'division.name,portal.name|host|logo_file_id|id' favorite = request.args.get('favorite') == 'True' localtime = time.gmtime(time.time()) filter = and_(ArticlePortalDivision.portal_division_id == db(PortalDivision).filter( PortalDivision.portal_id ==db(UserPortalReader, user_id=g.user.id).subquery().c.portal_id).subquery().c.id, ArticlePortalDivision.status ==ArticlePortalDivision.STATUSES['PUBLISHED'], ArticlePortalDivision.publishing_tm < datetime.datetime(*localtime[:6])) if not favorite\ else (ArticlePortalDivision.id == db(ReaderArticlePortalDivision, user_id=g.user.id, favorite=True).subquery().c.article_portal_division_id) articles, pages, page = Search().search({'class': ArticlePortalDivision, 'filter': filter, 'tags': True, 'return_fields': article_fields}, page=1, items_per_page=5*next_page, search_text=search_text) list_articles = ArticlePortalDivision.get_list_reader_articles(articles) return { 'end': True if pages == 1 or pages == 0 else False, 'articles': list_articles, 'pages': pages, 'current_page': page, 'page_buttons': Config.PAGINATION_BUTTONS, # 'portals': portals, 'favorite': favorite }
def createUser(): connection = db.connect() cursor = connection.cursor() json = request.json username = json.get("username") classname = json.get("classname") password = json.get("password") if username is None or password is None: abort(406) cursor.execute( "SELECT * FROM allowedUsers JOIN classes ON allowedUsers.classId = classes.classId" + " WHERE allowedUsers.name = %s AND classes.name = %s LIMIT 1;", (username, classname)) out = cursor.fetchone() if (out is None): abort(403) id = out[0] cursor.execute("SELECT * FROM user WHERE name = %s LIMIT 1;", (username)) if (cursor.fetchone() is not None): abort(409) hash = hashCrypt(password) if (type(out[3]) != int): exit() cursor.execute( "INSERT INTO user(name, passwordHash, admin, classId)" + "VALUE(%s, %s, " + str(out[3]) + ", " + str(out[2]) + ");", (username, hash)) cursor.execute("DELETE FROM allowedUsers WHERE id = " + str(id) + ";") connection.commit() return {"info": "user successfully added"}
def login(): data = jsonify({'Authorized': completion}) resp = get_response(data) if request.method == 'POST': json = request.json username = json.get("email") password = json.get("password") global completion completion = auth.authenticate(username, password) if completion == False: data = jsonify({ 'Authorized': completion, "msg": "Bad username or password" }) return get_response(data), 401 data = jsonify({ 'Authorized': completion, 'access_token': create_access_token(identity=username), 'refresh_token': create_refresh_token(identity=username) }) return get_response(data), 200 return resp
def list_reader_load(json): next_page = json.get('next_page') if json.get('next_page') else 1 search_text = request.args.get('search_text') or '' article_fields = 'title|id|subtitle|short|image_file_id|subtitle|publishing_tm|read_count,company.name|logo_file_id|id,' \ 'division.name,portal.name|host|logo_file_id|id' favorite = request.args.get('favorite') == 'True' localtime = time.gmtime(time.time()) filter = and_(Publication.portal_division_id == db(PortalDivision).filter( PortalDivision.portal_id == db(UserPortalReader, user_id=g.user.id).subquery().c.portal_id).subquery().c.id, Publication.status == Publication.STATUSES['PUBLISHED'], Publication.publishing_tm < datetime.datetime(*localtime[:6])) if not favorite\ else (Publication.id == db(ReaderPublication, user_id=g.user.id, favorite=True).subquery().c.article_portal_division_id) articles, pages, page = Search().search({'class': Publication, 'filter': filter, 'tags': True, 'return_fields': article_fields}, page=1, items_per_page=5*next_page, search_text=search_text) list_articles = Publication.get_list_reader_articles(articles) return { 'end': True if pages == 1 or pages == 0 else False, 'articles': list_articles, 'pages': pages, 'current_page': page, 'page_buttons': Config.PAGINATION_BUTTONS, # 'portals': portals, 'favorite': favorite }
def register(): json=request.get_json() try: user = User(username=json.get('username'),password=json.get('password'),name=json.get('name')).save() return succ({'token':TokenRef.get_token(user)}) except mongoengine.errors.ValidationError as err: return erro('username or password is out of rules.') except mongoengine.errors.NotUniqueError as err: return erro('username exists.')
def list_reader_load(json): page = json.get('next_page') if json.get('next_page') else 1 favorite = request.args.get('favorite') == 'True' favorite = False localtime = time.gmtime(time.time()) per_page = 10 filter = and_(Publication.portal_division_id == db(PortalDivision).filter( PortalDivision.portal_id == db(UserPortalReader, user_id=g.user.id).subquery().c.portal_id).subquery().c.id, Publication.status == Publication.STATUSES['PUBLISHED'], Publication.publishing_tm < datetime.datetime(*localtime[:6])) if not favorite \ else (Publication.id == db(ReaderPublication, user_id=g.user.id, favorite=True).subquery().c.publication_id) publications = g.db.query(Publication).filter(filter).limit(per_page + 1).offset((page - 1) * per_page).all() articles = [p.create_article() for p in publications[0:per_page]] return { 'next_page': page + 1 if len(publications) > per_page else -1, 'articles': articles, 'favorite': favorite } search_text = request.args.get('search_text') or '' article_fields = 'title|id|subtitle|short|image_file_id|subtitle|publishing_tm|read_count,' \ 'company.name|id,company.logo.url' \ 'division.name,portal.name|host|id,portal.logo.url' favorite = request.args.get('favorite') == 'True' localtime = time.gmtime(time.time()) filter = and_(Publication.portal_division_id == db(PortalDivision).filter( PortalDivision.portal_id == db(UserPortalReader, user_id=g.user.id).subquery().c.portal_id).subquery().c.id, Publication.status == Publication.STATUSES['PUBLISHED'], Publication.publishing_tm < datetime.datetime(*localtime[:6])) if not favorite \ else (Publication.id == db(ReaderPublication, user_id=g.user.id, favorite=True).subquery().c.publication_id) # fix here! articles, pages, page = Search().search({'class': Publication, 'filter': filter, 'tags': True, 'return_fields': article_fields}, page=1, items_per_page=5 * next_page, search_text=search_text) # TODO: OZ by YG: fix here! list_articles = Publication.get_list_reader_articles(articles) return { 'end': True if pages == 1 or pages == 0 else False, 'articles': list_articles, 'pages': pages, 'current_page': page, 'page_buttons': Config.PAGINATION_BUTTONS, # 'portals': portals, 'favorite': favorite }
def add_delete_like(json): ReaderPublication.add_delete_liked_user_article( json.get('article')['id'], json.get('article')['liked']) return { 'liked': ReaderPublication.count_likes(g.user.id, json.get('article')['id']), 'list_liked_reader': ReaderPublication.get_list_reader_liked(json.get('article')['id']) }
def getCHIRPSImage(): values = {} try: json = request.get_json() if json: dateFrom = json.get('dateFrom', None) dateTo = json.get('dateTo', None) values = filteredImageInCHIRPSToMapId(dateFrom, dateTo) except GEEException as e: logger.error(e.message) values = {'errMsg': e.message} return jsonify(values), 200
def ImageCollectionAsset(): values = {} try: json = request.get_json() if json: collection = json.get('imageName', '') visParams = json.get('visParams', {}) values = getImageCollectionAsset(collection, visParams) except GEEException as e: logger.error(e.message) values = {'errMsg': e.message} return jsonify(values), 200
def firstImageByMosaicCollection(): """ .. :quickref: ImageCollection; Get the MapID of a EE ImageCollection. **Example request**: .. code-block:: javascript { collectionName: "XX", visParams: { min: 0.0, max: 0.0, bands: "XX,XX,XX", gamma: 0.0 }, dateFrom: "YYYY-MM-DD", dateTo: "YYYY-MM-DD" } **Example response**: .. code-block:: javascript { mapid: "XXX", token: "XXX" } :reqheader Accept: application/json :<json String collectionName: name of the image collection :<json Object visParams: visualization parameters :<json String dateFrom: start date :<json String dateTo: end date :resheader Content-Type: application/json """ values = {} try: json = request.get_json() if json: collectionName = json.get('collectionName', None) if collectionName: visParams = json.get('visParams', None) dateFrom = json.get('dateFrom', None) dateTo = json.get('dateTo', None) values = firstImageInMosaicToMapId(collectionName, visParams, dateFrom, dateTo) except GEEException as e: logger.error(e.message) values = { 'errMsg': e.message } return jsonify(values), 200
def ImageCollectionbyIndex(): values = {} try: json = request.get_json() if json: dateFrom = json.get('dateFrom', None) dateTo = json.get('dateTo', None) index = json.get('index', 'ndvi') values = filteredImageByIndexToMapId(dateFrom, dateTo, index) except GEEException as e: logger.error(e.message) values = {'errMsg': e.message} return jsonify(values), 200
def asterMosaic(): values = {} try: json = request.get_json() if json: visParams = json.get('visParams', None) dateFrom = json.get('dateFrom', None) dateTo = json.get('dateTo', None) values = getAsterMosaic(visParams, dateFrom, dateTo) except GEEException as e: logger.error(e.message) values = {'errMsg': e.message} return jsonify(values), 200
def ndviChange(): values = {} try: json = request.get_json() if json: visParams = json.get('visParams', None) yearFrom = json.get('yearFrom', None) yearTo = json.get('yearTo', None) values = getNdviChange(visParams, yearFrom, yearTo) except GEEException as e: logger.error(e.message) values = {'errMsg': e.message} return jsonify(values), 200
def main(): json = request.get_json() title = json['issue']['fields']['summary'] desc = json['issue']['fields']['description'] todoId = json['issue']['fields']['customfield_10025'] if desc == None: desc = '' print(todoId == None) event = json.get('webhookEvent', None) if event != None: if event.find('issue_created') != -1: # text = title + "\n" + desc text = title if (todoId == None): print('Creating Todoist Issue') unique = uuid.uuid4() temp = uuid.uuid4() item = api.sync(commands=[{ 'type': 'item_add', 'temp_id': str(temp), 'uuid': str(unique), 'args': { 'content': text } }]) todoId = str(item['TempIdMapping'][str(temp)]) jira.issue( json['issue']['key']).update(customfield_10025=todoId) elif event.find('issue_deleted') != -1: print('Deleting Todoist Issue') item = api.items.get_by_id(todoId) item.delete() trans = json.get('transition', None) if trans != None: if trans['to_status'] == 'Completed': print('Completing Todoist Item') item = api.items.get_by_id(todoId) item.complete() elif trans['to_status'] == 'Inbox': print('Reverting Todoist Item') item = api.items.get_by_id(todoId) item.uncomplete() api.commit() return ''
def image(): """ Return .. :quickref: Image; Get the MapID of a EE Image. **Example request**: .. code-block:: javascript { imageName: "XXX", visParams: { min: 0.0, max: 0.0, bands: "XX,XX,XX", gamma: 0.0, palette: "XX" } } **Example response**: .. code-block:: javascript { mapid: "XXX", token: "XXX" } :reqheader Accept: application/json :<json String imageName: name of the image :<json Object visParams: visualization parameters :resheader Content-Type: application/json """ values = {} try: json = request.get_json() if json: imageName = json.get('imageName', None) if imageName: visParams = json.get('visParams', None) values = imageToMapId(imageName, visParams) except GEEException as e: logger.error(e.message) values = { 'errMsg': e.message } return jsonify(values), 200
def extract(): if request.headers['Content-Type'] == 'application/json': json = request.json link = json.get("url") try: html = urllib.urlopen(link).read() except: return jsonify({ 'extractResponse': 'Invalid URL', 'statusCode': 400 }) soup = BeautifulSoup(html, "html.parser") for script in soup(["script", "style", '[document]', 'head', 'title']): script.extract() text = soup.get_text() lines = (line.strip() for line in text.splitlines()) chunks = (phrase.strip() for line in lines for phrase in line.split(" ")) text = '\n'.join(chunk for chunk in chunks if chunk) freq = wordListToFreqDict(text) return jsonify({'extractResponse': text, 'frequency': freq}) else: return jsonify({'extractResponse': 'Cannot Find JSON type'})
def put(self, measurementId): """ Initiates a new measurement. Accepts a json payload with the following attributes; * duration: in seconds * startTime OR delay: a date in YMD_HMS format or a delay in seconds * description: some free text information about the measurement :return: """ json = request.get_json() try: start = self._calculateStartTime(json) except ValueError: return 'invalid date format in request', 400 duration = json['duration'] if 'duration' in json else 10 if start is None: # should never happen but just in case return 'no start time', 400 else: scheduled, message = self._measurementController.schedule( measurementId, duration, start, description=json.get('description')) return message, 200 if scheduled else 400
def images_unlike(): app.logger.debug('Entered images_unlike. Payload: ' ) json = request.get_json() app.logger.debug("json:") app.logger.debug(json) # First validate all the payload & params if (json == None): return Response(status=400, response='invalid payload') image = json.get('image') if (image == None): return Response(status=400, response='invalid image id') user = request.get_json().get('user') if (user == None): return Response(status=400, response='invalid user id') #everything ok, let's do work db = get_db() likes = db['likes'] # check to see if this exists in the db if it doesn't # we will return HTTP 304 not modified key = likes.find_one( { "image_id" : image} ) if (key is None): error = 'not modified' return Response(status=304, response=error) count = key['count'] count = count - 1 if (count == 0): # we need to remove the entry for the image app.logger.debug('removing entry for ' + str(image) ) likes.remove({'image_id' : image}) else: # we just need to decrease the likes app.logger.debug('decreasing the likes for ' + str(image)) #remove the last date datelist = key['date_list'] datelist.pop() # update in the db like_id = likes.update( { 'image_id' : image, }, { 'image_id' : image, 'user_id' : user, 'date_list' : datelist, 'count' : count }, ) app.logger.debug('updated in db' ) resp = jsonify(image_id=image, image_count=count) return resp
def parse_todo_item_json_body(): json = request.get_json() item = { 'id': json.get('id'), 'title': json['title'], 'done': json['done'] } return item
def signIn(): if request.headers['Content-Type'] == 'application/json': json = request.json _email = json.get("inputEmail") _password = json.get("inputPassword") if _email and _password: res = mongo.db.linuxCommand.find({'email' : _email}) if(res.count()>0): if(res[0].get("email") == _email and res[0].get("password") == _password): return jsonify({'commandResponse' : 'user loggedin successfully', 'flag' : 1}) else: return jsonify({'commandResponse' : 'Incorrect Credentials'}) else: return jsonify({'commandResponse' : 'No User Found'}) else: return jsonify({'commandResponse' : 'Enter the required fields'}) else: return jsonify({'commandResponse' : 'Cannot Find JSON type'})
def signUp(): if request.headers['Content-Type'] == 'application/json': json = request.json _name = json.get("inputName") _email = json.get("inputEmail") _password = json.get("inputPassword") reqJson = {"name" : _name,"email" : _email, "password" : _password} if _email and _password and _name: res = mongo.db.linuxCommand.find({'email' : _email}) if(res.count()>0): return jsonify({'commandResponse' : 'user already exists'}) else: abc = mongo.db.linuxCommand.save(reqJson) return jsonify({'commandResponse' : 'user successfully registered','flag' : 1}) else: return jsonify({'commandResponse' : 'Enter the required fields'}) else: return jsonify({'commandResponse' : 'Cannot Find JSON type'})
def main(): json = request.get_json() title = json['issue']['fields']['summary'] desc = json['issue']['fields']['description'] todoId = json['issue']['fields']['customfield_10025'] if desc == None: desc = '' print(todoId == None) event = json.get('webhookEvent', None) if event != None: if event.find('issue_created') != -1: # text = title + "\n" + desc text = title if (todoId == None): print('Creating Todoist Issue') unique = uuid.uuid4() temp = uuid.uuid4() item = api.sync(commands=[{'type':'item_add', 'temp_id':str(temp), 'uuid':str(unique), 'args':{'content':text}}]) todoId = str(item['TempIdMapping'][str(temp)]) jira.issue(json['issue']['key']).update(customfield_10025=todoId) elif event.find('issue_deleted') != -1: print('Deleting Todoist Issue') item = api.items.get_by_id(todoId) item.delete() trans = json.get('transition', None) if trans != None: if trans['to_status'] == 'Completed': print('Completing Todoist Item') item = api.items.get_by_id(todoId) item.complete() elif trans['to_status'] == 'Inbox': print('Reverting Todoist Item') item = api.items.get_by_id(todoId) item.uncomplete() api.commit() return ''
def reader_profile_load(json): pagination_params = list() filter_params = [] if json.get('paginationOptions'): pagination_params.extend([json['paginationOptions']['pageNumber'], json['paginationOptions']['pageSize']]) if json.get('filter'): filter_params = UserPortalReader.get_filter_for_portals_and_plans( portal_name=json.get('filter').get('portal_name'), start_end_tm=json.get('filter').get('start_tm'), package_name=json.get('filter').get('package_name')) portals_and_plans = UserPortalReader.get_portals_and_plan_info_for_user(g.user.id, *pagination_params, filter_params=and_(*filter_params)) grid_data = [] for field in portals_and_plans: grid_data.append({'user_portal_reader_id': field['id'], 'portal_logo': field['portal_logo'], 'portal_name': field['portal_name'], 'package_name': field['plan_name'] + ' - UPGRADE', 'start_tm': field['start_tm'], 'end_tm': field['end_tm'], 'article_remains': field['amount'],'id':field['portal_id'], 'portal_host': field['portal_host'], 'configure': 'configure'}) return {'grid_data': grid_data, 'grid_filters': {'portal_name': [{'value': key['portal_name'], 'label': key['portal_name']}] for key in grid_data}}
def getTileUrlFromFeatureCollection(): values = {} try: json = request.get_json() if json: defaultVisParams = {"max": 1, "palette": ['red']} featureCollection = json.get('featureCollection', None) field = json.get('field', 'PLOTID') matchID = int(json.get('matchID', None)) visParams = json.get('visParams', defaultVisParams) if visParams == {}: visParams = defaultVisParams values = { "url": getFeatureCollectionTileUrl(featureCollection, field, matchID, visParams) } except GEEException as e: logger.error(e.message) values = {'errMsg': e.message} return jsonify(values), 200
def signUp(): if request.headers['Content-Type'] == 'application/json': json = request.json _name = json.get("inputName") _email = json.get("inputEmail") _password = json.get("inputPassword") reqJson = {"name": _name, "email": _email, "password": _password} if _email and _password and _name: res = mongo.db.users.find({'email': _email}) if (res.count() > 0): return jsonify({'commandResponse': 'user already exists'}) else: abc = mongo.db.users.save(reqJson) return jsonify({ 'commandResponse': 'user successfully registered', 'flag': 1 }) else: return jsonify({'commandResponse': 'Enter the required fields'}) else: return jsonify({'commandResponse': 'Cannot Find JSON type'})
def profile_load(json): pagination_params = list() filter_params = [] if json.get('paginationOptions'): pagination_params.extend([json['paginationOptions']['pageNumber'], json['paginationOptions']['pageSize']]) if json.get('filter'): filter_params = UserPortalReader.get_filter_for_portals_and_plans( portal_name=json.get('filter').get('portal_name'), start_end_tm=json.get('filter').get('start_tm'), package_name=json.get('filter').get('package_name')) portals_and_plans = UserPortalReader.get_portals_and_plan_info_for_user(g.user.id, *pagination_params, filter_params=and_(*filter_params)) grid_data = [] for field in portals_and_plans: grid_data.append({'user_portal_reader_id': field['id'], 'portal_logo': field['portal_logo'], 'portal_name': field['portal_name'], 'package_name': field['plan_name'] + ' - UPGRADE', 'start_tm': field['start_tm'], 'end_tm': field['end_tm'], 'article_remains': field['amount'],'id':field['portal_id'], 'portal_host': field['portal_host'], 'configure': 'configure'}) return {'grid_data': grid_data, 'grid_filters': {'portal_name': [{'value': key['portal_name'], 'label': key['portal_name']}] for key in grid_data}}
def getStats(): """ .. :quickref: getStats; Get the population and elevation for a polygon **Example request**: .. code-block:: javascript { paramType: "XX", paramValue: [ [0.0, 0.0], [...] ] } **Example response**: .. code-block:: javascript {maxElev: 1230, minElev: 1230, pop: 0} :reqheader Accept: application/json :<json String paramType: basin, landscape, or '' :<json Array polygon: the region over which to reduce data :resheader Content-Type: application/json """ try: values = {} json = request.get_json() paramType = json.get('paramType', None) paramValue = json.get('paramValue', None) values = getStatistics(paramType, paramValue) except GEEException as e: logger.error(e.message) values = { 'errMsg': e.message } return jsonify(values), 200
def timeSeriesIndex2(): """ """ values = {} try: json = request.get_json() if json: geometry = json.get('polygon', None) #deprecated if not geometry: geometry = json.get('geometry', None) if geometry: indexName = json.get('indexName', 'NDVI') scale = float(json.get('scale', 30)) timeseries = getTimeSeriesByIndex(indexName, scale, geometry) values = { 'timeseries': timeseries } except GEEException as e: logger.error(e.message) values = { 'errMsg': e.message } return jsonify(values), 200
def list_reader_load(json): next_page = json.get('next_page') if json.get('next_page') else 1 search_text = request.args.get('search_text') or '' article_fields = 'title|id|subtitle|short|image_file_id|subtitle|publishing_tm|read_count,company.name|logo_file_id|id,' \ 'division.name,portal.name|host|logo_file_id|id' favorite = request.args.get('favorite') == 'True' if not favorite: articles, pages, page = Search().search({'class': ArticlePortalDivision, 'filter': and_(ArticlePortalDivision.portal_division_id == db(PortalDivision).filter( PortalDivision.portal_id == db(UserPortalReader, user_id=g.user.id).subquery(). c.portal_id).subquery().c.id, ArticlePortalDivision.status == ArticlePortalDivision.STATUSES['PUBLISHED']), 'tags': True, 'return_fields': article_fields}, page=1, items_per_page=5*next_page) else: articles, pages, page = Search().search({'class': ArticlePortalDivision, 'filter': (ArticlePortalDivision.id == db(ReaderArticlePortalDivision, user_id=g.user.id, favorite=True).subquery().c. article_portal_division_id), 'tags': True, 'return_fields': article_fields}, page=1, items_per_page=5*next_page, search_text=search_text) # portals = UserPortalReader.get_portals_for_user() if not articles else None list_articles = ArticlePortalDivision.get_list_reader_articles(articles) return { 'end': True if pages == 1 or pages == 0 else False, 'articles': list_articles, 'pages': pages, 'current_page': page, 'page_buttons': Config.PAGINATION_BUTTONS, # 'portals': portals, 'favorite': favorite }
def timeSeriesForPoint(): """ """ values = {} try: json = request.get_json() if json: geometry = json.get('point', None) if geometry: timeseries = getTimeSeriesForPoint(geometry) values = {'timeseries': timeseries} except GEEException as e: logger.error(e.message) values = {'errMsg': e.message} return jsonify(values), 200
def signIn(): if request.headers['Content-Type'] == 'application/json': json = request.json _email = json.get("inputEmail") _password = json.get("inputPassword") if _email and _password: res = mongo.db.users.find({'email': _email}) if (res.count() > 0): if (res[0].get("email") == _email and res[0].get("password") == _password): return jsonify({ 'commandResponse': 'user loggedin successfully', 'flag': 1 }) else: return jsonify( {'commandResponse': 'Incorrect Credentials'}) else: return jsonify({'commandResponse': 'No User Found'}) else: return jsonify({'commandResponse': 'Enter the required fields'}) else: return jsonify({'commandResponse': 'Cannot Find JSON type'})
def profile_load(json): pagination_params = list() filter_params = [] if json.get("paginationOptions"): pagination_params.extend([json["paginationOptions"]["pageNumber"], json["paginationOptions"]["pageSize"]]) if json.get("filter"): filter_params = UserPortalReader.get_filter_for_portals_and_plans( portal_name=json.get("filter").get("portal_name"), start_end_tm=json.get("filter").get("start_tm"), package_name=json.get("filter").get("package_name"), ) portals_and_plans = UserPortalReader.get_portals_and_plan_info_for_user( g.user.id, *pagination_params, filter_params=and_(*filter_params) ) grid_data = [] for field in portals_and_plans: grid_data.append( { "user_portal_reader_id": field["id"], "portal_logo": field["portal_logo"], "portal_name": field["portal_name"], "package_name": field["plan_name"] + " - UPGRADE", "start_tm": field["start_tm"], "end_tm": field["end_tm"], "article_remains": field["amount"], "id": field["portal_id"], "portal_host": field["portal_host"], "configure": "configure", } ) return { "grid_data": grid_data, "grid_filters": { "portal_name": [{"value": key["portal_name"], "label": key["portal_name"]}] for key in grid_data }, }
def login(): data = jsonify({'Authorized' : completion}) resp = get_response(data) if request.method == 'POST': json = request.json username = json.get("email") password = json.get("password") global completion completion = auth.authenticate(username, password) if completion == False: data = jsonify({'Authorized' : completion, "msg": "Bad username or password"}) return get_response(data), 401 data = jsonify({ 'Authorized' : completion, 'access_token' : create_access_token(identity=username), 'refresh_token' : create_refresh_token(identity=username) }) return get_response(data), 200 return resp
def getFiltered(collectionName, json, simpleCompositVariable): dateFrom = json.get('dateFrom', None) dateTo = json.get('dateTo', None) cloudLessThan = json.get('cloudLessThan', 90) bands = json.get('bands', 'B4,B5,B3') min = json.get('min', '0.03,0.01,0.05') max = json.get('max', '0.45,0.5,0.4') visParams = {'min': min, 'max': max, 'bands': bands} return filteredImageCompositeToMapId(collectionName, visParams, dateFrom, dateTo, cloudLessThan, simpleCompositVariable)
def command(): if request.headers['Content-Type'] == 'application/json': json = request.json _linuxCommand = json.get("linuxCommand") # validate the received values if _linuxCommand: comm = _linuxCommand.split(' ') p = subprocess.Popen(comm,shell=False,stdout=subprocess.PIPE,stderr=subprocess.PIPE,stdin=subprocess.PIPE) out,err = p.communicate() if(out): js = {'commandResponse' : out} else: js = {'commandResponse' : err} return jsonify(js) else: return jsonify({'commandResponse' : 'Enter the required fields'}) else: return jsonify({'commandResponse' : 'Cannot Find JSON type'})
def preprocess_search_hit(pid, record_hit, links_factory=None, **kwargs): """Prepare a record hit from Elasticsearch for serialization.""" from invenio_records.api import Record from invenio_pidstore.models import PersistentIdentifier data = super(JSONSerializer, JSONSerializer).preprocess_search_hit( pid=pid, record_hit=record_hit, links_factory=links_factory, kwargs=kwargs) record_class = obj_or_import_string( current_app.config.get('RECORDS_REST_ENDPOINTS').get( pid.pid_type).get('record_class', Record)) try: persistent_identifier = PersistentIdentifier.get( pid.pid_type, pid.pid_value) record = record_class.get_record(persistent_identifier.object_uuid) json = JSONSerializer.add_item_links_and_permissions( record, data, pid) permissions = json.get('permissions') except PIDDoesNotExistError: permissions = { 'cannot_update': { 'permisson': 'permission denied' }, 'cannot_delete': { 'permisson': 'permission denied' } } search_hit = dict(pid=pid, metadata=record_hit['_source'], links=links_factory(pid, record_hit=record_hit, **kwargs), revision=record_hit['_version'], permissions=permissions) if record_hit.get('_explanation'): search_hit['explanation'] = record_hit.get('_explanation') return search_hit
def FilteredSentinel(): values = {} try: json = request.get_json() if json: dateFrom = json.get('dateFrom', None) dateTo = json.get('dateTo', None) cloudLessThan = json.get('cloudLessThan', 90) bands = json.get('bands', 'B4,B5,B3') min = json.get('min', '0.03,0.01,0.05') max = json.get('max', '0.45,0.5,0.4') visParams = {'min': min, 'max': max, 'bands': bands} values = filteredSentinelComposite(visParams, dateFrom, dateTo, cloudLessThan) except GEEException as e: logger.error(e.message) values = {'errMsg': e.message} return jsonify(values), 200
def auto_remove(json): return File.auto_remove(json.get('list'))
def add_delete_favorite(json): return ReaderArticlePortalDivision.add_delete_favorite_user_article(json.get('article')['id'], json.get('article')['is_favorite'])
def add_delete_favorite(json): return ReaderPublication.add_delete_favorite_user_article(json.get('article')['id'], json.get('article')['is_favorite'])
def add_delete_like(json): ReaderPublication.add_delete_liked_user_article(json.get('article')['id'], json.get('article')['liked']) return {'liked':ReaderPublication.count_likes(g.user.id, json.get('article')['id']), 'list_liked_reader':ReaderPublication.get_list_reader_liked(json.get('article')['id'])}
def list_reader_load(json): next_page = json.get("next_page") if json.get("next_page") else 1 search_text = request.args.get("search_text") or "" article_fields = ( "title|id|subtitle|short|image_file_id|subtitle|publishing_tm|read_count,company.name|logo_file_id|id," "division.name,portal.name|host|logo_file_id" ) favorite = request.args.get("favorite") == "True" if not favorite: articles, pages, page = Search().search( { "class": ArticlePortalDivision, "filter": and_( ArticlePortalDivision.portal_division_id == db(PortalDivision) .filter(PortalDivision.portal_id == db(UserPortalReader, user_id=g.user.id).subquery().c.portal_id) .subquery() .c.id, ArticlePortalDivision.status == ArticlePortalDivision.STATUSES["PUBLISHED"], ), "tags": True, "return_fields": article_fields, }, page=1, items_per_page=5 * next_page, ) else: articles, pages, page = Search().search( { "class": ArticlePortalDivision, "filter": ( ArticlePortalDivision.id == db(ReaderArticlePortalDivision, user_id=g.user.id, favorite=True) .subquery() .c.article_portal_division_id ), "tags": True, "return_fields": article_fields, }, page=1, items_per_page=5 * next_page, search_text=search_text, ) portals = UserPortalReader.get_portals_for_user() if not articles else None list_articles = [] for article_id, article in articles.items(): article["is_favorite"] = ReaderArticlePortalDivision.article_is_favorite(g.user.id, article_id) article["company"]["logo"] = ( File().get(articles[article_id]["company"]["logo_file_id"]).url() if articles[article_id]["company"]["logo_file_id"] else None ) article["portal"]["logo"] = ( File().get(articles[article_id]["portal"]["logo_file_id"]).url() if articles[article_id]["portal"]["logo_file_id"] else None ) del articles[article_id]["company"]["logo_file_id"], articles[article_id]["portal"]["logo_file_id"] list_articles.append(article) return { "end": pages == 1, "articles": list_articles, "pages": pages, "current_page": page, "page_buttons": Config.PAGINATION_BUTTONS, "portals": portals, "favorite": favorite, }
def add_delete_favorite(json): return ReaderPublication.add_delete_favorite_user_article( json.get('article')['id'], json.get('article')['is_favorite'])
def timeSeriesIndex(): """ .. :quickref: TimeSeries; Get the timeseries for a specific ImageCollection index, date range and a polygon OR a point **Example request**: .. code-block:: javascript { collectionName: "XX", indexName: "XX" scale: 0.0, geometry: [ [0.0, 0.0], [...] ] OR [0.0, 0.0], dateFrom: "YYYY-MM-DD", dateTo: "YYYY-MM-DD" } **Example response**: .. code-block:: javascript { timeseries: [ [0, 0.0], ... ] } :reqheader Accept: application/json :<json String collectionName: name of the image collection :<json String index: name of the index: (e.g. NDVI, NDWI, NVI) :<json Float scale: scale in meters of the projection :<json Array polygon: the region over which to reduce data :<json String dateFrom: start date :<json String dateTo: end date :resheader Content-Type: application/json """ values = {} try: json = request.get_json() if json: collectionName = json.get('collectionNameTimeSeries', None) geometry = json.get('polygon', None) #deprecated if not geometry: geometry = json.get('geometry', None) if collectionName and geometry: #indexName = json.get('indexName', 'NDVI') indexName = json.get('indexName', None) scale = float(json.get('scale', 30)) dateFrom = json.get('dateFromTimeSeries', None) dateTo = json.get('dateToTimeSeries', None) reducer = json.get('reducer', None) timeseries = getTimeSeriesByCollectionAndIndex( collectionName, indexName, scale, geometry, dateFrom, dateTo, reducer) values = {'timeseries': timeseries} except GEEException as e: logger.error(e.message) values = {'errMsg': e.message} return jsonify(values), 200
def add_delete_like(json): liked = ReaderArticlePortalDivision.add_delete_liked_user_article(json.get('article')['id'], json.get('article')['liked']) return ReaderArticlePortalDivision.count_likes(g.user.id, json.get('article')['id'])
def list_reader_load(json): next_page = json.get('next_page') if json.get('next_page') else 1 search_text = request.args.get('search_text') or '' article_fields = 'title|id|subtitle|short|image_file_id|subtitle|publishing_tm|read_count,company.name|logo_file_id|id,' \ 'division.name,portal.name|host|logo_file_id' favorite = request.args.get('favorite') == 'True' if not favorite: articles, pages, page = Search().search( { 'class': ArticlePortalDivision, 'filter': and_( ArticlePortalDivision.portal_division_id == db(PortalDivision).filter( PortalDivision.portal_id == db(UserPortalReader, user_id=g.user.id). subquery().c.portal_id).subquery().c.id, ArticlePortalDivision.status == ArticlePortalDivision.STATUSES['PUBLISHED']), 'tags': True, 'return_fields': article_fields }, page=1, items_per_page=5 * next_page) else: articles, pages, page = Search().search( { 'class': ArticlePortalDivision, 'filter': (ArticlePortalDivision.id == db( ReaderArticlePortalDivision, user_id=g.user.id, favorite=True).subquery().c.article_portal_division_id), 'tags': True, 'return_fields': article_fields }, page=1, items_per_page=5 * next_page, search_text=search_text) portals = UserPortalReader.get_portals_for_user() if not articles else None list_articles = [] for article_id, article in articles.items(): article[ 'is_favorite'] = ReaderArticlePortalDivision.article_is_favorite( g.user.id, article_id) article['company']['logo'] = File().get(articles[article_id]['company']['logo_file_id']).url() if \ articles[article_id]['company']['logo_file_id'] else None article['portal']['logo'] = File().get(articles[article_id]['portal']['logo_file_id']).url() if \ articles[article_id]['portal']['logo_file_id'] else None del articles[article_id]['company']['logo_file_id'], articles[ article_id]['portal']['logo_file_id'] list_articles.append(article) return { 'end': pages == 1, 'articles': list_articles, 'pages': pages, 'current_page': page, 'page_buttons': Config.PAGINATION_BUTTONS, 'portals': portals, 'favorite': favorite }
def fromjson(json): return Sensor(MACToInt(json[SENSOR_ID]), json.get(LATITUDE), json.get(LONGITUDE))
def images_like(): app.logger.debug('Entered images_like. Payload: ' ) json = request.get_json() app.logger.debug("json:") app.logger.debug(json) # First validate all the payload & params if (json == None): return Response(status=400, response='invalid payload') image = json.get('image') if (image == None): return Response(status=400, response='invalid image id') user = json.get('user') if (user == None): return Response(status=400, response='invalid user id') #everything ok, let's do work db = get_db() likes = db['likes'] count = 1 # check to see if this exists in the db and how many likes it has key = likes.find_one( { "image_id" : image} ) if (key is None): # first time seen app.logger.debug('inserting new entry in db' ) like = { 'image_id' : image, 'user_id' : user, 'date_list' : [datetime.datetime.utcnow()], 'count' : count } # since first time seen, we insert in the db like_id = likes.insert(like) app.logger.debug('inserted in db' ) else: # we have seen this image id before app.logger.debug('updating in db' ) app.logger.debug(key) count = key['count'] count = count + 1 # add at the end of the list of dates datelist = key['date_list'] datelist.append(datetime.datetime.utcnow()) # update the entry in the db like_id = likes.update( { 'image_id' : image, }, { 'image_id' : image, 'user_id' : user, 'date_list' : datelist, 'count' : count }, ) app.logger.debug('updated in db' ) resp = jsonify(image_id=image, image_count=count) return resp