diff options
Diffstat (limited to 'meetingtools/apps/room')
-rw-r--r-- | meetingtools/apps/room/tasks.py | 22 | ||||
-rw-r--r-- | meetingtools/apps/room/views.py | 11 |
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))) |