示例#1
0
    def post(self, name):
        data = Task.parse.parse_args()
        project = ProjectModel.query.filter_by(uuid=data['uuid']).first()

        if project:
            if project.created_by_id == get_jwt_identity():
                # owner
                if TaskModel.find_by_name(name):
                    return {
                        "TaskAlreadyExistsError": {
                            "message": "Task with given name alredy exists.",
                            "status": 401
                        }
                    }

                task = TaskModel(name, data['task_desc'], data["uuid"])
                task.save_to_db()
                project = ProjectModel.find_by_id(data['uuid'])
                project.task_id = task
                project.save_to_db()
                return {"Message": "Task Added...", "status": 200}
            else:
                return {
                    "UnauthorizedError": {
                        "message": "Project Owner can only create task.",
                        "status": 401
                    }
                }

        return {
            "ProjectNotExistsError": {
                "message": "Project with given id doesn't exists",
                "status": 400
            }
        }
示例#2
0
    def post(self):
        parser = reqparse.RequestParser()

        parser.add_argument('description',
                            type=str,
                            required=True,
                            help="Field description cannot be empty")
        parser.add_argument(
            'start_date',
            type=lambda x: dt.datetime.strptime(x, "%Y-%m-%d %H:%M:%S"),
            required=True,
            help="Field due_date cannot be empty")
        parser.add_argument(
            'end_date',
            type=lambda x: dt.datetime.strptime(x, "%Y-%m-%d %H:%M:%S"),
            required=True,
            help="Field due_date cannot be empty")
        parser.add_argument('owner_id',
                            type=int,
                            required=True,
                            help="Field owner_id cannot be empty")

        payload = parser.parse_args()

        task = TaskModel(payload['description'], payload['start_date'],
                         payload['end_date'], False, payload['owner_id'])
        task.save()

        return {
            'message': 'Task created without issues',
            'record': task.json()
        }, 201
示例#3
0
 def _processTasks(self, hostsType, job):
     '''
 '''
     resultCode, resultMessage = True, ""
     for device in self._hosts:
         task = TaskModel(job.id, device.id, "NEW", {})
         task.save_to_db(commit=False)
     return resultCode, resultMessage
 def post(self):
     args = TaskAPI.parser.parse_args()
     task = TaskModel(**args)
     try:
         task.save_to_db()
     except:
         return {"message": "An error occurred creating the task."}, 500
     return task.json(), 201
示例#5
0
    def post(self):
        content = request.get_json()
        task = TaskModel(content["task"])
        try:
            task.save_to_db()
        except:
            return {"message": "An error occurred inserting the item."}, 500

        return task.json(), 201
示例#6
0
 def _processTasks(self, job_id, hosts):
     '''
 '''
     resultCode, resultMessage = True, ""
     for deviceName in hosts:
         device = DeviceModel.find_by_name(deviceName)
         task = TaskModel(job_id, device.id)
         task.save_to_db(commit=True)
     return resultCode, resultMessage
示例#7
0
 def put(self, task_id):
     task = TaskModel.find_by_id(task_id)
     data = Task.parser.parse_args()
     if task:
         task.is_finished = data['is_finished']
     else:
         task = TaskModel(data['body'], data['list_id'])
     task.save_to_db()
     return task.json()
示例#8
0
 def _processTasks(self, hostsType):
     '''
 '''
     resultCode, resultMessage = True, ""
     if self.job.agent_type == "configuration_sender" and hostsType == "hostsConfiguration":
         self.buildCommand()
     else:
         for device in self._hosts:
             task = TaskModel(self.job.id, device.id, "NEW", {})
             task.save_to_db(commit=False)
     return resultCode, resultMessage
    def post(self):
        """create task"""
        data = Task.parser.parse_args()
        if data['description'] not in {"", None}:
            task = TaskModel(data['description'])
        else:
            return {"message": "A task must have a description."}

        try:
            task.save_to_db()
        except:
            return {'message': "An error occurred inserting the bill."}, 500
        return task.json(), 201
    def put(self, _id):
        data = self.parser.parse_args()
        task = TaskModel.find_by_id(_id)

        if task:
            task.title = data['title']
            task.description = data['description']
            task.done = data['done']
        else:
            task = TaskModel(**data)
        task.save_to_db()

        return task.json()
示例#11
0
    def post(self):
        data = Task.parser.parse_args()

        if 'name' not in data or 'description' not in data or 'deadline' not in data:
            return {'message': 'invalid json sent in body'}, 400

        task = TaskModel(data['name'], data['description'], data['deadline'],
                         current_identity.first().id)
        try:
            task.save_to_db()
        except:
            return {'message': 'error occurred while inserting task'}, 500
        return task.json(), 201
示例#12
0
 def post(self, task_id):
     if TaskModel.find_task(task_id):
         return {
             "message": "task if '{}' already exists.".format(task_id)
         }, 400  # Bad request
     dados = Task.argumentos.parse_args()
     task = TaskModel(task_id, **dados)
     try:
         task.save_task()
     except:
         return {
             'message': 'An internal error ocurred trying to save task.'
         }, 500
     return task.json()
示例#13
0
    def post(cls):
        data = parser.parse_args()

        try:
            task = TaskModel(**data)
            task.save_to_db()
        except IntegrityError as e:
            return {"database_exception": str(e)}, 400
        except Exception as e:
            return {
                "message": "Internal error occurred during insertion."
            }, 500

        return task.json(), 201
示例#14
0
    def post(self, name):
        if TaskModel.find_by_name(name):
            return {
                'message': f"A task with name '{name}' already exists!"
            }, 400

        data = Task.parser.parse_args()

        task = TaskModel(name, **data)

        try:
            task.save_to_db()
        except:
            return {'message': "An error occured creating the task."}, 500

        return task.json()
示例#15
0
 def buildCommand(self):
     for deviceName in self.job.parameters["hostsConfiguration"]:
         device = DeviceModel.find_by_name(deviceName)
         if not device:
             device = DeviceModel(deviceName, deviceClass=1)
             try:
                 device.save_to_db(commit=False)
             except:
                 resultCode, resultMessage = False, "An error occurred inserting the device."
         command = Environment().from_string(
             self.job.parameters["remoteCommand"]).render(
                 self.job.parameters["hostsConfiguration"][deviceName])
         task = TaskModel(self.job.id, device.id)
         task.parameters["command"] = command
         task.save_to_db(commit=False)
     return command
示例#16
0
    def post(self):

        data = Task.parser.parse_args()
        current_user_id = get_jwt_identity()

        task_name = data["task_name"]
        if not task_name:
            return {"message": "Please enter the name of task 'task_name' "}

        is_open = data["is_open"]

        project_id = data["project_id"]
        if not project_id:
            return {"message": "Please enter the id of project 'project_id' "}

        project = ProjectModel.find_by_id(project_id)

        if not project:
            return {"message": "project not found"}, 404

        if current_user_id != project.user_id:
            return {"message": "Unauthorized"}, 401

        if project.is_archived == True:
            return {"message": "Project Closed"}, 401

        task = TaskModel(**data)
        task.user_id = get_jwt_identity()
        task.save_to_db()

        # try:
        #     task = TaskModel(**data)
        #     task.user_id = get_jwt_identity()
        #     task.save_to_db()
        # except:
        #     return {"message": "An error occured creating the Task"}, 500

        task_id = task.id
        task_name = task.task_name
        is_open = task.is_open

        return {
            "task_id": task_id,
            "task_name": task_name,
            "is_open": is_open
        }, 201
示例#17
0
    def put(self, id):
        data = Task.parser.parse_args()

        task = TaskModel.find_by_id(id)

        if task is None:
            task = TaskModel(**data)

        else:
            task.name = data['name']
            task.description = data['description']
            task.duedate = data['duedate']
            task.completed = data['completed']

        task.save_to_db()

        return task.json()
示例#18
0
    def put(self, name):
        data = Task.parser.parse_args()

        task = TaskModel.find_by_name(name)

        if task is None:
            task = TaskModel(name, **data)
        else:
            task.name = name
            task.description = data['description']

        try:
            task.save_to_db()
        except:
            return {'message': "An error occured."}, 500

        return task.json()
示例#19
0
    def run(self):
        while 1:
            # sleep for decrease cpu usage
            sleep(0.01)
            QCoreApplication.processEvents()
            from_db = False
            if self.running_tasks.__len__() >= self.limit():
                continue
            try:
                if self.items:
                    from_db = True
                    item = self.items.pop()
                else:
                    item = self.queue.get()  # type: RequestObject
                if item:
                    if not from_db:
                        task_model = TaskModel()
                        task_model.route = item.route
                        task_model.process_id = item.process_id
                        task_model.status = constants.STATUS_RUNNING
                        task_model.data = item.data
                        task_model.call_back = item.call_back
                        task_model.token = item.token
                        task_model.module_version = item.module_version
                        task_model.queue_name = self.queue_name
                        task_model.save()
                    else:
                        task_model = item

                    task = Task(task_model)
                    if task.instance_module:
                        task.instance_module.task_finished.connect(self.__task_finished)
                        task.setAutoDelete(True)
                        self.running_tasks.update({item.process_id: task})
                        # check cancel or pause request before start
                        self.apply_action_by_pid(task, item.process_id)
                        self.pool.start(task)
                    else:
                        # TODO: set error alarm
                        ApiLogging.error('problem running task')
            except Exception as e:
                ApiLogging.error('process exception' + str(e))
                # TODO: set error alarm
                continue
示例#20
0
    def put(cls, id):
        data = parser.parse_args()
        task = TaskModel.find_existing_by_id(id)

        if not task:
            task = TaskModel(**data)
        else:
            task.update(data)

        try:
            task.save_to_db()
        except IntegrityError as e:
            return {"database_exception": str(e)}, 400
        except:
            return {
                "message": "Internal error occurred during the update."
            }, 500

        return task.json(), 201
示例#21
0
    def post(self):

        data = Task.parser.parse_args()

        # we instantiate the TaskModel class with name and price parameters
        # and store a reference to it in the task variable
        task = TaskModel(**data)

        try:
            # we take the TaskModel instance and call its insert method
            # so that it inserts the fields specified above from the request
            # into the db
            task.save_to_db()
        except:
            return {
                'message': "An error occurred inserting the task."
            }, 500  # Internal server error

        return task.json(), 201  # return with 'created' status code
示例#22
0
    def post(self, task):
        if TaskModel.find_by_name(task):
            return {
                'message':
                "A network tool already exist with '{}'".format(task),
            }, 400

        data = Task.parser.parse_args()
        task = TaskModel(data['manufacture'], data['device'], task,
                         data['command'], data['notes'])

        try:
            task.save_to_db()
        except:
            return {
                'message':
                "an error occurred when inserting that new network tool into the toolbox"
            }, 500

        return task.json(), 201
示例#23
0
    def post(self):
        # Get post args and validate input
        try:
            parse = reqparse.RequestParser()
            parse.add_argument(
                'file',
                type=FileStorage,
                location='files',
                required=True,
            )
            file: FileStorage = parse.parse_args()['file']
            image_name = file.filename
            image = Image.open(file)
            print(file.filename)
            # image.save(image. )
        except UnidentifiedImageError:
            return {'message', 'not an image file'}, 404

        # Schedule task using Redis
        try:
            queue_job = queue.enqueue(process_image, image)

            task = TaskModel(
                queue_job.id,
                current_identity.id,
                queue_job.get_status(),
                queue_job.result,
                queue_job.created_at,
                queue_job.started_at,
                queue_job.ended_at,
                queue_job.enqueued_at,
                queue_job.origin
            )
            task.save_to_db()
        except Exception as err:
            return {'message': err.args}, 500

        # Return success or failed for created task
        return task.json(), 201
示例#24
0
    def post(self):
        data = Task.parser.parse_args()

        task = TaskModel.find_by_description_and_instructor(
            data["task_description"], data["instructor_id"]
        )
        if task:
            return {"error": "The task already exists"}, 500
        else:
            newTask = TaskModel(
                data["task_name"],
                data["task_description"],
                data["instructor_id"],
                data["task_notes"],
            )

        try:
            newTask.save_to_db()
        except:
            return {"message": "An error occurred inserting the task"}, 500

        return {"task": newTask.json()}, 201
示例#25
0
    def post(self):
        data = Task.parser.parse_args()

        title = data['title']
        category_name = data['category_name']

        task = TaskModel.find_by_title(title, current_identity.id)
        if task:
            return {"message": "Task '{}', already exists.".format(title)}, 400

        category = CategoryModel.find_by_name(category_name)

        task = TaskModel(title, current_identity.id, category.id)

        try:
            task.save_to_db()
        except:
            return {
                "message": "An error occurred while storing the task."
            }, 500

        return task.json(), 201
示例#26
0
    def put(self):
        data = Task.parser.parse_args()
        task = TaskModel.find_by_task_id_and_user_id(
            data['id'],
            current_identity.first().id).first()

        if 'name' not in data or 'description' not in data or 'deadline' not in data or 'done' not in data:
            return {'message': 'invalid json sent in body'}, 400

        if task is None:
            task = TaskModel(data['name'], data['description'],
                             data['deadline'],
                             current_identity.first().id)
            task.done = data['done']
        else:
            task.update(data['name'], data['description'], data['deadline'],
                        data['done'])
        try:
            task.save_to_db()
        except:
            return {'message': 'error occurred while saving task'}, 500
        return task.json()
示例#27
0
def create_task():
    session_title = session.get('title')
    session_content = session.get('content')
    session_token = session.get('create_csrf_token')

    post_title = request.form["title"]
    post_content = request.form["content"]
    create_csrf_token = request.form["create_csrf_token"]

    if create_csrf_token != session_token:
        logger.warning('create csrf_token is %s ', create_csrf_token)
        abort(400)

    if session_title != post_title or session_content != post_content:
        logMsg = "in create task execution: input data is wrong : post data is %s."
        logger.warning(logMsg, post_title)
        abort(400)

    try:
        new_task = TaskModel(session_title, session_content)
        #new_task.title = request.form["title"]
        #new_task.content = request.form["content"]
        new_task.date = str(datetime.today().year) + "-" + str(
            datetime.today().month) + "-" + str(datetime.today().day)
        new_task.commit = 0
        db.session.add(new_task)
        db.session.commit()

        delete_create_session()

        return redirect(url_for('.index'))
    except:
        db.session.rollback()

        logMsg = "in crate task execution: crate execution is failed. please return index page."
        logger.warning(logMsg)
        delete_create_session()
        abort(400)
示例#28
0
    def cancel(data):
        params = Command.__get_data(data)
        if params:
            if params.get('process_id'):

                tag = params.get('process_id')
                try:  # check if this process_id is running
                    task_exist = TaskModel.get(TaskModel.process_id == tag)
                except Exception:
                    task_exist = False
                queue_exist = PGQ.preview(tag)
                # check if this process_id is on queue or running
                if queue_exist or task_exist:
                    try:  # check if any other command submitted
                        action = ActionModel.get(ActionModel.process_id == tag)
                    except:
                        action = ActionModel()
                        action.process_id = params.get('process_id')
                    action.action = constants.STATUS_CANCEL
                    if queue_exist:
                        action.status = constants.STATUS_SUCCESS
                    action.save()

                    if queue_exist:
                        item = PGQ.get_by_tag(
                            tag
                        )  # get from queue and remove item, and save in task_model
                        task_model = TaskModel()
                        # route, call_back, token, process_id, data, module_version
                        error = {
                            'code': CancelExecutionError.get_code(),
                            'message': 'task canceled by user!'
                        }
                        task_model.route = item.data.route
                        task_model.process_id = item.data.process_id
                        task_model.status = constants.STATUS_FAILED
                        task_model.token = item.data.token
                        task_model.module_version = item.data.module_version
                        task_model.data = item.data.data
                        task_model.call_back = item.data.call_back
                        task_model.delivery = constants.STATUS_NEW
                        task_model.queue_name = item.name
                        task_model.response_data = {
                            'data': to_json({}),
                            'error': to_json(error),
                            'status': constants.STATUS_ERROR,
                            'token': item.data.token,
                            'process_id': item.data.process_id
                        }
                        try:
                            task_model.save()
                        except Exception:
                            raise DatabaseError('can not access database')
                    Command.send_signal(
                        ['process_h.py', 'process_m.py', 'process_l.py'])
                    return {
                        'data': 'cancel request received!',
                        'status': constants.STATUS_PENDING
                    }
                else:
                    return {
                        'data': 'process_id not found',
                        'status': constants.STATUS_ERROR
                    }
            else:
                return {
                    'data': 'process_id keyword not found',
                    'status': constants.STATUS_ERROR
                }
        return {
            'data': 'format or process id is wrong',
            'status': constants.STATUS_ERROR
        }
示例#29
0
文件: pool.py 项目: GTekSD/memento
#-*- coding:utf-8 -*-
from models.task import TaskModel
from models.idea import IdeaModel

task_pool = TaskModel("memento.db")
task_pool.create_table()
idea_pool = IdeaModel("memento.db")
idea_pool.create_table()