mirror of
https://github.com/haiwen/seahub.git
synced 2025-09-01 15:09:14 +00:00
Clean seaserv
This commit is contained in:
@@ -8,7 +8,7 @@ from django.http import HttpResponse, HttpResponseServerError
|
|||||||
|
|
||||||
from auth.decorators import login_required, api_login_required
|
from auth.decorators import login_required, api_login_required
|
||||||
|
|
||||||
from seaserv import ccnet_rpc, ccnet_threaded_rpc, get_groups, get_users, get_repos, \
|
from seaserv import ccnet_rpc, ccnet_threaded_rpc, get_groups, get_repos, \
|
||||||
get_repo, get_commits, get_branches, \
|
get_repo, get_commits, get_branches, \
|
||||||
seafserv_threaded_rpc, seafserv_rpc, get_binding_peerids, get_ccnetuser, \
|
seafserv_threaded_rpc, seafserv_rpc, get_binding_peerids, get_ccnetuser, \
|
||||||
get_group_repoids, check_group_staff
|
get_group_repoids, check_group_staff
|
||||||
|
@@ -1,14 +1,9 @@
|
|||||||
|
|
||||||
import service
|
import service
|
||||||
from service import cclient, ccnet_rpc, monitor_rpc, seafserv_rpc, \
|
from service import ccnet_rpc, monitor_rpc, seafserv_rpc, \
|
||||||
seafserv_threaded_rpc, ccnet_threaded_rpc
|
seafserv_threaded_rpc, ccnet_threaded_rpc
|
||||||
from service import translate_peerid, translate_msgtime, translate_groupid, \
|
from service import send_command
|
||||||
translate_userid, translate_msgtime2, translate_time_sec, \
|
|
||||||
translate_time_usec, get_peer_avatar_url, get_user_avatar_url, \
|
|
||||||
translate_userid_simple, translate_peerid_simple
|
|
||||||
from service import get_peers_by_role, get_peers_by_myrole, send_command
|
|
||||||
from service import get_groups, get_group
|
from service import get_groups, get_group
|
||||||
from service import get_users, get_user, get_events, count_event
|
|
||||||
from service import get_repos, get_repo, get_commits, get_branches
|
from service import get_repos, get_repo, get_commits, get_branches
|
||||||
from service import get_binding_peerids
|
from service import get_binding_peerids
|
||||||
from service import get_ccnetuser
|
from service import get_ccnetuser
|
||||||
|
@@ -1,43 +1,4 @@
|
|||||||
"""
|
"""
|
||||||
Peer:
|
|
||||||
peer.props.id: Peer's ID.
|
|
||||||
peer.props.name peer's name
|
|
||||||
peer.props.user_id The ID of the user this peer belong to.
|
|
||||||
peer.props.timestamp Last modification time in milliseconds.
|
|
||||||
peer.props.role_list The roles I give to this peer's user.
|
|
||||||
peer.props.myrole_list This roles this peer's user gives to me.
|
|
||||||
|
|
||||||
User:
|
|
||||||
user.props.id: User ID.
|
|
||||||
user.props.name: User Name.
|
|
||||||
user.props.timestamp Last modification time in milliseconds.
|
|
||||||
user.props.is_self True if this is myself.
|
|
||||||
user.props.role_list The roles I give to this user.
|
|
||||||
user.props.myrole_list This roles this user gives to me.
|
|
||||||
user.props.default_relay The user's default relay.
|
|
||||||
user.props.avatar_url The user's default relay.
|
|
||||||
|
|
||||||
Group:
|
|
||||||
group.props.id: Group ID.
|
|
||||||
group.props.name: Group Name.
|
|
||||||
group.props.creator: Creator
|
|
||||||
group.props.rendezvous: The ID of the rendezvous peer.
|
|
||||||
group.props.timestamp: Last modification time.
|
|
||||||
group.props.members: The peer IDs of the group members seperated by ' '.
|
|
||||||
group.props.followers: The peer IDs of the followers.
|
|
||||||
group.props.maintainers: The peer IDs of the maintainers.
|
|
||||||
|
|
||||||
Message:
|
|
||||||
msg.props.id: Message ID
|
|
||||||
msg.props.parent_id Parent ID
|
|
||||||
msg.props.src The user who sent this message
|
|
||||||
msg.props.dest
|
|
||||||
msg.props.is_to_group True if this is a group message
|
|
||||||
msg.props.ctime Creation time
|
|
||||||
msg.props.rtime Receive time
|
|
||||||
msg.props.n_ack Number of acks
|
|
||||||
msg.props.n_reply Number of replies
|
|
||||||
msg.props.content
|
|
||||||
|
|
||||||
Repo:
|
Repo:
|
||||||
id: Repo ID
|
id: Repo ID
|
||||||
@@ -67,12 +28,6 @@ Commit:
|
|||||||
parent_id:
|
parent_id:
|
||||||
second_parent_id:
|
second_parent_id:
|
||||||
|
|
||||||
SyncInfo:
|
|
||||||
|
|
||||||
repo_id:
|
|
||||||
head_commit: The head_commit of master branch at seahub
|
|
||||||
deleted_on_relay: True if repo is deleted on relay
|
|
||||||
|
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@@ -99,17 +54,6 @@ else:
|
|||||||
print "Load config from " + CCNET_CONF_PATH
|
print "Load config from " + CCNET_CONF_PATH
|
||||||
CCNET_CONF_PATH = os.path.normpath(os.path.expanduser(CCNET_CONF_PATH))
|
CCNET_CONF_PATH = os.path.normpath(os.path.expanduser(CCNET_CONF_PATH))
|
||||||
|
|
||||||
|
|
||||||
# This does not connect daemon, used for the web to display
|
|
||||||
# (name, id) info
|
|
||||||
cclient = ccnet.Client()
|
|
||||||
|
|
||||||
if os.path.exists(CCNET_CONF_PATH):
|
|
||||||
cclient.load_confdir(CCNET_CONF_PATH)
|
|
||||||
cclient.inited = True
|
|
||||||
else:
|
|
||||||
cclient.inited = False
|
|
||||||
|
|
||||||
pool = ccnet.ClientPool(CCNET_CONF_PATH)
|
pool = ccnet.ClientPool(CCNET_CONF_PATH)
|
||||||
ccnet_rpc = ccnet.CcnetRpcClient(pool, req_pool=True)
|
ccnet_rpc = ccnet.CcnetRpcClient(pool, req_pool=True)
|
||||||
ccnet_threaded_rpc = ccnet.CcnetThreadedRpcClient(pool, req_pool=True)
|
ccnet_threaded_rpc = ccnet.CcnetThreadedRpcClient(pool, req_pool=True)
|
||||||
@@ -117,185 +61,9 @@ monitor_rpc = seafile.MonitorRpcClient(pool)
|
|||||||
seafserv_rpc = seafile.ServerRpcClient(pool, req_pool=True)
|
seafserv_rpc = seafile.ServerRpcClient(pool, req_pool=True)
|
||||||
seafserv_threaded_rpc = seafile.ServerThreadedRpcClient(pool, req_pool=True)
|
seafserv_threaded_rpc = seafile.ServerThreadedRpcClient(pool, req_pool=True)
|
||||||
|
|
||||||
user_db = {}
|
|
||||||
|
|
||||||
def translate_userid(user_id):
|
|
||||||
try:
|
|
||||||
user = user_db[user_id]
|
|
||||||
except:
|
|
||||||
user = ccnet_threaded_rpc.get_user(user_id)
|
|
||||||
if user:
|
|
||||||
user_db[user_id] = user
|
|
||||||
else:
|
|
||||||
return user_id[:8]
|
|
||||||
if user.props.name:
|
|
||||||
return user.props.name + "(" + user_id[:4] + ")"
|
|
||||||
else:
|
|
||||||
return user_id[:8]
|
|
||||||
|
|
||||||
|
|
||||||
def translate_userid_simple(user_id):
|
|
||||||
try:
|
|
||||||
user = user_db[user_id]
|
|
||||||
except:
|
|
||||||
user = ccnet_threaded_rpc.get_user(user_id)
|
|
||||||
if user:
|
|
||||||
user_db[user_id] = user
|
|
||||||
else:
|
|
||||||
return user_id[:8]
|
|
||||||
if user.props.name:
|
|
||||||
return user.props.name
|
|
||||||
else:
|
|
||||||
return user_id[:8]
|
|
||||||
|
|
||||||
|
|
||||||
peer_db = {}
|
|
||||||
|
|
||||||
def translate_peerid(peer_id):
|
|
||||||
try:
|
|
||||||
peer = peer_db[peer_id]
|
|
||||||
except:
|
|
||||||
peer = ccnet_rpc.get_peer(peer_id)
|
|
||||||
if peer:
|
|
||||||
peer_db[peer_id] = peer
|
|
||||||
else:
|
|
||||||
return peer_id[:8]
|
|
||||||
if peer.props.name:
|
|
||||||
return peer.props.name
|
|
||||||
else:
|
|
||||||
return peer_id[:8]
|
|
||||||
|
|
||||||
|
|
||||||
def translate_peerid_simple(peer_id):
|
|
||||||
try:
|
|
||||||
peer = peer_db[peer_id]
|
|
||||||
except:
|
|
||||||
peer = ccnet_rpc.get_peer(peer_id)
|
|
||||||
if peer:
|
|
||||||
peer_db[peer_id] = peer
|
|
||||||
else:
|
|
||||||
return peer_id[:8]
|
|
||||||
if peer.props.name:
|
|
||||||
return peer.props.name
|
|
||||||
else:
|
|
||||||
return peer_id[:8]
|
|
||||||
|
|
||||||
|
|
||||||
def get_peer_avatar_url(peer_id):
|
|
||||||
try:
|
|
||||||
peer = peer_db[peer_id]
|
|
||||||
except:
|
|
||||||
peer = ccnet_rpc.get_peer(peer_id)
|
|
||||||
if peer:
|
|
||||||
peer_db[peer_id] = peer
|
|
||||||
else:
|
|
||||||
return None
|
|
||||||
try:
|
|
||||||
user = user_db[peer.props.user_id]
|
|
||||||
except:
|
|
||||||
user = ccnet_threaded_rpc.get_user(user_id)
|
|
||||||
if user:
|
|
||||||
user_db[user_id] = user
|
|
||||||
else:
|
|
||||||
return None
|
|
||||||
return user.props.avatar_url
|
|
||||||
|
|
||||||
def get_user_avatar_url(user_id):
|
|
||||||
try:
|
|
||||||
user = user_db[user_id]
|
|
||||||
except:
|
|
||||||
user = ccnet_threaded_rpc.get_user(user_id)
|
|
||||||
if user:
|
|
||||||
user_db[user_id] = user
|
|
||||||
else:
|
|
||||||
return None
|
|
||||||
return user.props.avatar_url
|
|
||||||
|
|
||||||
|
|
||||||
group_db = {}
|
|
||||||
|
|
||||||
def translate_groupid(group_id):
|
|
||||||
try:
|
|
||||||
group = group_db[group_id]
|
|
||||||
except:
|
|
||||||
group = ccnet_threaded_rpc.get_group(group_id)
|
|
||||||
if group:
|
|
||||||
group_db[group_id] = group
|
|
||||||
else:
|
|
||||||
return group_id[:8]
|
|
||||||
if group.props.name:
|
|
||||||
return group.props.name + "(" + group_id[:4] + ")"
|
|
||||||
else:
|
|
||||||
return group_id[:8]
|
|
||||||
|
|
||||||
|
|
||||||
def translate_msgtime(msgtime):
|
|
||||||
return datetime.fromtimestamp(
|
|
||||||
(float(msgtime))/1000000).strftime("%Y-%m-%d %H:%M:%S")
|
|
||||||
|
|
||||||
def translate_msgtime2(msgtime):
|
|
||||||
return datetime.fromtimestamp(
|
|
||||||
(float(msgtime))).strftime("%Y-%m-%d %H:%M:%S")
|
|
||||||
|
|
||||||
def translate_time_sec(time):
|
|
||||||
return datetime.fromtimestamp(
|
|
||||||
(float(time))).strftime("%Y-%m-%d %H:%M:%S")
|
|
||||||
|
|
||||||
def translate_time_usec(time):
|
|
||||||
return datetime.fromtimestamp(
|
|
||||||
(float(time))/1000000).strftime("%Y-%m-%d %H:%M:%S")
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#### Basic ccnet API ####
|
#### Basic ccnet API ####
|
||||||
|
|
||||||
def get_peers_by_role(role):
|
|
||||||
try:
|
|
||||||
peer_ids = ccnet_rpc.get_peers_by_role(role)
|
|
||||||
except SearpcError:
|
|
||||||
return []
|
|
||||||
|
|
||||||
peers = []
|
|
||||||
for peer_id in peer_ids.split("\n"):
|
|
||||||
# too handle the ending '\n'
|
|
||||||
if peer_id == '':
|
|
||||||
continue
|
|
||||||
peer = ccnet_rpc.get_peer(peer_id)
|
|
||||||
peers.append(peer)
|
|
||||||
return peers
|
|
||||||
|
|
||||||
def get_peers_by_myrole(myrole):
|
|
||||||
try:
|
|
||||||
peer_ids = ccnet_rpc.get_peers_by_myrole(myrole)
|
|
||||||
except SearpcError:
|
|
||||||
return []
|
|
||||||
|
|
||||||
peers = []
|
|
||||||
for peer_id in peer_ids.split("\n"):
|
|
||||||
# too handle the ending '\n'
|
|
||||||
if peer_id == '':
|
|
||||||
continue
|
|
||||||
peer = ccnet_rpc.get_peer(peer_id)
|
|
||||||
peers.append(peer)
|
|
||||||
return peers
|
|
||||||
|
|
||||||
def get_users():
|
|
||||||
user_ids = ccnet_threaded_rpc.list_users()
|
|
||||||
if not user_ids:
|
|
||||||
return []
|
|
||||||
users = []
|
|
||||||
for user_id in user_ids.split("\n"):
|
|
||||||
# too handle the ending '\n'
|
|
||||||
if user_id == '':
|
|
||||||
continue
|
|
||||||
user = ccnet_threaded_rpc.get_user(user_id)
|
|
||||||
users.append(user)
|
|
||||||
return users
|
|
||||||
|
|
||||||
|
|
||||||
def get_user(user_id):
|
|
||||||
user = ccnet_threaded_rpc.get_user(user_id)
|
|
||||||
return user
|
|
||||||
|
|
||||||
def get_ccnetuser(username=None, userid=None):
|
def get_ccnetuser(username=None, userid=None):
|
||||||
# Get emailuser from db
|
# Get emailuser from db
|
||||||
@@ -341,20 +109,6 @@ def get_group(group_id):
|
|||||||
return group
|
return group
|
||||||
|
|
||||||
|
|
||||||
def get_events(offset, limit):
|
|
||||||
events = ccnet_rpc.get_events(offset, limit)
|
|
||||||
for event in events:
|
|
||||||
if not event.props.body:
|
|
||||||
event.detail = ""
|
|
||||||
else:
|
|
||||||
event.detail = json.loads(event.props.body)
|
|
||||||
return events
|
|
||||||
|
|
||||||
|
|
||||||
def count_event():
|
|
||||||
return ccnet_rpc.count_event()
|
|
||||||
|
|
||||||
|
|
||||||
def send_command(command):
|
def send_command(command):
|
||||||
client = pool.get_client()
|
client = pool.get_client()
|
||||||
client.send_cmd(command)
|
client.send_cmd(command)
|
||||||
|
2
urls.py
2
urls.py
@@ -2,7 +2,7 @@ from django.conf.urls.defaults import *
|
|||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.views.generic.simple import direct_to_template
|
from django.views.generic.simple import direct_to_template
|
||||||
|
|
||||||
from seahub.views import root, peers, myhome, \
|
from seahub.views import root, myhome, \
|
||||||
repo, repo_history, modify_token, remove_repo, sys_seafadmin, sys_useradmin, \
|
repo, repo_history, modify_token, remove_repo, sys_seafadmin, sys_useradmin, \
|
||||||
org_seafadmin, org_useradmin, org_group_admin, org_remove, \
|
org_seafadmin, org_useradmin, org_group_admin, org_remove, \
|
||||||
activate_user, user_add, user_remove, sys_group_admin, sys_org_admin, \
|
activate_user, user_add, user_remove, sys_group_admin, sys_org_admin, \
|
||||||
|
22
views.py
22
views.py
@@ -27,7 +27,7 @@ from auth.forms import AuthenticationForm, PasswordResetForm, SetPasswordForm, \
|
|||||||
PasswordChangeForm
|
PasswordChangeForm
|
||||||
from auth.tokens import default_token_generator
|
from auth.tokens import default_token_generator
|
||||||
from share.models import FileShare
|
from share.models import FileShare
|
||||||
from seaserv import ccnet_rpc, ccnet_threaded_rpc, get_groups, get_users, get_repos, \
|
from seaserv import ccnet_rpc, ccnet_threaded_rpc, get_groups, get_repos, \
|
||||||
get_repo, get_commits, get_branches, \
|
get_repo, get_commits, get_branches, \
|
||||||
seafserv_threaded_rpc, seafserv_rpc, get_binding_peerids, get_ccnetuser, \
|
seafserv_threaded_rpc, seafserv_rpc, get_binding_peerids, get_ccnetuser, \
|
||||||
get_group_repoids, check_group_staff
|
get_group_repoids, check_group_staff
|
||||||
@@ -51,26 +51,6 @@ from seahub.settings import FILE_PREVIEW_MAX_SIZE, CROCODOC_API_TOKEN
|
|||||||
def root(request):
|
def root(request):
|
||||||
return HttpResponseRedirect(reverse(myhome))
|
return HttpResponseRedirect(reverse(myhome))
|
||||||
|
|
||||||
def peers(request):
|
|
||||||
peer_type = request.REQUEST.get('type', 'all')
|
|
||||||
peer_ids = ccnet_rpc.list_peers()
|
|
||||||
peers = []
|
|
||||||
for peer_id in peer_ids.split("\n"):
|
|
||||||
# too handle the ending '\n'
|
|
||||||
if peer_id == '':
|
|
||||||
continue
|
|
||||||
peer = ccnet_rpc.get_peer(peer_id)
|
|
||||||
if peer_type == 'all':
|
|
||||||
peers.append(peer)
|
|
||||||
if peer_type == 'mypeer':
|
|
||||||
if peer.props.role_list.find('MyPeer') != -1:
|
|
||||||
peers.append(peer)
|
|
||||||
|
|
||||||
users = get_users()
|
|
||||||
return render_to_response('peers.html', {
|
|
||||||
'peers': peers,
|
|
||||||
'users': users,
|
|
||||||
}, context_instance=RequestContext(request))
|
|
||||||
|
|
||||||
def validate_owner(request, repo_id):
|
def validate_owner(request, repo_id):
|
||||||
"""
|
"""
|
||||||
|
Reference in New Issue
Block a user