diff options
-rw-r--r-- | src/meetingtools/ac/api.py | 13 | ||||
-rw-r--r-- | src/meetingtools/apps/auth/views.py | 13 | ||||
-rw-r--r-- | src/templates/apps/room/list.html | 22 |
3 files changed, 37 insertions, 11 deletions
diff --git a/src/meetingtools/ac/api.py b/src/meetingtools/ac/api.py index 59aa2d8..c26cd29 100644 --- a/src/meetingtools/ac/api.py +++ b/src/meetingtools/ac/api.py @@ -14,6 +14,7 @@ from lxml import etree import pprint from meetingtools.site_logging import logger import lxml +from django.http import HttpResponseRedirect class ACPException(Exception): def __init__(self, value): @@ -63,12 +64,13 @@ def _getset(dict,key,value=None): class ACPClient(): - def __init__(self,url,username=None,password=None): + def __init__(self,url,username=None,password=None,cache=True): self.url = url self.session = None if username and password: self.login(username,password) - self._cache = {'login':{},'group':{}} + if cache: + self._cache = {'login':{},'group':{}} def request(self,method,p={},raise_error=False): if self.session: @@ -99,10 +101,17 @@ class ACPClient(): return r; + def redirect_to(self,url): + if self.session: + return HttpResponseRedirect("%s?BREEZESESSION=%s" % (url,self.session)) + else: + return HttpResponseRedirect(url) + def login(self,username,password): result = self.request('login',{'login':username,'password':password}) if result.is_error(): raise result.exception() + return result def find_or_create_principal(self,key,value,type,dict): if not self._cache.has_key(type): diff --git a/src/meetingtools/apps/auth/views.py b/src/meetingtools/apps/auth/views.py index 8af2e1a..b1f9567 100644 --- a/src/meetingtools/apps/auth/views.py +++ b/src/meetingtools/apps/auth/views.py @@ -16,6 +16,7 @@ from django.shortcuts import render_to_response from django.contrib import auth from django_co_connector.models import co_import_from_request, add_member,\ remove_member +import random, string def meta(request,attr): v = request.META.get(attr) @@ -60,8 +61,7 @@ def login(request): def join_group(group,**kwargs): user = kwargs['user'] acc = _acc_for_user(user) - connect_api = ac_api(acc) - + connect_api = ac_api(acc) principal = connect_api.find_principal("login", user.username, "user") if principal: gp = connect_api.find_group(group.name) @@ -83,6 +83,11 @@ def leave_group(group,**kwargs): add_member.connect(join_group,sender=Group) remove_member.connect(leave_group,sender=Group) +def _random_key(length=20): + rg = random.SystemRandom() + alphabet = string.letters + string.digits + return str().join(rg.choice(alphabet) for _ in range(length)) + def accounts_login_federated(request): if request.user.is_authenticated(): profile,created = UserProfile.objects.get_or_create(user=request.user) @@ -127,12 +132,16 @@ def accounts_login_federated(request): acc = _acc_for_user(request.user) connect_api = ac_api_client(request, acc) # make sure the principal is created before shooting off + key = _random_key() + request.session['ac_key'] = key principal = connect_api.find_or_create_principal("login", request.user.username, "user", {'type': "user", 'has-children': "0", 'first-name':fn, 'last-name':ln, 'email':mail, + 'send-email': 0, + 'password': key, 'login':request.user.username, 'ext-login':request.user.username}) diff --git a/src/templates/apps/room/list.html b/src/templates/apps/room/list.html index 2ec375e..6c39e12 100644 --- a/src/templates/apps/room/list.html +++ b/src/templates/apps/room/list.html @@ -10,7 +10,8 @@ event: "click", collapsible: true, navigation: true, - animated: true + animated: true, + autoHeight: false }); {% endblock %} {% block content %} @@ -21,12 +22,19 @@ <div id="{{r.id}}"> <h3 class="listheader">{{r.name}}</h3> <div> - <p>Created by {{r.creator}} {{r.timecreated|datehumanize}}.</p> - <p>Meeting room URL: <a href="{{r|roomurl}}">{{r|roomurl}}</a></p> - <ul class="ilist"> - <!-- li><div class="button"><a href="{% prefix %}/room/{{r.id}}/modify">Modify Room</a></li --> - <li><div class="button"><a href="{% prefix %}/room/{{r.id}}/delete">Delete Room</a></li> - </ul> + <ul> + <li>Created by {{r.creator}} {{r.timecreated|datehumanize}}.</li> + {% if r.lastvisited %}<li>Last visited {{r.lastvisited|datehumanize}}{% if r.user_count %}when there was {{r.user_count}} user{{r.user_count|pluralize}} in the room{%endif%}.</li>{%endif%} + <li>Meeting room URL: <a href="{{r|roomurl}}">{{r|roomurl}}<span style="vertical-align: bottom;" class="ui-icon ui-icon-extlink"></span></a></li> + </ul> + <br/> + {% if r.description %} + <p class="ui-widget">{{r.description|safe}}</p> + {% endif %} + <ul class="ilist"> + <!-- li><div class="button"><a href="{% prefix %}/room/{{r.id}}/modify">Modify Room</a></li --> + <li><div class="button"><a href="{% prefix %}/room/{{r.id}}/delete">Delete Room</a></li> + </ul> </div> </div> {% endfor %} |