Beispiel #1
0
    def handle_api_save_crontab(self, http_context):
        if http_context.method == 'POST':

            def setTask(obj, values):
                for k, v in values.items():
                    setattr(obj, k, v)
                return obj

            # Create empty config
            user = self.context.identity
            crontab = CronManager.get(self.context).load_tab(None)
            new_crontab = http_context.json_body()['crontab']
            for _type, values_list in new_crontab.items():
                for values in values_list:
                    if _type == 'normal_tasks':
                        crontab.tree.normal_tasks.append(
                            setTask(CrontabNormalTaskData(), values))
                    elif _type == 'special_tasks':
                        crontab.tree.special_tasks.append(
                            setTask(CrontabSpecialTaskData(), values))
                    elif _type == 'env_settings':
                        crontab.tree.env_settings.append(
                            setTask(CrontabEnvSettingData(), values))
            try:
                CronManager.get(self.context).save_tab(user, crontab)
                return True
            except Exception as e:
                raise EndpointError(e)
Beispiel #2
0
    def save(self):
        self.classconfig['task_definitions'] = [_.save() for _ in self.task_definitions]
        self.classconfig['job_definitions'] = [_.save() for _ in self.job_definitions]
        self.save_classconfig()

        prefix = 'ajenti-ipc tasks run '

        tab = CronManager.get().load_tab('root')
        for item in list(tab.tree.normal_tasks):
            if item.command.startswith(prefix):
                tab.tree.normal_tasks.remove(item)
        for item in list(tab.tree.special_tasks):
            if item.command.startswith(prefix):
                tab.tree.special_tasks.remove(item)

        for job in self.job_definitions:
            if job.schedule_special:
                e = CrontabSpecialTaskData()
                e.special = job.schedule_special
                e.command = prefix + job.task_id
                tab.tree.special_tasks.append(e)
            else:
                e = CrontabNormalTaskData()
                e.minute = job.schedule_minute
                e.hour = job.schedule_hour
                e.day_of_month = job.schedule_day_of_month
                e.month = job.schedule_month
                e.day_of_week = job.schedule_day_of_week
                e.command = prefix + job.task_id
                tab.tree.normal_tasks.append(e)

        CronManager.get().save_tab('root', tab)
Beispiel #3
0
    def init(self):
        self.title = 'Cron'
        self.icon = 'time'
        self.category = _('System')
        self.append(self.ui.inflate('cron:main'))

        self.binder = Binder(None, self.find('config'))
        self.find('normal_tasks').new_item = lambda c: CrontabNormalTaskData()
        self.find(
            'special_tasks').new_item = lambda c: CrontabSpecialTaskData()
        self.find('env_settings').new_item = lambda c: CrontabEnvSettingData()

        self.current_user = '******'
Beispiel #4
0
 def _create_normal_task(self, values):
     tmp = CrontabNormalTaskData()
     for k, v in values.items():
         setattr(tmp, k, v)
     return tmp