diff --git a/media/css/seahub.css b/media/css/seahub.css
index 37282302e4..c5c4c60861 100644
--- a/media/css/seahub.css
+++ b/media/css/seahub.css
@@ -1677,6 +1677,14 @@ textarea:-moz-placeholder {/* for FF */
width:5em;
color:#666;
}
+.group .fast .a {
+ font-size:18px;
+ color:#FEAC74;
+ margin-right:5px;
+}
+.group .fast .a:hover {
+ text-decoration:none;
+}
.ru .group .item-name,
.de .group .item-name,
.it .group .item-name {
diff --git a/seahub/group/templates/group/groups.html b/seahub/group/templates/group/groups.html
index 66caf946e6..20105c8f65 100644
--- a/seahub/group/templates/group/groups.html
+++ b/seahub/group/templates/group/groups.html
@@ -15,7 +15,7 @@
{% block extra_script %}
-{% endblock %}
diff --git a/seahub/group/urls.py b/seahub/group/urls.py
index a77c8e9100..d7ecdff26a 100644
--- a/seahub/group/urls.py
+++ b/seahub/group/urls.py
@@ -7,7 +7,7 @@ from views import group_info, group_members, group_member_operations, group_add_
group_wiki_page_new, group_wiki_page_edit, group_wiki_pages, \
group_wiki_page_delete, group_remove, group_dismiss, group_quit, \
group_make_public, group_revoke_public, group_transfer, group_toggle_modules, \
- group_add_discussion, group_rename
+ group_add_discussion, group_rename, group_add
urlpatterns = patterns('',
url(r'^(?P\d+)/$', group_info, name='group_info'),
@@ -40,6 +40,7 @@ urlpatterns = patterns('',
url(r'^joinrequest/(?P[\d]+)/$', group_joinrequest, name='group_joinrequest'),
url(r'^(?P\d+)/modules/toggle/$', group_toggle_modules, name='group_toggle_modules'),
url(r'^(?P\d+)/discussion/add/$', group_add_discussion, name='group_add_discussion'),
+ url(r'^add/$', group_add, name='group_add'),
)
import seahub.settings as settings
diff --git a/seahub/group/views.py b/seahub/group/views.py
index c7a945d235..d056062e74 100644
--- a/seahub/group/views.py
+++ b/seahub/group/views.py
@@ -125,57 +125,64 @@ def group_check(func):
return _decorated
+@login_required
+def group_add(request):
+
+ if not request.is_ajax() or request.method != 'POST':
+ raise Http404
+
+ username = request.user.username
+ result = {}
+ content_type = 'application/json; charset=utf-8'
+
+ # check plan
+ num_of_groups = getattr(request.user, 'num_of_groups', -1)
+ if num_of_groups > 0:
+ current_groups = len(get_personal_groups_by_user(username))
+ if current_groups > num_of_groups:
+ result['error'] = _(u'You can only create %d groups.Upgrade account.') % num_of_groups
+ return HttpResponse(json.dumps(result), status=500,
+ content_type=content_type)
+
+ form = GroupAddForm(request.POST)
+ if form.is_valid():
+ group_name = form.cleaned_data['group_name']
+
+ # Check whether group name is duplicated.
+ if request.cloud_mode:
+ checked_groups = get_personal_groups_by_user(username)
+ else:
+ checked_groups = get_personal_groups(-1, -1)
+ for g in checked_groups:
+ if g.group_name == group_name:
+ result['error'] = _(u'There is already a group with that name.')
+ return HttpResponse(json.dumps(result), status=400,
+ content_type=content_type)
+
+ # Group name is valid, create that group.
+ try:
+ ccnet_threaded_rpc.create_group(group_name.encode('utf-8'),
+ username)
+ return HttpResponse(json.dumps({'success': True}),
+ content_type=content_type)
+ except SearpcError, e:
+ result['error'] = _(e.msg)
+ return HttpResponse(json.dumps(result), status=500,
+ content_type=content_type)
+ else:
+ return HttpResponseBadRequest(json.dumps(form.errors),
+ content_type=content_type)
+
@login_required
def group_list(request):
username = request.user.username
-
- if request.method == 'POST':
- """
- Add a new group.
- """
- result = {}
- content_type = 'application/json; charset=utf-8'
-
- # check plan
- num_of_groups = getattr(request.user, 'num_of_groups', -1)
- if num_of_groups > 0:
- current_groups = len(get_personal_groups_by_user(username))
- if current_groups > num_of_groups:
- result['error'] = _(u'You can only create %d groups.Upgrade account.') % num_of_groups
- return HttpResponse(json.dumps(result), status=500,
- content_type=content_type)
-
- form = GroupAddForm(request.POST)
- if form.is_valid():
- group_name = form.cleaned_data['group_name']
-
- # Check whether group name is duplicated.
- if request.cloud_mode:
- checked_groups = get_personal_groups_by_user(username)
- else:
- checked_groups = get_personal_groups(-1, -1)
- for g in checked_groups:
- if g.group_name == group_name:
- result['error'] = _(u'There is already a group with that name.')
- return HttpResponse(json.dumps(result), status=400,
- content_type=content_type)
-
- # Group name is valid, create that group.
- try:
- ccnet_threaded_rpc.create_group(group_name.encode('utf-8'),
- username)
- return HttpResponse(json.dumps({'success': True}),
- content_type=content_type)
- except SearpcError, e:
- result['error'] = _(e.msg)
- return HttpResponse(json.dumps(result), status=500,
- content_type=content_type)
- else:
- return HttpResponseBadRequest(json.dumps(form.errors),
- content_type=content_type)
-
- ### GET ###
joined_groups = get_personal_groups_by_user(username)
+ for group in joined_groups:
+ mods_enabled = get_enabled_mods_by_group(group.id)
+ if 'group wiki' in mods_enabled:
+ group.wiki_enabled = True
+ else:
+ group.wiki_enabled = False
return render_to_response('group/groups.html', {
'joined_groups': joined_groups,