diff --git a/plugins/csvn/index.py b/plugins/csvn/index.py index 7578f55cc..65465ff96 100755 --- a/plugins/csvn/index.py +++ b/plugins/csvn/index.py @@ -182,6 +182,21 @@ def userDel(): return 'fail' +def getAllUser(): + svn_auth_file = getServerDir() + '/data/conf/svn_auth_file' + if not os.path.exists(svn_auth_file): + return public.getJson([]) + auth = public.readFile(svn_auth_file) + auth = auth.strip() + auth_list = auth.split("\n") + + ulist = [] + for x in range(len(auth_list)): + tmp = auth_list[x].split(':') + ulist.append(tmp[0]) + return ulist + + def userList(): import math args = getArgs() @@ -194,26 +209,16 @@ def userList(): if 'page_size' in args: page_size = int(args['page_size']) - svn_auth_file = getServerDir() + '/data/conf/svn_auth_file' - if not os.path.exists(svn_auth_file): - return public.getJson([]) + ulist = getAllUser() + ulist_sum = len(ulist) - auth = public.readFile(svn_auth_file) - auth = auth.strip() - auth_list = auth.split("\n") - auth_list_sum = len(auth_list) - ulist = [] - data = {} - for x in range(auth_list_sum): - tmp = auth_list[x].split(':') - ulist.append(tmp[0]) - - page_info = {'count': auth_list_sum, 'p': page, + page_info = {'count': ulist_sum, 'p': page, 'row': 10, 'tojs': 'csvnUserList'} + data = {} data['list'] = public.getPage(page_info) data['page'] = page data['page_size'] = page_size - data['page_count'] = int(math.ceil(auth_list_sum / page_size)) + data['page_count'] = int(math.ceil(ulist_sum / page_size)) start = (page - 1) * page_size data['data'] = ulist[start:start + page_size] @@ -291,6 +296,7 @@ def projectList(): def getAllAclList(): svn_access_file = getServerDir() + '/data/conf/svn_access_file' aData = public.readFile(svn_access_file) + aData = re.sub('#.*', '', aData) aData = aData.strip().split('[')[1:] allAcl = {} for i in range(len(aData)): @@ -304,13 +310,15 @@ def getAllAclList(): for iu in range(len(user)): ulist = user[iu].split('=') utmp = {} - utmp[ulist[0].strip()] = ulist[1].strip() + utmp['user'] = ulist[0].strip() + utmp['acl'] = ulist[1].strip() userAll.append(utmp) allAcl[name] = userAll return allAcl def makeAclFile(content): + # print content svn_access_file = getServerDir() + '/data/conf/svn_access_file' tmp = "\n" for k, v in content.items(): @@ -320,23 +328,64 @@ def makeAclFile(content): tmp += "[/" + k + "]\n" for iv in range(len(v)): - for iik, iiv in v[iv].items(): - tmp += iik + ' = ' + iiv + "\n" + tmp += v[iv]['user'] + ' = ' + v[iv]['acl'] + "\n" tmp += "\n" return public.writeFile(getServerDir() + '/data/conf/svn_access_file.log', tmp) def projectAclList(): - acl = getAllAclList() args = getArgs() - if 'page' in acl: - page = int(args['page']) - makeAclFile(acl) - return public.getJson(acl) + if not 'name' in args: + return 'name missing!' + name = args['name'] + acl = getAllAclList() + + if name in acl: + return public.getJson(acl[name]) + else: + return 'fail' + # makeAclFile(acl) + # return public.getJson(acl) def projectAclAdd(): - pass + args = getArgs() + if not 'uname' in args: + return 'username missing' + if not 'pname' in args: + return 'project name missing' + uname = args['uname'] + pname = args['pname'] + + ulist = getAllUser() + if not uname in ulist: + return uname + " user not exists!" + + acl = getAllAclList() + + if not pname in acl: + return 'project not exists!' + + tmp = acl[pname] + tmp_len = len(tmp) + tmp_acl = {'user': uname, 'acl': 'rw'} + if tmp_len == 0: + acl[pname] = [tmp_acl] + else: + print tmp_len + is_have = False + for x in range(tmp_len): + # print tmp[x], tmp[x]['user'], uname + if tmp[x]['user'] == uname: + is_have = True + return 'fail' + # print acl + if not is_have: + tmp.append(tmp_acl) + acl[pname] = tmp + # print acl + makeAclFile(acl) + return 'ok' def projectAclDel(): @@ -381,5 +430,7 @@ if __name__ == "__main__": print projectAdd() elif func == 'project_acl_list': print projectAclList() + elif func == 'project_acl_add': + print projectAclAdd() else: print 'fail' diff --git a/plugins/csvn/js/csvn.js b/plugins/csvn/js/csvn.js index 40aef00f8..fbe723a24 100755 --- a/plugins/csvn/js/csvn.js +++ b/plugins/csvn/js/csvn.js @@ -1,5 +1,14 @@ pluginService('csvn'); +function csvnPost(method,args,callback){ + var loadT = layer.msg('正在获取...', { icon: 16, time: 0, shade: 0.3 }); + $.post('/plugins/run', {name:'csvn', func:method, args:JSON.stringify(args)}, function(data) { + layer.close(loadT); + if(typeof(callback) == 'function'){ + callback(data); + } + },'json'); +} function csvnUserList(page) { @@ -7,21 +16,18 @@ function csvnUserList(page) { page = 1; } - var loadT = layer.msg('正在获取...', { icon: 16, time: 0, shade: 0.3 }); - _data = {}; + var _data = {}; _data['page'] = page; _data['page_size'] = 10; - $.post('/plugins/run', {name:'csvn', func:'user_list', args:JSON.stringify(_data)}, function(data) { - layer.close(loadT); - - if (!data.status){ - layer.msg(data.msg,{icon:0,time:2000,shade: [0.3, '#000']}); - return; - } + + csvnPost('user_list', _data, function(data){ + if (!data.status){ + layer.msg(data.msg,{icon:0,time:2000,shade: [0.3, '#000']}); + return; + } var rdata = $.parseJSON(data.data); // console.log(rdata); - content = '
'; content += '
'; @@ -50,7 +56,7 @@ function csvnUserList(page) { content += page; $(".soft-man-con").html(content); - },'json'); + }); } function csvnDelUser(name){ @@ -86,7 +92,6 @@ function csvnDelUser(name){ layer.msg(data.data,{icon:2,time:2000,shade: [0.3, '#000']}); } - layer.close(loadOpen); layer.msg("删除成功!",{icon:1,time:3000,shade: [0.3, '#000']}); @@ -156,7 +161,7 @@ function csvnModPwdUser(name){ function csvnProjectList(page){ var loadT = layer.msg('正在获取...', { icon: 16, time: 0, shade: 0.3 }); - _data = {}; + var _data = {}; _data['page'] = page; _data['page_size'] = 10; $.post('/plugins/run', {name:'csvn', func:'project_list', args:JSON.stringify(_data)}, function(data) { @@ -222,7 +227,7 @@ function csvnDelProject(name){ }); $('#csvn_del_ok').click(function(){ - _data = {}; + var _data = {}; _data['name'] = name; var loadT = layer.msg('正在获取...', { icon: 16, time: 0, shade: 0.3 }); $.post('/plugins/run', {name:'csvn', func:'project_del', args:JSON.stringify(_data)}, function(data) { @@ -266,7 +271,7 @@ function csvnAddProject(){ }); $('#csvn_project_ok').click(function(){ - _data = {}; + var _data = {}; _data['name'] = $('#csvn_name').val(); var loadT = layer.msg('正在获取...', { icon: 16, time: 0, shade: 0.3 }); @@ -290,24 +295,48 @@ function csvnAddProject(){ } function csvnAclProject(name){ - console.log(name); - // content = '
'; - // content += '
'; - var loadOpen = layer.open({ - type: 1, - title: '权限设置', - area: '400px', - content:"
\ -
\ -
\ - \ - \ + csvnPost('project_acl_list', {'name':name}, function(data){ + + var rdata = []; + try { + rdata = $.parseJSON(data.data); + } catch(e){ + console.log(e); + } + + var list = ''; + console.log(rdata); + for (i in rdata) { + console.log(rdata[i]); + var acl = ''; + if (rdata[i]['acl'] == 'r'){ + acl += ' 只读 | 读写'; + } else { + acl += ' 只读 | 读写'; + } + + list += ''+rdata[i]['user']+'' + acl +''+ + '删除'+''; + } + + var loadOpen = layer.open({ + type: 1, + title: '权限设置', + area: '300px', + content:"
\ +
\ +
\ +
\ +
\ +
\ + "+list+"\ +
用户权限操作
\ +
\
\ -
\ -
\ - \ - \ -
\ -
" +
\ + \ +
\ +
" + }); }); } \ No newline at end of file