def get(self, *args, **kwargs): app = self.checkAppAccess(args) appService = AppService(self.application.getAppConfigPath()) appConfig = appService.getNewAppConfig(app.code) dbSession = self.getDBSession() baseTask = self.get_argument("baseOn", False) template = self.get_argument("template", False) nameConstructor = NameConstructor(appConfig) if baseTask: # задача основана на другой задаче worker = dbSession.query(Worker).filter_by(workerId=baseTask).first() workerService = WorkerService(self.application.getResultPath(), worker) task = workerService.getTask() # fix indexes for index, taskItem in enumerate(task.getTaskItems()): taskItem.index = index if not taskItem.name: taskItem.name = nameConstructor.getTaskItemName(taskItem) elif template: templateId = int(template) userId = self.get_current_user().userId taskTemplate = ( dbSession.query(TaskTemplate) .filter( and_( TaskTemplate.taskTemplateId == templateId, or_(TaskTemplate.userId == userId, TaskTemplate.shared == TaskTemplate.SHARED_YES), ) ) .first() ) if taskTemplate: taskTemplateFile = TaskTemplateFile.read(self.application.getTemplatePath(), taskTemplate) task = taskTemplateFile.getTask() else: self.showFatalError(u"Ошибка при доступе к шаблону") return else: task = Task(appname=app.code) eventsLoaded = len(task.items) html = self.render("dashboard/new.jinja2", {"task": task, "app": app, "appConfig": appConfig}, _return=True) self.renderJSON({"html": html, "vars": {"eventLoaded": eventsLoaded}})
def post(self, *args, **kwargs): eventCode = self.get_argument('eventCode', None) appCode = self.get_argument('appCode', None) index = self.get_argument('index', 1) taskItem = TaskItem(index = index, key = eventCode) appService = AppService(self.application.getAppConfigPath()) appConfig = appService.getNewAppConfig(appCode) nameConstructor = NameConstructor(appConfig) taskItem.name = nameConstructor.getTaskItemName(taskItem) self.render('dashboard/taskForm/eventFormItem.jinja2', { 'taskItem': taskItem, 'appConfig': appConfig, 'values':{ } })
def post(self, *args, **kwargs): app = self.checkAppAccess(args) saveAsTemplate = str(self.get_argument("saveAsTemplate", default="")) # создаем задачу из аргументов task = createTaskFromRequestArguments(self.request.arguments) session = self.getDBSession() if saveAsTemplate: # сохраняем шаблон taskTemplate = TaskTemplate() taskTemplate.appId = app.appId taskTemplate.name = self.get_argument("taskName", default=None) taskTemplate.userId = self.get_current_user().userId taskTemplate.shared = TaskTemplate.SHARED_NO session.add(taskTemplate) session.commit() # скидываем на диск taskTemplateFile = TaskTemplateFile( self.application.getTemplatePath(), task=task, taskTemplate=taskTemplate ) taskTemplateFile.baseDate = datetime.now() taskTemplateFile.save() self.redirect("/dashboard/app/{}/#templates".format(app.code)) return user = self.get_current_user() # объект для записи в базу worker = Worker() worker.userId = user.userId worker.startDate = datetime.now() worker.status = Worker.STATUS_ALIVE worker.appId = app.appId worker.name = self.get_argument("taskName", default=None) # генерируем имя запроса appService = AppService(self.application.getAppConfigPath()) appConfig = appService.getAppConfig(app.code) nameConstructor = NameConstructor(appConfig, task) if not worker.name: worker.name = nameConstructor.generateTaskName() session.add(worker) session.commit() # конструирем запрос constructor = HiveQueryConstructor(task, appConfig) querys = constructor.getHiveQuerys(worker.workerId) # task.stageCount = constructor.getStageCount() # создаем WorkerService - он будет связывать тред с файловой системой workerService = WorkerService(self.application.getResultPath(), worker) workerService.setQuery(querys) workerService.setTask(task) workerService.init() # создаем и запускаем тред workerThread = self.createHiveWorker(workerService) workerThread.start() self.redirect("/dashboard/app/" + app.code + "/#new_task/" + str(worker.workerId))