diff options
author | Leif Johansson <leifj@sunet.se> | 2010-07-07 15:49:09 +0200 |
---|---|---|
committer | Leif Johansson <leifj@sunet.se> | 2010-07-07 15:49:09 +0200 |
commit | 8e00889fa34467dfecad1cf52acbb67de154a6cf (patch) | |
tree | cef5929fc216bf4844febd24a442092323e993b6 | |
parent | d7fd23e48835a8641f748d54cef3207021c46ac6 (diff) |
basic group views
-rw-r--r-- | coip/apps/name/views.py | 37 | ||||
-rw-r--r-- | coip/urls.py | 5 | ||||
-rw-r--r-- | templates/apps/name/name.html | 29 |
3 files changed, 70 insertions, 1 deletions
diff --git a/coip/apps/name/views.py b/coip/apps/name/views.py index e69de29..9e8d74c 100644 --- a/coip/apps/name/views.py +++ b/coip/apps/name/views.py @@ -0,0 +1,37 @@ +''' +Created on Jul 6, 2010 + +@author: leifj +''' +from coip.apps.name.models import Name, lookup +from django.core.exceptions import ObjectDoesNotExist +from django.http import HttpResponseNotFound, HttpResponseForbidden +from django.contrib.auth.decorators import login_required +from coip.multiresponse import respond_to +from coip.apps.auth.authz import has_permission + +def show(request,name): + if not name: + return HttpResponseNotFound() + + if has_permission(request.user,name,'r'): + memberships = [] + if has_permission(request.user,name,'l'): + memberships = name.memberships + return respond_to(request, {'text/html': 'apps/name/name.html'}, {'name': name, 'memberships': memberships}) + else: + return HttpResponseForbidden() + +@login_required +def show_by_name(request,n): + try: + return show(request,lookup(n)) + except ObjectDoesNotExist: + return HttpResponseNotFound() + +@login_required +def show_by_id(request,id): + try: + return show(request,Name.objects.get(id=id)) + except ObjectDoesNotExist: + return HttpResponseNotFound()
\ No newline at end of file diff --git a/coip/urls.py b/coip/urls.py index eda9440..d2256dd 100644 --- a/coip/urls.py +++ b/coip/urls.py @@ -16,7 +16,10 @@ urlpatterns = patterns('', (r'^accounts/login-federated/$', 'coip.apps.auth.views.accounts_login_federated'), (r'^accounts/logout/$', 'coip.apps.auth.views.logout'), # Profiles and user information - (r'^user/merge/?P<pkey>.+$', 'coip.apps.userprofile.views.merge'), + (r'^user/merge/(?P<pkey>.+)$', 'coip.apps.userprofile.views.merge'), (r'^user/merge$', 'coip.apps.userprofile.views.merge'), (r'^user/home$', 'coip.apps.userprofile.views.home'), + # Names + (r'^name/id/(?P<id>[0-9]+)$', 'coip.apps.name.views.show_by_id'), + (r'^name/(?P<name>[^\/]+)$', 'coip.apps.name.views.show_by_name'), ) diff --git a/templates/apps/name/name.html b/templates/apps/name/name.html new file mode 100644 index 0000000..c601da9 --- /dev/null +++ b/templates/apps/name/name.html @@ -0,0 +1,29 @@ +{% extends "base.html" %} +{% block js %} +<script type="text/javascript"> +$(function() { + $("#members").accordion({ + header: 'h3' + }); +}); +</script> +{% endblock %} +{% block headline %}{{name.shortname}}{% endblock %} +{% block title %}COIP - {{name.shortname}}{% endblock %} +{% block main %} +<div class="infopanel"> +{{name.shortname}} +{{name.description}} +{{name}} +</div> +<div id="members"> + {% for m in memberships.all %} + <div id="m{{m.id}}" class="{{m.status}}"> + <h3 style="padding-left: 20px;">{{m.user}}</h3> + <div> + {{m.user}} has been a member of {{m.name.shortname}} since {{m.timecreated}}<br/> + </div> + </div> + {% endfor %} +</div> +{% endblock %}
\ No newline at end of file |