diff --git a/templates/groups.html b/templates/groups.html
new file mode 100644
index 0000000000..92e44bfba4
--- /dev/null
+++ b/templates/groups.html
@@ -0,0 +1,25 @@
+{% extends "base.html" %}
+
+{% block title %}Groups{% endblock %}
+
+{% block left_panel %}
+
+{% endblock %}
+
+{% block right_panel %}
+
+
+ Name |
+ ID |
+ Maintainer |
+
+ {% for group in groups %}
+
+ {{ group.props.name }} |
+ {{ group.props.id }} |
+ {{ group.props.maintainers }} |
+
+ {% endfor %}
+
+
+{% endblock %}
diff --git a/thirdpart/seaserv/__init__.py b/thirdpart/seaserv/__init__.py
index 9d23115071..c40c010004 100644
--- a/thirdpart/seaserv/__init__.py
+++ b/thirdpart/seaserv/__init__.py
@@ -1,7 +1,7 @@
import service
from service import cclient, ccnet_rpc, seamsg_rpc
-from service import translate_peerid, translate_msgtime
+from service import translate_peerid, translate_msgtime, translate_groupid
from service import get_peers_by_role
from service import get_groups, get_group
diff --git a/thirdpart/seaserv/service.py b/thirdpart/seaserv/service.py
index a4c03836be..657dce3da5 100644
--- a/thirdpart/seaserv/service.py
+++ b/thirdpart/seaserv/service.py
@@ -31,10 +31,30 @@ def translate_peerid(peer_id):
except:
peer = ccnet_rpc.get_peer(peer_id)
if peer:
- peer_db['peer_id'] = peer
+ peer_db[peer_id] = peer
else:
- return peer_id
- return peer.props.name + "(" + peer_id[:4] + ")"
+ return peer_id[:8]
+ if peer.props.name:
+ return peer.props.name + "(" + peer_id[:4] + ")"
+ else:
+ return peer_id[:8]
+
+group_db = {}
+
+def translate_groupid(group_id):
+ try:
+ group = group_db[group_id]
+ except:
+ group = ccnet_rpc.get_group(group_id)
+ if group:
+ group_db[group_id] = group
+ else:
+ return group_id[:8]
+ if group.props.name:
+ return group.props.name + "(" + group_id[:4] + ")"
+ else:
+ return group_id[:8]
+
def translate_msgtime(msgtime):
return datetime.fromtimestamp(
diff --git a/urls.py b/urls.py
index a25641e03e..2240c826e1 100644
--- a/urls.py
+++ b/urls.py
@@ -1,6 +1,6 @@
from django.conf.urls.defaults import *
from django.conf import settings
-from seahub.views import root, home, peers
+from seahub.views import root, home, peers, groups
# Uncomment the next two lines to enable the admin:
# from django.contrib import admin
@@ -20,6 +20,7 @@ urlpatterns = patterns('',
(r'^$', root),
(r'^home/$', home),
(r'^peers/$', peers),
+ (r'^groups/$', groups),
)
if settings.DEBUG:
diff --git a/views.py b/views.py
index d99106fd37..7d0671838f 100644
--- a/views.py
+++ b/views.py
@@ -3,15 +3,17 @@ from django.shortcuts import render_to_response
from django.core.urlresolvers import reverse
from django.template import RequestContext
-from seaserv import cclient, ccnet_rpc
+from seaserv import cclient, ccnet_rpc, get_groups
def root(request):
return HttpResponseRedirect(reverse(home))
+
def home(request):
return render_to_response('home.html', {
}, context_instance=RequestContext(request))
+
def peers(request):
peer_type = request.REQUEST.get('type', 'all')
peer_ids = ccnet_rpc.list_peers()
@@ -30,3 +32,11 @@ def peers(request):
return render_to_response('peers.html', {
'peers': peers,
}, context_instance=RequestContext(request))
+
+
+def groups(request):
+ groups = get_groups()
+ return render_to_response('groups.html', {
+ 'groups': groups,
+ }, context_instance=RequestContext(request))
+