From b16b7ece183fa1a4143c1ff224b5e134d0641a02 Mon Sep 17 00:00:00 2001 From: xiez Date: Sat, 22 Sep 2012 17:46:56 +0800 Subject: [PATCH] Allow share repo to unjoined group --- api/views.py | 4 +- group/locale/zh_CN/LC_MESSAGES/django.mo | Bin 1052 -> 1055 bytes group/locale/zh_CN/LC_MESSAGES/django.po | 4 +- group/views.py | 125 +++++++++----------- share/views.py | 26 ++-- templates/myhome.html | 6 - templates/snippets/myhome_extra_script.html | 2 +- thirdpart/seaserv/__init__.py | 3 +- thirdpart/seaserv/service.py | 33 ++++-- urls.py | 6 +- views.py | 21 +--- 11 files changed, 101 insertions(+), 129 deletions(-) diff --git a/api/views.py b/api/views.py index 6818c75d38..f7dd402597 100644 --- a/api/views.py +++ b/api/views.py @@ -32,7 +32,7 @@ from pysearpc import SearpcError from seaserv import ccnet_rpc, ccnet_threaded_rpc, get_repos, \ get_repo, get_commits, get_branches, \ seafserv_threaded_rpc, seafserv_rpc, get_binding_peerids, \ - check_group_staff, check_permission, get_personal_groups, get_group_repos + check_group_staff, check_permission, get_personal_groups_by_user, get_group_repos from seahub.utils import list_to_string, \ get_httpserver_root, gen_token, \ @@ -290,7 +290,7 @@ class ReposView(ResponseMixin, View): } repos_json.append(repo) - groups = get_personal_groups(email) + groups = get_personal_groups_by_user(email) for group in groups: g_repos = get_group_repos(group.id, email) calculate_repo_info (g_repos, email) diff --git a/group/locale/zh_CN/LC_MESSAGES/django.mo b/group/locale/zh_CN/LC_MESSAGES/django.mo index ddace9036a36a6ea9ddf41cbe9b1e9f5952501fa..6dd8c371087288750821e2287b04ab99ab222861 100644 GIT binary patch delta 103 zcmbQkF`r{Xi77t=1A`kg1A{b>4g=EaK)MJ>3jyg_Kw1k(uLaVIK>7xdRsqt#Hm+R4 uG&z{LTkh$E-sj6Vyln4%x}^90o}L%$w*%SFrfqn!Z}QXDrISB1YXSgnY9bu~ delta 100 zcmbQwF^6M9iK!?91A`kg1A{b>jseo@K)M1*3jyf`Kw1k(ZwAs5K>8k#RsquAH?Ca5 o#JZvX`R' - if (to_email.split(' ')[0].find('@') == -1): + if to_email.find('@') == -1: ''' Share repo to group ''' # TODO: if we know group id, then we can simplly call group_share_repo - if len(to_email.split(' ')) < 2: - msg = u'共享给 %s 失败。' % to_email - messages.add_message(request, messages.ERROR, msg) - continue - - group_name = to_email.split(' ')[0] - group_creator = to_email.split(' ')[1] - # get all the groups the user joined - groups = get_personal_groups(request.user.username) + group_name = to_email + + # get all personal groups + groups = get_personal_groups(-1, -1) find = False for group in groups: - # for every group that user joined, if group name and - # group creator matchs, then has find the group - if group.props.group_name == group_name and \ - group_creator.find(group.props.creator_name) >= 0: + # for every group that user joined, if group name matchs, + # then has find the group + if group.props.group_name == group_name: from seahub.group.views import group_share_repo group_share_repo(request, repo_id, int(group.props.id), from_email, permission) @@ -83,7 +75,7 @@ def share_repo(request): messages.add_message(request, messages.INFO, msg) break if not find: - msg = u'共享到 %s 失败。' % group_name + msg = u'共享到 %s 失败,小组不存在。' % group_name messages.add_message(request, messages.ERROR, msg) else: ''' Share repo to user ''' diff --git a/templates/myhome.html b/templates/myhome.html index a1bb884b50..9b75b53a25 100644 --- a/templates/myhome.html +++ b/templates/myhome.html @@ -30,12 +30,6 @@ {% if grpmsg_reply_list %}
  • {{ grpmsg_reply_list|length }}条小组留言有新回复
  • {% endif %} -{% if new_innerpub_msg %} -
  • 公共页面有新留言
  • -{% endif %} -{% if innerpubmsg_reply_list %} -
  • {{ innerpubmsg_reply_list|length }}条公共留言有新回复
  • -{% endif %} {% if orgmsg_list %}
  • {{ orgmsg_list|length }}条团体消息
  • {% endif %} diff --git a/templates/snippets/myhome_extra_script.html b/templates/snippets/myhome_extra_script.html index 34be0f1172..92b6b5ce7b 100644 --- a/templates/snippets/myhome_extra_script.html +++ b/templates/snippets/myhome_extra_script.html @@ -6,7 +6,7 @@ $(function() { {% endfor %} {% for group in groups %} - share_list.push('{{ group.props.group_name }} <{{ group.props.creator_name }}>'); + share_list.push('{{ group.props.group_name }}'); {% endfor %} $(".repo-share-btn").click(function() { diff --git a/thirdpart/seaserv/__init__.py b/thirdpart/seaserv/__init__.py index d6570ad6a6..48ca2f895b 100644 --- a/thirdpart/seaserv/__init__.py +++ b/thirdpart/seaserv/__init__.py @@ -4,7 +4,8 @@ from service import ccnet_rpc, monitor_rpc, seafserv_rpc, \ seafserv_threaded_rpc, ccnet_threaded_rpc from service import send_command from service import get_emailusers -from service import get_org_groups, get_personal_groups, get_group_repoids, \ +from service import get_org_groups, get_personal_groups_by_user, \ + get_group_repoids, get_personal_groups, \ check_group_staff, remove_group_user, get_group, get_org_id_by_group, \ get_group_members, get_shared_groups_by_repo, is_group_user, \ get_org_group_repos, get_group_repos, get_org_groups_by_user, is_org_group,\ diff --git a/thirdpart/seaserv/service.py b/thirdpart/seaserv/service.py index 5d3318551e..700ea2adb6 100644 --- a/thirdpart/seaserv/service.py +++ b/thirdpart/seaserv/service.py @@ -106,6 +106,26 @@ def get_group(group_id): group = None return group +def get_personal_groups(start, limit): + try: + groups_all = ccnet_threaded_rpc.get_all_groups(start, limit) + except SearpcError: + return [] + return [ x for x in groups_all if not is_org_group(x.id) ] + +def get_personal_groups_by_user(email): + try: + groups_all = ccnet_threaded_rpc.get_groups(email) + except SearpcError: + return [] + + personal_groups = [] + for group in groups_all: + if not is_org_group(group.id): + personal_groups.append(group) + + return personal_groups + # group user def is_group_user(group_id, user): try: @@ -174,19 +194,6 @@ def get_org_groups_by_user(org_id, user): return org_groups -def get_personal_groups(email): - try: - groups_all = ccnet_threaded_rpc.get_groups(email) - except SearpcError: - return [] - - personal_groups = [] - for group in groups_all: - if not is_org_group(group.id): - personal_groups.append(group) - - return personal_groups - # org def create_org(org_name, url_prefix, username): ccnet_threaded_rpc.create_org(org_name, url_prefix, username) diff --git a/urls.py b/urls.py index 35f6b7942e..a393835ecb 100644 --- a/urls.py +++ b/urls.py @@ -5,7 +5,7 @@ from django.views.generic.simple import direct_to_template from seahub.views import * from notifications.views import notification_list from share.views import share_admin -from group.views import GroupListView, DeptGroupListView, ProjGroupListView +from group.views import GroupListView # Uncomment the next two lines to enable the admin: #from django.contrib import admin @@ -90,8 +90,8 @@ urlpatterns = patterns('', (r'^contacts/', include('contacts.urls')), (r'^group/', include('seahub.group.urls')), url(r'^groups/', GroupListView.as_view(), name='group_list'), - url(r'^deptgroups/', DeptGroupListView.as_view(), name='dept_group_list'), - url(r'^projgroups/', ProjGroupListView.as_view(), name='proj_group_list'), + # url(r'^deptgroups/', DeptGroupListView.as_view(), name='dept_group_list'), + # url(r'^projgroups/', ProjGroupListView.as_view(), name='proj_group_list'), (r'^profile/', include('seahub.profile.urls')), ### SeaHub admin ### diff --git a/views.py b/views.py index be8adc6a7f..a685f665d5 100644 --- a/views.py +++ b/views.py @@ -33,8 +33,9 @@ from auth.tokens import default_token_generator from share.models import FileShare from seaserv import ccnet_rpc, ccnet_threaded_rpc, get_repos, get_emailusers, \ get_repo, get_commits, get_branches, is_valid_filename, remove_group_user,\ - seafserv_threaded_rpc, seafserv_rpc, get_binding_peerids, is_inner_pub_repo, \ - check_group_staff, get_personal_groups, is_repo_owner, del_org_group_repo,\ + seafserv_threaded_rpc, seafserv_rpc, get_binding_peerids, is_repo_owner, \ + check_group_staff, get_personal_groups_by_user, is_inner_pub_repo, \ + del_org_group_repo, get_personal_groups, \ get_group, get_shared_groups_by_repo, is_group_user, check_permission, \ list_personal_shared_repos, is_org_group, get_org_id_by_group, is_org_repo,\ list_inner_pub_repos, get_org_groups_by_repo, is_org_repo_owner, \ @@ -758,8 +759,6 @@ def myhome(request): grpmsg_reply_list = [] orgmsg_list = [] notes = UserNotification.objects.filter(to_user=request.user.username) - new_innerpub_msg = False - innerpubmsg_reply_list = [] for n in notes: if n.msg_type == 'group_msg': grp = get_group(n.detail) @@ -770,13 +769,9 @@ def myhome(request): grpmsg_reply_list.append(n.detail) elif n.msg_type == 'org_join_msg': orgmsg_list.append(n.detail) - elif n.msg_type == 'innerpub_msg': - new_innerpub_msg = True - elif n.msg_type == 'innerpubmsg_reply': - innerpubmsg_reply_list.append(n.detail) - # my groups - groups = get_personal_groups(email) + # Get all personal groups used in autocomplete. + groups = get_personal_groups(-1, -1) # get nickname if not Profile.objects.filter(user=request.user.username): @@ -785,10 +780,6 @@ def myhome(request): profile = Profile.objects.filter(user=request.user.username)[0] nickname = profile.nickname - # ctx_dict = {'base_template': 'myhome_base.html', - # 'org_dict': None} - # set_cur_ctx(request, ctx_dict) - return render_to_response('myhome.html', { "myname": email, "nickname": nickname, @@ -801,8 +792,6 @@ def myhome(request): "grpmsg_list": grpmsg_list, "grpmsg_reply_list": grpmsg_reply_list, "orgmsg_list": orgmsg_list, - "new_innerpub_msg": new_innerpub_msg, - "innerpubmsg_reply_list": innerpubmsg_reply_list, }, context_instance=RequestContext(request)) @login_required