summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLeif Johansson <leifj@sunet.se>2010-07-07 15:49:09 +0200
committerLeif Johansson <leifj@sunet.se>2010-07-07 15:49:09 +0200
commit8e00889fa34467dfecad1cf52acbb67de154a6cf (patch)
treecef5929fc216bf4844febd24a442092323e993b6
parentd7fd23e48835a8641f748d54cef3207021c46ac6 (diff)
basic group views
-rw-r--r--coip/apps/name/views.py37
-rw-r--r--coip/urls.py5
-rw-r--r--templates/apps/name/name.html29
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