mirror of
https://github.com/haiwen/seahub.git
synced 2025-09-10 03:11:07 +00:00
Added group rename feature
This commit is contained in:
@@ -6,7 +6,7 @@ from django.conf import settings
|
|||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import ugettext_lazy as _
|
||||||
from seaserv import is_valid_filename
|
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):
|
class MessageForm(forms.Form):
|
||||||
message = forms.CharField(max_length=2048)
|
message = forms.CharField(max_length=2048)
|
||||||
|
@@ -23,6 +23,7 @@
|
|||||||
<div class="info-item">
|
<div class="info-item">
|
||||||
<h3 class="info-item-top">{% trans "Operations" %}</h3>
|
<h3 class="info-item-top">{% trans "Operations" %}</h3>
|
||||||
<ul class="info-item-bottom op-list">
|
<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>
|
<li><a id="group-dismiss" href="#" data-url="{% url 'group_dismiss' group.id %}">{% trans "Dismiss" %}</a></li>
|
||||||
{% if group.is_pub %}
|
{% if group.is_pub %}
|
||||||
<li><a href="{% url 'group_revoke_pub' group.id %}">{% trans "Revoke Public" %}</a></li>
|
<li><a href="{% url 'group_revoke_pub' group.id %}">{% trans "Revoke Public" %}</a></li>
|
||||||
@@ -91,6 +92,14 @@
|
|||||||
<input type="submit" value="{% trans "Submit"%}" />
|
<input type="submit" value="{% trans "Submit"%}" />
|
||||||
</form>
|
</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/grpmember_add_form.html' %} {# for member/admin add #}
|
||||||
{% include 'group/modules_toggle_form.html' %}
|
{% 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" %}
|
{% include "group/modules_toggle_js.html" %}
|
||||||
</script>
|
</script>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
@@ -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_new, group_wiki_page_edit, group_wiki_pages, \
|
||||||
group_wiki_page_delete, group_remove, group_dismiss, group_quit, \
|
group_wiki_page_delete, group_remove, group_dismiss, group_quit, \
|
||||||
group_make_public, group_revoke_public, group_transfer, group_toggle_modules, \
|
group_make_public, group_revoke_public, group_transfer, group_toggle_modules, \
|
||||||
group_add_discussion
|
group_add_discussion, group_rename
|
||||||
|
|
||||||
urlpatterns = patterns('',
|
urlpatterns = patterns('',
|
||||||
url(r'^(?P<group_id>\d+)/$', group_info, name='group_info'),
|
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+)/manage/$', group_manage, name='group_manage'),
|
||||||
url(r'^(?P<group_id>\d+)/remove/$', group_remove, name='group_remove'),
|
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+)/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+)/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+)/make_pub/$', group_make_public, name='group_make_pub'),
|
||||||
url(r'^(?P<group_id>\d+)/revoke_pub/$', group_revoke_public, name='group_revoke_pub'),
|
url(r'^(?P<group_id>\d+)/revoke_pub/$', group_revoke_public, name='group_revoke_pub'),
|
||||||
|
13
seahub/group/utils.py
Normal file
13
seahub/group/utils.py
Normal 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)
|
||||||
|
|
@@ -42,6 +42,7 @@ from seahub.base.decorators import sys_staff_required
|
|||||||
from seahub.base.models import FileDiscuss, FileContributors
|
from seahub.base.models import FileDiscuss, FileContributors
|
||||||
from seahub.contacts.models import Contact
|
from seahub.contacts.models import Contact
|
||||||
from seahub.contacts.signals import mail_sended
|
from seahub.contacts.signals import mail_sended
|
||||||
|
from seahub.group.utils import validate_group_name
|
||||||
from seahub.notifications.models import UserNotification
|
from seahub.notifications.models import UserNotification
|
||||||
from seahub.wiki import get_group_wiki_repo, get_group_wiki_page, convert_wiki_link,\
|
from seahub.wiki import get_group_wiki_repo, get_group_wiki_page, convert_wiki_link,\
|
||||||
get_wiki_pages
|
get_wiki_pages
|
||||||
@@ -234,6 +235,26 @@ def group_dismiss(request, group_id):
|
|||||||
|
|
||||||
return HttpResponseRedirect(reverse('group_list'))
|
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
|
@login_required
|
||||||
@group_staff_required
|
@group_staff_required
|
||||||
def group_transfer(request, group_id):
|
def group_transfer(request, group_id):
|
||||||
|
@@ -171,14 +171,6 @@ def normalize_cache_key(value, prefix=None):
|
|||||||
key = value if prefix is None else prefix + value
|
key = value if prefix is None else prefix + value
|
||||||
return urlquote(key)
|
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):
|
def get_repo_last_modify(repo):
|
||||||
""" Get last modification time for a repo.
|
""" Get last modification time for a repo.
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user