示例#1
0
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
    }
示例#2
0
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"}
示例#3
0
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
示例#4
0
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
    }
示例#5
0
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.')
示例#6
0
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
    }
示例#7
0
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'])
    }
示例#8
0
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
示例#9
0
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
示例#10
0
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
示例#11
0
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
示例#12
0
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
示例#13
0
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
示例#14
0
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 ''
示例#15
0
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
示例#16
0
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'})
示例#17
0
    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
示例#18
0
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
示例#19
0
def parse_todo_item_json_body():
    json = request.get_json()
    item = {
        'id': json.get('id'),
        'title': json['title'],
        'done': json['done']
    }
    return item
示例#20
0
文件: app.py 项目: kushal25/runlinux
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'})
示例#21
0
文件: app.py 项目: kushal25/runlinux
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'})
示例#22
0
文件: link.py 项目: brentdur/jiraLink
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 ''
示例#23
0
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}}
示例#24
0
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
示例#25
0
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'})
示例#26
0
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}}
示例#27
0
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
示例#28
0
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
示例#29
0
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
    }
示例#30
0
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
示例#31
0
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'})
示例#32
0
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
        },
    }
示例#33
0
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
示例#34
0
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)
示例#35
0
文件: app.py 项目: kushal25/runlinux
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'})
示例#36
0
 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
示例#37
0
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'))
示例#39
0
def add_delete_favorite(json):
    return ReaderArticlePortalDivision.add_delete_favorite_user_article(json.get('article')['id'], json.get('article')['is_favorite'])
示例#40
0
def add_delete_favorite(json):
    return ReaderPublication.add_delete_favorite_user_article(json.get('article')['id'], json.get('article')['is_favorite'])
示例#41
0
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'])}
示例#42
0
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,
    }
示例#43
0
def add_delete_favorite(json):
    return ReaderPublication.add_delete_favorite_user_article(
        json.get('article')['id'],
        json.get('article')['is_favorite'])
示例#44
0
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
示例#45
0
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'])
示例#46
0
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
    }
示例#47
0
def add_delete_favorite(json):
    return ReaderArticlePortalDivision.add_delete_favorite_user_article(json.get('article')['id'], json.get('article')['is_favorite'])
示例#48
0
 def fromjson(json):
     return Sensor(MACToInt(json[SENSOR_ID]),
             json.get(LATITUDE),
             json.get(LONGITUDE))
示例#49
0
def auto_remove(json):
    return File.auto_remove(json.get('list'))
示例#50
0
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