1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-09-08 10:22:46 +00:00

Added group rename feature

This commit is contained in:
zhengxie
2013-12-02 15:04:23 +08:00
parent 8bf8b56266
commit addfd0b47c
6 changed files with 57 additions and 10 deletions

View File

@@ -6,7 +6,7 @@ from django.conf import settings
from django.utils.translation import ugettext_lazy as _
from seaserv import is_valid_filename
from seahub.utils import validate_group_name
from seahub.group.utils import validate_group_name
class MessageForm(forms.Form):
message = forms.CharField(max_length=2048)

View File

@@ -23,6 +23,7 @@
<div class="info-item">
<h3 class="info-item-top">{% trans "Operations" %}</h3>
<ul class="info-item-bottom op-list">
<li><a id="group-rename" href="#" data-url="{% url 'group_rename' group.id %}">{% trans "Rename" %}</a></li>
<li><a id="group-dismiss" href="#" data-url="{% url 'group_dismiss' group.id %}">{% trans "Dismiss" %}</a></li>
{% if group.is_pub %}
<li><a href="{% url 'group_revoke_pub' group.id %}">{% trans "Revoke Public" %}</a></li>
@@ -91,6 +92,14 @@
<input type="submit" value="{% trans "Submit"%}" />
</form>
<form id="group-rename-form" method="post" action="{% url 'group_rename' group.id %}" class="hide">{% csrf_token %}
<h3>{% trans "Rename Group To"%}</h3>
<input type="text" name="new_name" value="" class="input" />
<br />
<p class="error hide"></p>
<input type="submit" value="{% trans "Submit"%}" />
</form>
{% include 'group/grpmember_add_form.html' %} {# for member/admin add #}
{% include 'group/modules_toggle_form.html' %}
@@ -127,6 +136,17 @@ $('#group-transfer-form').submit(function() {
}
});
$('#group-rename').click(function() {
$('#group-rename-form').modal({appendTo: "#main", focus:false});
return false;
});
$('#group-rename-form').submit(function() {
if (!$.trim($('[name="new_name"]', $(this)).val())) {
return false;
}
});
{% include "group/modules_toggle_js.html" %}
</script>
{% endblock %}

View File

@@ -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_add_discussion, group_rename
urlpatterns = patterns('',
url(r'^(?P<group_id>\d+)/$', group_info, name='group_info'),
@@ -24,6 +24,7 @@ urlpatterns = patterns('',
url(r'^(?P<group_id>\d+)/manage/$', group_manage, name='group_manage'),
url(r'^(?P<group_id>\d+)/remove/$', group_remove, name='group_remove'),
url(r'^(?P<group_id>\d+)/dismiss/$', group_dismiss, name='group_dismiss'),
url(r'^(?P<group_id>\d+)/rename/$', group_rename, name='group_rename'),
url(r'^(?P<group_id>\d+)/transfer/$', group_transfer, name='group_transfer'),
url(r'^(?P<group_id>\d+)/make_pub/$', group_make_public, name='group_make_pub'),
url(r'^(?P<group_id>\d+)/revoke_pub/$', group_revoke_public, name='group_revoke_pub'),

13
seahub/group/utils.py Normal file
View File

@@ -0,0 +1,13 @@
# -*- coding: utf-8 -*-
import re
def validate_group_name(group_name):
"""
Check whether group name is valid.
A valid group name only contains alphanumeric character, and the length
should less than 255.
"""
if len(group_name) > 255:
return False
return re.match('^\w+$', group_name, re.U)

View File

@@ -42,6 +42,7 @@ from seahub.base.decorators import sys_staff_required
from seahub.base.models import FileDiscuss, FileContributors
from seahub.contacts.models import Contact
from seahub.contacts.signals import mail_sended
from seahub.group.utils import validate_group_name
from seahub.notifications.models import UserNotification
from seahub.wiki import get_group_wiki_repo, get_group_wiki_page, convert_wiki_link,\
get_wiki_pages
@@ -234,6 +235,26 @@ def group_dismiss(request, group_id):
return HttpResponseRedirect(reverse('group_list'))
@login_required
@group_staff_required
def group_rename(request, group_id):
"""Rename a group.
"""
if request.method != 'POST':
raise Http404
new_name = request.POST.get('new_name', '')
if validate_group_name(new_name):
ccnet_threaded_rpc.set_group_name(int(group_id), new_name)
messages.success(request, _('Successfully renamed group to "%s".') % new_name)
else:
messages.error(request, _('Failed to rename group, group name can only contain letters, numbers or underscore'))
next = request.META.get('HTTP_REFERER', None)
if not next:
next = SITE_ROOT
return HttpResponseRedirect(next)
@login_required
@group_staff_required
def group_transfer(request, group_id):

View File

@@ -171,14 +171,6 @@ def normalize_cache_key(value, prefix=None):
key = value if prefix is None else prefix + value
return urlquote(key)
def validate_group_name(group_name):
"""
Check whether group name is valid.
A valid group name only contains alphanumeric character.
"""
return re.match('^\w+$', group_name, re.U)
def get_repo_last_modify(repo):
""" Get last modification time for a repo.