Beispiel #1
0
def dashboard_commands():
    try:
        commands = request.form['commands']
        commands = json.loads(base64.b64decode(commands))

        approve = []
        if "approve" in commands.keys():
            approve = commands['approve']
        reject = []
        if "reject" in commands.keys():
            reject = commands['reject']

        # Deal with Approved Items
        for _item in approve:
            _categories = _item['categories']
            IMAGE_URL = _item['image_url']
            SOURCE_URI = _item['source_uri']

            for _category in _categories:
                category_objects = Category.query.filter(Category.short_name == _category)
                for category_object in category_objects:
                    related_projects = Project.query.filter(Project.category == category_object)
                    for related_project in related_projects:
                        # Start building Task Object
                        _task_object = Task()
                        _task_object.project_id = related_project.id

                        # Build Info Object from whatever data we have
                        _info_object = {}
                        _info_object['image_url'] = IMAGE_URL
                        _info_object['source_uri'] = SOURCE_URI
                        _info_object['id'] = SOURCE_URI + "_" + \
                                            ''.join(random.choice('0123456789ABCDEF') for i in range(16))

                        _task_object.info = _info_object
                        print _task_object
                        print _info_object

                        db.session.add(_task_object)
                        db.session.commit()
            # Delete from GEOTAGX-SOURCERER-HASHQUEUE
            sentinel.slave.hdel("GEOTAGX-SOURCERER-HASHQUEUE", IMAGE_URL)

        # Deal with rejected items
        for _item in reject:
            #Directly delete from GEOTAGX-SOURCERER-HASHQUEUE
            IMAGE_URL = _item['image_url']
            sentinel.slave.hdel("GEOTAGX-SOURCERER-HASHQUEUE", IMAGE_URL)

        _result = {
            "result" : "SUCCESS"
        }
        return jsonify(_result)
    except Exception as e:
        _result = {
            "result" : "ERROR",
        }
        return jsonify(_result)
Beispiel #2
0
def add_task(project):
    store_questions(project)
    project_id=project.id
    project_path=session["zzz"]
    if(session.get("question") is not None):
        for i in ["images","videos","documents","audios"]:
            if os.path.exists(project_path+"/"+i):
                print "in if"
                for file in os.listdir(project_path+"/"+i):
                    p=os.path.join(project_path+"/"+i,file)
                    p=p[p.rfind("uploads"):]
                    print p
                    dictobj={"type":i,"url":"/"+p,"subtype":file.rsplit('.',1)[1].lower()}
                    s=json.dumps(dictobj)
                    #print s.type
                    task = Task(project_id=project_id)
                    task.info=dictobj
                    task_repo.save(task)
    session.pop('question', None)
        def timer_function():
            #Continue code here
            image_source = sentinel.slave.lpop("GEOTAGX-SOURCERER-QUEUE")
            if image_source:
                split_image_source = image_source.split(DELIMITER)
                base64Data = split_image_source[-1]
                decodedJSONString = base64.b64decode(base64Data)
                parsedJSONObject = json.loads(decodedJSONString)

                if parsedJSONObject['source'] == 'geotagx-chrome-sourcerer':
                    #Handle Chrome Sourcerer
                    #TODO : Refactor into an OOP based implementation

                    SOURCE_URI = parsedJSONObject['source_uri']
                    IMAGE_URL = parsedJSONObject['image_url']
                    for category in parsedJSONObject['categories']:
                        category_objects = Category.query.filter(
                            Category.short_name == category)
                        for category_object in category_objects:
                            related_projects = Project.query.filter(
                                Project.category == category_object)
                            for related_project in related_projects:
                                # Start building Task Object
                                _task_object = Task()
                                _task_object.project_id = related_project.id

                                # Build Info Object from whatever data we have
                                _info_object = {}
                                _info_object['image_url'] = IMAGE_URL
                                _info_object['source_uri'] = SOURCE_URI
                                _info_object['id'] = parsedJSONObject['source'] + "_" + \
                                     ''.join(random.choice('0123456789ABCDEF') for i in range(16))

                                _task_object.info = _info_object

                                db.session.add(_task_object)
                                db.session.commit()
                                print _now(), _task_object
            else:
                print _now(), "GEOTAGX-SOURCERER-QUEUE Empty....."
		def timer_function():
			#Continue code here
			image_source = sentinel.slave.lpop("GEOTAGX-SOURCERER-QUEUE")
			if image_source:
				split_image_source = image_source.split(DELIMITER)
				base64Data = split_image_source[-1]
				decodedJSONString = base64.b64decode(base64Data)
				parsedJSONObject = json.loads(decodedJSONString)

				if parsedJSONObject['source'] == 'geotagx-chrome-sourcerer':
					#Handle Chrome Sourcerer
					#TODO : Refactor into an OOP based implementation
					
					SOURCE_URI = parsedJSONObject['source_uri']
					IMAGE_URL = parsedJSONObject['image_url']
					for category in parsedJSONObject['categories']:
						category_objects = Category.query.filter(Category.short_name == category)
						for category_object in category_objects:
							related_projects = Project.query.filter(Project.category == category_object)
							for related_project in related_projects:
								# Start building Task Object
								_task_object = Task()
								_task_object.project_id = related_project.id

								# Build Info Object from whatever data we have
								_info_object = {}
								_info_object['image_url'] = IMAGE_URL
								_info_object['source_uri'] = SOURCE_URI
								_info_object['id'] = parsedJSONObject['source'] + "_" + \
													''.join(random.choice('0123456789ABCDEF') for i in range(16))

								_task_object.info = _info_object

								db.session.add(_task_object)
								db.session.commit()
								print _now(), _task_object
			else:
				print _now(), "GEOTAGX-SOURCERER-QUEUE Empty....."