Example #1
0
    def post(self, team_id):
        current_user = get_jwt_identity()
        data = task_parser.parse_args()
        if TaskModel.find_by_title(data['title']):
            return {
                'message': 'Task {} already exists'.format(data['title'])
            }, 409

        user = UserModel.query.get(current_user)
        new_task = TaskModel(data['title'], data['status'], data["priority"])
        new_task.reporter_id = user.id
        if data['description']:
            new_task.description = data['description']
        if data['assigne_id']:
            new_task.assigne_id = data['assigne_id']
        if data['planneddate']:
            new_task.planneddate = data['planneddate']
        new_task.team_id = team_id

        try:
            new_task.save_to_db()
            resp = jsonify({
                'message':
                'Task {} was created'.format(data['title']),
                'id':
                new_task.id
            })
            resp.status_code = 200
            return resp
        except:
            return {'message': 'Something went wrong'}, 500
Example #2
0
    def test_can_retrieve_all_tasks(self):
        task_recurring = TaskModel({
            'function': 'time.time',
            'schedule': '1 * * * *'
        })
        task_once = TaskModel({'function': 'time.time', 'schedule': 'now'})
        db.session.add(task_recurring)
        db.session.add(task_once)
        db.session.commit()

        res = self.app.get('/api/v1.0/schedule')
        j = json.loads(res.data)
        assert len(j) == 2
Example #3
0
def edit(id):
    title = request.form['title']
    description = request.form['description']
    startdate = request.form['startdate']
    enddate = request.form['enddate']
    status = request.form['status']
    TaskModel.updateById(id=id,
                         newtitle=title,
                         newdescription=description,
                         newstartdate=startdate,
                         newenddate=enddate,
                         newstatus=status)
    return redirect(url_for('hello_world'))
Example #4
0
    def post(cls):

        claims = get_jwt_claims()
        company_id = claims.get("company_id")

        tasks_json = request.get_json()["tasks"]
        print(tasks_json)
        tasks = task_schema.load(tasks_json, many=True)

        for task in tasks:
            task.company_id = company_id

        TaskModel.save_massive_to_db(tasks)

        return {"message": "Tasks added suscessfully"}
Example #5
0
    def test_can_remove_task_by_id(self):
        task = TaskModel({'function': 'time.time', 'schedule': '1 * * * *'})
        db.session.add(task)
        db.session.commit()

        res = self.app.delete('/api/v1.0/schedule', json={'id': task.id})
        assert res.status_code == 204
Example #6
0
    def put(cls, id):

        task_json = request.get_json()["task"]
        task = TaskModel.find_by_id(id)

        if task:
            task.customer_id = task_json["customer_id"]
            task.planogram_id = task_json["planogram_id"]
            task.start_before = task_json["start_before"]
            task.complete_before = task_json["complete_before"]
            task.agent_id = task_json.get("agent_id")

            task.save_to_db()

            return {
                "message": "task updated",
                "task": {
                    **task_schema.dump(task), "customer": task.customer.name,
                    "planogram": task.planogram.name,
                    "agent": task.agent.first_name if task.agent else None,
                    "agentData": agent_schema.dump(task.agent)
                }
            }

        return {"message": "not found"}, 404
Example #7
0
    def get(cls, id):
        task = TaskModel.find_by_id(id)

        if task:
            return task_schema.dump(task)

        return {"message": "not found"}, 404
Example #8
0
    def __init__(self, *args):
        super().__init__(*args)

        from shared.config import SettingsAccessorBase
        from Settings import DEFAULT_SETTINGS
        self.settings = SettingsAccessorBase(constants.FRONTEND_CONFIG_FILE,
                                             DEFAULT_SETTINGS)
        self.aboutToQuit.connect(lambda: self.settings.save())

        from models import TaskModel, AdapterManager, ProxyModel
        from Schedule.model import SchedulerModel

        self.taskModel = TaskModel()
        self.proxyModel = ProxyModel()
        self.proxyModel.setSourceModel(self.taskModel)
        self.schedulerModel = SchedulerModel(self)
        self.schedulerModel.setSourceModel(self.taskModel)

        self.adapterManager = AdapterManager(taskModel=self.taskModel)
        for name, item in self.settings.itr_sections_with_prefix("adapter"):
            self.adapterManager.loadAdapter(item)

        from Tasks.action import TaskCreationAgent
        self.taskCreationAgent = TaskCreationAgent(self)
        self.taskCreationAgent.available.connect(self.slotCreateTask)
        self.taskCreationDlg = None

        from Services import SessionService
        self.sessionService = SessionService(self)

        from Widgets.Main import QmlMain
        self.qmlWin = QmlMain(None)
        self.qmlWin.show()
        self.aboutToQuit.connect(lambda: self.qmlWin.deleteLater())
Example #9
0
class TaskService:
    def __init__(self):
        self.model = TaskModel()

    def add(self, params):
        return self.model.add(params)

    def update(self, item_id, params):
        return self.model.update(item_id, params)

    def delete(self, item_id):
        return self.model.delete(item_id)

    def list(self):
        response = self.model.list_items()
        return response
Example #10
0
    def put(self, task_id):
        task = TaskModel.query.get(task_id)
        args = task_put_parser.parse_args()
        if args['title']:
            if TaskModel.find_by_title(args['title']):
                return {
                    'message':
                    'Task with Name {} already exists'.format(args['name'])
                }, 409
            task.title = args['title']

        if args['description']:
            task.description = args['description']

        if args['status']:
            task.status = args['status']

        if args['priority']:
            task.priority = args['priority']

        if args['assigne_id']:
            task.assigne_id = args['assigne_id']

        if args['reporter_id']:
            task.reporter_id = args['reporter_id']

        if args['planneddate']:
            task.planneddate = args['planneddate']

        try:
            task.update_db()
            return {'message': 'User Details Updated'}, 200
        except:
            return {'message': 'Something went wrong'}, 500
Example #11
0
 def get(self, SK8RAT_name):
     # Check SK8RAT by name
     SK8RAT = SK8RATModel.query.filter(
         SK8RATModel.name == SK8RAT_name).first()
     # If name doesn't exist, error; else grab guid
     if (not SK8RAT):
         return {'message': 'SK8RAT does not exist.'}
     guid = SK8RAT.guid
     return TaskModel.return_single(guid)
Example #12
0
    def post(self, task_id):
        args = task_post_args.parse_args()
        result = TaskModel.query.filter_by(id=task_id).first()
        if result:
            abort(409, message="Task id taken")

        task = TaskModel(id=task_id, title=args['title'], desc=args['desc'])
        db.session.add(task)
        db.session.commit()
        return task, 201
Example #13
0
def clean_up_campaigns(request):
  status = 200
  task = TaskModel.all().get()
  if task:
    task_key = task.key()
    logging.info('Executing clean up campaign task: %s' % task_key)
    if (task.execute()):
      logging.info('Finished clean up campaign task: %s' % task_key)
      stats = 201
  return HttpResponse(status = status)
Example #14
0
def newTask():
    if request.method == "POST":
        title = request.form['title']
        description = request.form['description']
        startdate = request.form['startdate']
        enddate = request.form['enddate']
        status = request.form['status']
        # try:
        newtask = TaskModel(title=title,
                            description=description,
                            startdate=startdate,
                            enddate=enddate,
                            status=status)
        newtask.insert()
        return redirect(url_for('hello_world'))
        # # except:
        #     flash("Failed to insert,database connection error")
        #     print("failed")
        #     return redirect(url_for('hello_world'))

    return render_template('index.html')
Example #15
0
    def delete(cls):
        ids = request.get_json()["ids"]

        task = TaskModel.find_by_agents(ids)

        if task:
            return {"message":"There are task with these agents"}, 400

        agents = AgentModel.get_many(ids)

        AgentModel.delete_many(ids)
        return {"message":"Agents deleted!"}
Example #16
0
    def get(cls):

        claims = get_jwt_claims()
        company_id = claims.get("company_id")

        tasks = TaskModel.get_tasks(company_id)
        return [{
            **task_schema.dump(task), "customer": task.customer.name,
            "planogram": task.planogram.name,
            "agent": task.agent.first_name if task.agent else None,
            "agentData": agent_schema.dump(task.agent)
        } for task in tasks]
Example #17
0
    def post(self):
        parser = reqparse.RequestParser()
        parser.add_argument('function',
                            type=str,
                            required=True,
                            location='json')
        parser.add_argument('schedule',
                            type=str,
                            required=True,
                            location='json')
        parser.add_argument('args', type=list, location='json')
        schedule = parser.parse_args()

        task = TaskModel(schedule)

        uuid = ''
        if 'now' == schedule['schedule']:
            uuid = cel.send_task('worker.dynamicTask',
                                 kwargs={
                                     'taskname': schedule.function,
                                     'taskargs': schedule.args
                                 })
        elif schedule['schedule'].isdigit():
            time_now = time.time()
            time_gap = (int(schedule.schedule) - time_now) / 1000

            uuid = cel.send_task('worker.dynamicTask',
                                 kwargs={
                                     'taskname': schedule.function,
                                     'taskargs': schedule.args
                                 },
                                 countdown=time_gap)

        task.uuid = str(uuid)

        db.session.add(task)
        db.session.commit()

        if task.id:
            return task, 201
Example #18
0
def per_ip(ip, op_id):
    try:
        cur_pass = Password.objects.get(p_ip=ip).p_password
    except:
        cur_pass = "******"
    result = invoke_shell_remote.delay(
        shell_path="/cygdrive/d/wintool/WinTool.exe -Patch:down && /cygdrive/d/wintool/WinTool.exe -Patch:ins",
        ip=ip,
        password=cur_pass
    )
    if not result.result:
        m_result = ""
    else:
        m_result = result.result
    m_task = TaskModel(
        t_operation=op_id,
        t_content=ip,
        t_task_id=result.id,
        t_status=result.status,
        t_result=m_result
    )
    m_task.save()
Example #19
0
 def execute(task, campaign):
   storage_query = Storage.all().filter('campaign =', campaign)
   if (storage_query.count(limit = 1)):
     for datum in storage_query.fetch(100):
       logging.info('checking for stats: %s' % datum.stats.key())
       if (Histogram.has(datum.stats) and not TaskModel.has(datum.stats)): #perhaps use a pickled dictionary instead of count queries
         if (not TaskModel(object = datum.stats, task = 'delete histogram').put()):
           logging.critical('Could not create delete histogram task for %s' % datum.stats)
       else:
         datum.stat.delete()
       datum.delete()
   else:
     task.delete()
     logging.info('Nothing left in storage to clean up for campaign %s' % campaign)
     return True
    def delete(cls, id):

        task = TaskModel.find_by_planogram(id)

        if task:
            return {"message": "There are task with this planogram"}, 400

        planogram = PlanogramModel.find_by_id(id)

        if planogram:
            planogram.delete_from_db()

            return {"message": "Planogram deleted!"}

        return {"message": "not found"}, 404
Example #21
0
 def mutate(root, info, item, task_id, index):
     list_id = 1
     completed = False
     task = Task(task_id=task_id,
                 item=item,
                 completed=completed,
                 index=index)
     data = [
         TaskModel(
             task_id=task_id,
             list_id=list_id,
             item=item,
             completed=False,
             index=index,
         )
     ]
     session.bulk_save_objects(data)
     session.commit()
     return CreateTask(task=task)
Example #22
0
    def __init__(self, *args):
        super().__init__(*args)

        from models import TaskModel, AdapterManager, ProxyModel
        from libxware import XwareAdapterThread

        self.taskModel = TaskModel()
        self.proxyModel = ProxyModel()
        self.proxyModel.setSourceModel(self.taskModel)

        self.adapterManager = AdapterManager()
        self.xwareAdapterThread = XwareAdapterThread({
            "host": "127.0.0.1",
            "port": 9000,
        })
        self.xwareAdapterThread.start()

        self.qmlWin = QmlMain(None)
        self.qmlWin.show()
Example #23
0
    def test_update_endpoint_timestamp_was_changed_after_task_removed(self):
        task = TaskModel({'function': 'time.time', 'schedule': '1 * * * *'})
        db.session.add(task)
        db.session.commit()

        res = self.app.get('/api/v1.0/last_update')
        j = json.loads(res.data)
        old_date = j['date']

        # waiting before deleting task
        time.sleep(1)

        # weird but we need to reconcile object for some reasons
        task = db.session.merge(task)

        self.app.delete('/api/v1.0/schedule', json={'id': task.id})
        res = self.app.get('/api/v1.0/last_update')
        j = json.loads(res.data)

        assert j['date'] > old_date
Example #24
0
    def post(self, SK8RAT_name):
        # Get raw request and read as json blob
        request_raw = request.data.decode("UTF-8")
        json_blob = json.loads(request_raw)

        # Check SK8RAT by name
        SK8RAT = SK8RATModel.query.filter(
            SK8RATModel.name == SK8RAT_name).first()

        # If name doesn't exist, error; else grab guid
        if (not SK8RAT):
            return {'message': 'SK8RAT does not exist.'}
        guid = SK8RAT.guid

        # Check guid against tasking database
        task = TaskModel.query.filter(TaskModel.guid == guid).first()

        if (task is None):
            # task was not found, create initial
            new_task = TaskModel(guid=guid,
                                 task_id=1,
                                 task=json_blob['task'],
                                 task_status="wait",
                                 task_output="")
        else:
            # task was found, find most recent task_id for this guid, add 1
            task2 = TaskModel.query.filter(TaskModel.guid == guid).order_by(
                TaskModel.task_id.desc()).first()
            new_task = TaskModel(guid=guid,
                                 task_id=task2.task_id + 1,
                                 task=json_blob['task'],
                                 task_status="wait",
                                 task_output="")

        new_task.save_to_db()
        message = "Task " + json_blob['task'] + " with task id " + str(new_task.task_id) +\
                  " assigned to " + SK8RAT.name + "."
        return {'message': message}
Example #25
0
 def delete(self):
     return TaskModel.delete_all()
Example #26
0
from PyQt5.QtWidgets import QApplication, QMainWindow, QFileDialog, \
    QTableWidgetItem, QMessageBox, QDialog
from views import Ui_SolveViewer, Ui_TaskViewer, Ui_NewTaskDialog, \
    Ui_NewConstraintDialog, Ui_ExportDialog, Ui_AboutDialog
import sys
from models import TaskModel, TagModel, TaskTagModel, CONNECTION
from utility import Solver, NoSolutionError, SolverException, save_csv, compress
from PyQt5.QtGui import QColor, QPixmap
import csv
import numpy as np
from pyqtgraph import PlotDataItem
from PyQt5.QtCore import Qt

TASKS = TaskModel()
TAGS = TagModel()
TASKS_TAGS = TaskTagModel()


class AboutDialog(QDialog, Ui_AboutDialog):
    def __init__(self, parent):
        super().__init__(parent)
        self.setupUi(self)
        self.imageLabel.setPixmap(
            QPixmap('default_image.jpg').scaledToWidth(300))


class SolutionViewer(QMainWindow, Ui_SolveViewer):
    def __init__(self):
        super().__init__()
        self.setupUi(self)
        self.coefs = []
Example #27
0
    def __init__(self, *args):
        super().__init__(*args)
        logging.info("XWARE DESKTOP STARTS")
        self.setApplicationName("XwareDesktop")
        self.setApplicationVersion(__version__)
        os.chdir(os.path.dirname(os.path.abspath(__file__)))
        self.checkOneInstance()

        font = QFont()
        font.setPointSize(10)
        self.setFont(font)

        QIcon.setThemeName(
            "")  # Compat for Ubuntu 14.04: A magical fix for #102

        from Settings import DEFAULT_SETTINGS
        from shared.config import SettingsAccessorBase
        self.settings = SettingsAccessorBase(constants.FRONTEND_CONFIG_FILE,
                                             DEFAULT_SETTINGS)
        self.aboutToQuit.connect(lambda: self.settings.save())

        from models import TaskModel, AdapterManager, ProxyModel

        self.taskModel = TaskModel()
        self.proxyModel = ProxyModel()
        self.proxyModel.setSourceModel(self.taskModel)

        self.adapterManager = AdapterManager(taskModel=self.taskModel)
        for name, item in self.settings.itr_sections_with_prefix("adapter"):
            self.adapterManager.loadAdapter(item)

        # components
        from Services import SessionService
        self.sessionService = SessionService(self)

        from Widgets.systray import Systray
        from Notify import Notifier
        from Schedule.model import SchedulerModel
        from Tasks.action import TaskCreationAgent

        self.systray = Systray(self)
        self.notifier = Notifier(taskModel=self.taskModel,
                                 frontendSettings=self.settings["frontend"],
                                 parent=self)
        self.schedulerModel = SchedulerModel(self)
        self.schedulerModel.setSourceModel(self.taskModel)
        self.taskCreationAgent = TaskCreationAgent(self)
        self.monitorWin = None
        self.applySettings.connect(self.slotCreateCloseMonitorWindow)

        # Legacy parts
        from legacy import main
        from legacy.frontendpy import FrontendPy
        self.mainWin = main.MainWindow(
            adapter=self.adapterManager[0],
            taskCreationAgent=self.taskCreationAgent,
            frontendSettings=self.settings["frontend"],
            app=self)
        self.mainWin.show()
        self.frontendpy = FrontendPy(
            taskCreationAgent=self.taskCreationAgent,
            legacySettings=self.settings["legacy"],
            adapterSettings=self.settings["adapter-legacy"],
            adapter=self.adapterManager[0],
            mainWin=self.mainWin,
            parent=self)
        self.sigMainWinLoaded.emit()

        self.applySettings.emit()

        upgradeGuide = None
        if self.settings.myGet("internal", "previousversion") == "0.8":
            # upgraded or fresh installed
            upgradeGuide = "https://github.com/Xinkai/XwareDesktop/wiki/使用说明"
        else:
            previousdate = self.settings.getfloat("internal", "previousdate")
            if previousdate == 0:  # upgrade from pre-0.12
                upgradeGuide = "https://github.com/Xinkai/XwareDesktop/wiki/升级到0.12"

        if upgradeGuide:
            from PyQt5.QtCore import QUrl
            from PyQt5.QtGui import QDesktopServices
            QDesktopServices.openUrl(QUrl(upgradeGuide))

        self.settings.set("internal", "previousversion", __version__)
        self.settings.setfloat("internal", "previousdate", DATE)
Example #28
0
 def __init__(self):
     self.model = TaskModel()
Example #29
0
 def delete(cls):
     ids = request.get_json()["ids"]
     TaskModel.delete_many(ids)
     return {"message": "Tasks deleted!"}
Example #30
0
 def get(self):
     return TaskModel.return_all()
Example #31
0
def hello_world():
    records = TaskModel.read_all()
    return render_template('index.html', records=records)