summaryrefslogtreecommitdiff
path: root/meetingtools/apps/room
diff options
context:
space:
mode:
Diffstat (limited to 'meetingtools/apps/room')
-rw-r--r--meetingtools/apps/room/tasks.py22
-rw-r--r--meetingtools/apps/room/views.py11
2 files changed, 32 insertions, 1 deletions
diff --git a/meetingtools/apps/room/tasks.py b/meetingtools/apps/room/tasks.py
index f491afc..6c4e86b 100644
--- a/meetingtools/apps/room/tasks.py
+++ b/meetingtools/apps/room/tasks.py
@@ -5,6 +5,7 @@ Created on Jan 18, 2012
'''
from celery.task import periodic_task,task
from celery.schedules import crontab
+from apps.room.views import user_meeting_folder
from meetingtools.apps.sco.models import get_sco
from meetingtools.apps.cluster.models import ACCluster
from meetingtools.ac import ac_api_client
@@ -153,7 +154,26 @@ def _import_one_room(acc,api,row):
else:
if room is not None:
room.unlock()
-
+
+
+def import_user_rooms(api, user):
+ mf_sco_id = user_meeting_folder(user, api)
+ if mf_sco_id > 0:
+ r = api.request('sco_contents', {'filter-type': 'meeting', 'sco_id': mf_sco_id})
+ nr = 0
+ ne = 0
+ for row in r.et.xpath("//sco"):
+ try:
+ _import_one_room(acc, api, row)
+ nr += 1
+ except Exception, ex:
+ logging.error(ex)
+ ne += 1
+
+ logging.info("%s: Imported %d rooms and got %d errors" % (acc, nr, ne))
+ else:
+ logging.warning("No user meetings folder found for %s" % user.username)
+
def import_acc(acc,since=0):
with ac_api_client(acc) as api:
r = None
diff --git a/meetingtools/apps/room/views.py b/meetingtools/apps/room/views.py
index 5219061..ea8b0fc 100644
--- a/meetingtools/apps/room/views.py
+++ b/meetingtools/apps/room/views.py
@@ -33,6 +33,7 @@ import iso8601
from celery.execute import send_task
from meetingtools.apps.room.tasks import start_user_counts_poll
+
def _user_meeting_folder(request,acc):
if not session(request,'my_meetings_sco_id'):
with ac_api_client(acc) as api:
@@ -45,6 +46,15 @@ def _user_meeting_folder(request,acc):
return session(request,'my_meetings_sco_id')
+
+def user_meeting_folder(user,api):
+ userid = user.username
+ folders = api.request('sco-search-by-field',
+ {'filter-type': 'folder', 'field': 'name', 'query': userid}).et.xpath('//sco[folder-name="User Meetings"]')
+ logging.debug("user meetings folder: "+pformat(folders))
+ #folder = next((f for f in folders if f.findtext('.//folder-name') == 'User Meetings'), None)
+ return folders[0].get('sco-id')
+
def _user_templates(request,acc,folder_sco):
templates = []
with ac_api_client(acc) as api:
@@ -63,6 +73,7 @@ def _user_templates(request,acc,folder_sco):
return templates
+
def _find_current_session(session_info):
for r in session_info.et.xpath('//row'):
#logging.debug(pformat(etree.tostring(r)))