1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-08-02 07:47:32 +00:00

Merge pull request #1176 from haiwen/fix-group-transfer

Fix group transfer
This commit is contained in:
Daniel Pan 2016-05-06 15:09:04 +08:00
commit 45a634b3be
7 changed files with 34 additions and 8 deletions

View File

@ -3346,6 +3346,10 @@ img.thumbnail {
#group-discussions .popover-con {
padding:0 0;
}
.group-admin-txt {
font-size:12px;
color:#888;
}
/****** grid view *****/
/* view mode */
.switch-mode {

View File

@ -10,7 +10,7 @@ from rest_framework.views import APIView
from rest_framework import status
import seaserv
from seaserv import seafile_api
from seaserv import seafile_api, ccnet_api
from pysearpc import SearpcError
from seahub.api2.utils import api_error
@ -256,12 +256,13 @@ class Group(APIView):
# transfer a group
if not is_group_member(group_id, new_owner):
seaserv.ccnet_threaded_rpc.group_add_member(group_id, username, new_owner)
ccnet_api.group_add_member(group_id, username, new_owner)
if not is_group_admin(group_id, new_owner):
seaserv.ccnet_threaded_rpc.group_set_admin(group_id, new_owner)
ccnet_api.group_set_admin(group_id, new_owner)
seaserv.ccnet_threaded_rpc.set_group_creator(group_id, new_owner)
ccnet_api.set_group_creator(group_id, new_owner)
ccnet_api.group_unset_admin(group_id, username)
except SearpcError as e:
logger.error(e)

View File

@ -986,7 +986,13 @@
<script type="text/template" id="group-member-tmpl">
<img src="<%= avatar_url %>" alt="" width="32" class="avatar-circle fleft" />
<div class="txt">
<p class="txt-item ellipsis" title="<%- name %>"><%- name %></p>
<p class="txt-item ellipsis" title="<%- name %>"><%- name %>
<% if (is_owner) { %>
<span class="group-admin-txt">{% trans "owner" %}</span>
<% } else if (is_admin) { %>
<span class="group-admin-txt">{% trans "admin" %}</span>
<% } %>
</p>
<p class="txt-item ellipsis" title="<%- contact_email %>"><%- contact_email %></p>
</div>
</script>

View File

@ -18,11 +18,16 @@ define([
'click': 'visitMemberProfile'
},
initialize: function() {
initialize: function(options) {
this.is_owner = options.is_owner;
},
render: function() {
this.$el.html(this.template(this.model.attributes));
var obj = {
is_owner: this.is_owner,
};
$.extend(obj, this.model.attributes);
this.$el.html(this.template(obj));
return this;
},

View File

@ -29,7 +29,13 @@ define([
},
addOne: function(item, collection, options) {
var is_owner = false;
if (item.get('email') === this.groupView.group.owner) {
is_owner = true;
}
console.log(this.groupView.group.owner + " " + is_owner);
var view = new ItemView({
is_owner: is_owner,
model: item
});
this.$listContainer.append(view.render().el);

View File

@ -160,7 +160,7 @@ define([
if (!email) {
return false;
}
if (email == _this.group.owner) {
if (email == _this.groupView.group.owner) {
return false;
}
@ -179,6 +179,7 @@ define([
},
success: function() {
// after the transfer, the former owner becomes a common admin of the group.
Common.feedback(gettext("Successfully transferred the group. You are now a normal member of the group."), 'success');
$.modal.close();
},
error: function(xhr) {

View File

@ -124,7 +124,10 @@ class GroupsTest(BaseTestCase):
self.assertEqual(200, resp.status_code)
json_resp = json.loads(resp.content)
assert json_resp['owner'] == new_creator
assert new_creator in json_resp['admins']
assert self.user.email not in json_resp['admins']
def test_can_not_transfer_group_to_group_owner(self):
new_creator = self.user.email