From 11645da636eff2991c7fb603bff3906fb4cdd61f Mon Sep 17 00:00:00 2001 From: Piotr Gawron <piotr.gawron@uni.lu> Date: Thu, 14 Sep 2017 11:53:52 +0200 Subject: [PATCH] cron job for refreshing redcap data --- smash/smash/settings.py | 3 ++- smash/web/redcap_connector.py | 19 +++++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/smash/smash/settings.py b/smash/smash/settings.py index fbdd6e22..86456861 100644 --- a/smash/smash/settings.py +++ b/smash/smash/settings.py @@ -71,7 +71,8 @@ TEMPLATES = [ ] CRON_CLASSES = [ - 'web.views.kit.KitRequestEmailSendJob' + 'web.views.kit.KitRequestEmailSendJob', + 'web.redcap_connector.RedCapRefreshJob' ] # Password validation diff --git a/smash/web/redcap_connector.py b/smash/web/redcap_connector.py index 706c4e19..6cc2cc11 100644 --- a/smash/web/redcap_connector.py +++ b/smash/web/redcap_connector.py @@ -5,6 +5,7 @@ import logging import pycurl import certifi +from django_cron import CronJobBase, Schedule from web.models import ConfigurationItem, Subject, Language from web.models.constants import REDCAP_TOKEN_CONFIGURATION_TYPE, \ @@ -302,3 +303,21 @@ class RedcapConnector(object): return False return True + + +class RedCapRefreshJob(CronJobBase): + RUN_EVERY_MINUTES = 60 + schedule = Schedule(run_every_mins=RUN_EVERY_MINUTES) + code = 'web.red_cap_hourly_refresh' # a unique code + + def do(self): + connector = RedcapConnector() + if connector.is_valid(): + logger.info("Refreshing redcap data") + connector.refresh_inconsistent() + connector.refresh_missing() + logger.info("Redcap data refreshed") + return "ok" + else: + logger.info("Redcap connector is down") + return "connector down" -- GitLab