summaryrefslogtreecommitdiff
path: root/meetingtools/apps/stats/tasks.py
diff options
context:
space:
mode:
Diffstat (limited to 'meetingtools/apps/stats/tasks.py')
-rw-r--r--meetingtools/apps/stats/tasks.py33
1 files changed, 33 insertions, 0 deletions
diff --git a/meetingtools/apps/stats/tasks.py b/meetingtools/apps/stats/tasks.py
new file mode 100644
index 0000000..fb4b5c7
--- /dev/null
+++ b/meetingtools/apps/stats/tasks.py
@@ -0,0 +1,33 @@
+import logging
+from celery.schedules import crontab
+from celery.task import periodic_task
+from meetingtools.ac import ac_api_client
+from meetingtools.apps.cluster.models import ACCluster
+from datetime import datetime,timedelta
+from meetingtools.apps.stats.models import UserMeetingTransaction
+
+__author__ = 'leifj'
+
+def import_acc_sessions(acc,since=0):
+ with ac_api_client(acc) as api:
+ p = {'sort': 'asc','sort1': 'date-created','filter-type': 'meeting'}
+
+ begin = None
+ if since > 0:
+ begin = datetime.now()-timedelta(seconds=since)
+ begin = begin.replace(microsecond=0)
+
+ if begin is not None:
+ p['filter-gte-date-created'] = begin.isoformat()
+
+ r = api.request('report-bulk-consolidated-transactions',p,True)
+ for tx in r.et.findall(".//row"):
+ try:
+ UserMeetingTransaction.create(acc,tx)
+ except Exception,ex:
+ logging.error(ex)
+
+@periodic_task(run_every=crontab(hour="*", minute="*", day_of_week="*"))
+def import_sessions(since=3700):
+ for acc in ACCluster.objects.all():
+ import_acc_sessions(acc,since) \ No newline at end of file