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()
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")
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))
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())
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())
async def get_main_settings(): """ Returns basic site settings """ return SiteSettings.get_site_settings()
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)