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

Send message when upload files to shared folder

This commit is contained in:
zhengxie 2013-11-18 10:56:10 +08:00
parent fa42277b28
commit 7138e65691
5 changed files with 86 additions and 4 deletions

View File

@ -7,6 +7,7 @@ from django.db import models
from django.db.models import Q
from django.forms import ModelForm
from django.utils.translation import ugettext as _
from django.utils.http import urlquote
from seahub.base.fields import LowerCaseCharField
@ -89,7 +90,7 @@ class UserMsgAttachment(models.Model):
### handle signals
from django.core.urlresolvers import reverse
from django.dispatch import receiver
from seahub.signals import share_file_to_user_successful
from seahub.signals import share_file_to_user_successful, upload_file_successful
from seahub.share.signals import share_repo_to_user_successful
@receiver(share_repo_to_user_successful)
@ -122,4 +123,30 @@ def add_share_file_msg(sender, **kwargs):
UserMessage.objects.add_unread_message(priv_share.from_user,
priv_share.to_user, msg)
@receiver(upload_file_successful)
def add_upload_file_msg(sender, **kwargs):
"""
Arguments:
- `sender`:
- `**kwargs)`:
"""
repo_id = kwargs.get('repo_id', None)
file_path = kwargs.get('file_path', None)
owner = kwargs.get('owner', None)
assert repo_id and file_path and owner is not None, 'Arguments error'
# message body
filename = os.path.basename(file_path)
folder_path = os.path.dirname(file_path)
folder_name = os.path.basename(folder_path)
msg = u"(System) A file named <a href='%(file_link)s'>%(file_name)s</a> is uploaded to your folder <a href='%(folder_link)s'>%(folder)s</a>" % {
'file_link': reverse('repo_view_file', args=[repo_id]) + '?p=' + urlquote(file_path),
'file_name': filename,
'folder_link': reverse('repo', args=[repo_id]) + '?p=' + urlquote(folder_path),
'folder': folder_name,
}
UserMessage.objects.add_unread_message("system@system.com", owner, msg)

View File

@ -5,3 +5,5 @@ repo_created = django.dispatch.Signal(providing_args=["org_id", "creator", "repo
repo_deleted = django.dispatch.Signal(providing_args=["org_id", "usernames", "repo_owner", "repo_id", "repo_name"])
share_file_to_user_successful = django.dispatch.Signal(providing_args=["priv_share_obj"])
upload_file_successful = django.dispatch.Signal(providing_args=["repo_id", "file_path", "owner"])

View File

@ -1,4 +1,4 @@
{% extends base_template %}
{% extends "myhome_base.html" %}
{% load seahub_tags i18n upload_tags avatar_tags %}
{% load url from future %}
@ -96,10 +96,15 @@ form.fileupload({
})
.bind('fileuploaddone', function(e, data) {
if (data.textStatus == 'success') {
var filename = "";
$.each(data.files, function(index, file) {
filename = file.name;
$('#uploaded-files-list').append(
'<tr><td></td><td>' + file.name +'</td><td>' + filesizeformat(file.size) + '</td></tr>');
'<tr><td></td><td>' + filename +'</td><td>' + filesizeformat(file.size) + '</td></tr>');
});
var uploaded_done_link = "{% url "upload_file_done" %}" + "?fn=" + encodeURIComponent(filename) + "&repo_id={{repo.id}}" + "&p={{path}}";
$.get(uploaded_done_link);
}
});

View File

@ -114,6 +114,7 @@ urlpatterns = patterns('',
url(r'^ajax/group/(?P<group_id>\d+)/repos/$', get_group_repos, name='get_group_repos'),
url(r'^ajax/my-unenc-repos/$', get_my_unenc_repos, name='get_my_unenc_repos'),
url(r'^ajax/contacts/$', get_contacts, name='get_contacts'),
url(r'^ajax/upload-file-done/$', upload_file_done, name='upload_file_done'),
url(r'^ajax/repo/(?P<repo_id>[-0-9a-f]{36})/dir/$', list_dir, name='repo_dir_data'),
url(r'^ajax/repo/(?P<repo_id>[-0-9a-f]{36})/dir/more/$', list_dir_more, name='list_dir_more'),

View File

@ -19,6 +19,7 @@ from seahub.auth.decorators import login_required
from seahub.contacts.models import Contact
from seahub.forms import RepoNewDirentForm, RepoRenameDirentForm
from seahub.options.models import UserOptions, CryptoOptionNotSetError
from seahub.signals import upload_file_successful
from seahub.views import get_repo_dirents
from seahub.views.repo import get_nav_path, get_fileshare, get_dir_share_link, \
get_uploadlink, get_dir_shared_upload_link
@ -1000,3 +1001,49 @@ def download_enc_file(request, repo_id, file_id):
'url':url,
}
return HttpResponse(json.dumps(result), content_type=content_type)
def upload_file_done(request):
"""Send a message when a file is uploaded.
Arguments:
- `request`:
"""
ct = 'application/json; charset=utf-8'
result = {}
filename = request.GET.get('fn', '')
if not filename:
result['error'] = _('Argument missing')
return HttpResponse(json.dumps(result), status=400, content_type=ct)
repo_id = request.GET.get('repo_id', '')
if not repo_id:
result['error'] = _('Argument missing')
return HttpResponse(json.dumps(result), status=400, content_type=ct)
path = request.GET.get('p', '')
if not path:
result['error'] = _('Argument missing')
return HttpResponse(json.dumps(result), status=400, content_type=ct)
# a few checkings
if not seafile_api.get_repo(repo_id):
result['error'] = _('Wrong repo id')
return HttpResponse(json.dumps(result), status=400, content_type=ct)
owner = seafile_api.get_repo_owner(repo_id)
if not owner:
result['error'] = _('Wrong repo id')
return HttpResponse(json.dumps(result), status=400, content_type=ct)
file_path = path.rstrip('/') + '/' + filename
if seafile_api.get_file_id_by_path(repo_id, file_path) is None:
result['error'] = _('File does not exist')
return HttpResponse(json.dumps(result), status=400, content_type=ct)
# send singal
upload_file_successful.send(sender=None,
repo_id=repo_id,
file_path=file_path,
owner=owner)
return HttpResponse(json.dumps({'success': True}), content_type=ct)