示例#1
0
    def import_settings(self):
        settings_file = self.import_dir.joinpath("settings", "settings.json")

        with open(settings_file, "r") as f:
            settings: dict = json.loads(f.read())

            settings = SiteSettings(**settings)

            settings.update()
示例#2
0
async def update_settings(data: SiteSettings):
    """ Returns Site Settings """

    try:
        data.update()
    except:
        raise HTTPException(
            status_code=400,
            detail=SnackResponse.error("Unable to Save Settings"))

    scheduler.reschedule_webhooks()
    return SnackResponse.success("Settings Updated")
示例#3
0
def post_webhooks():
    all_settings = SiteSettings.get_site_settings()

    if all_settings.webhooks.enabled:
        todays_meal = Recipe.get_by_slug(MealPlan.today()).dict()
        urls = all_settings.webhooks.webhookURLs

        for url in urls:
            requests.post(url, json.dumps(todays_meal, default=str))
示例#4
0
    def reschedule_webhooks(self):
        """
        Reads the site settings database entry to reschedule the webhooks task
        Called after each post to the webhooks endpoint.
        """
        settings = SiteSettings.get_site_settings()
        time = cron_parser(settings.webhooks.webhookTime)

        self.scheduler.reschedule_job(
            self.webhook.id,
            trigger="cron",
            hour=time.hours,
            minute=time.minutes,
        )

        logger.info(self.scheduler.print_jobs())
示例#5
0
    def startup_scheduler(self):
        self.scheduler = BackgroundScheduler()
        logger.info("----INIT SCHEDULE OBJECT-----")
        self.scheduler.start()

        self.scheduler.add_job(auto_backup_job,
                               trigger="cron",
                               hour="3",
                               max_instances=1)
        settings = SiteSettings.get_site_settings()
        time = cron_parser(settings.webhooks.webhookTime)

        self.webhook = self.scheduler.add_job(
            post_webhooks,
            trigger="cron",
            name="webhooks",
            hour=time.hours,
            minute=time.minutes,
            max_instances=1,
        )

        logger.info(self.scheduler.print_jobs())
示例#6
0
async def get_main_settings():
    """ Returns basic site settings """

    return SiteSettings.get_site_settings()
示例#7
0
 def export_settings(self):
     all_settings = SiteSettings.get_site_settings()
     out_file = self.settings_dir.joinpath("settings.json")
     ExportDatabase._write_json_file(all_settings.dict(), out_file)