1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-09-25 14:50:29 +00:00

Add unregistered user to group

This commit is contained in:
xiez
2012-09-19 19:52:35 +08:00
parent 9c93e1a740
commit de4cc456ea
4 changed files with 56 additions and 24 deletions

View File

@@ -0,0 +1,9 @@
{% load url from future %}
亲爱的 {{ to_email }}
{{ email }} 邀请你加入小组 {{ group.group_name }}, 点击以下链接加入:
{{ protocol }}://{{ domain }}{% url 'registration_register' %}?src={{ to_email }}
邮箱请填写当前邮箱,感谢使用我们的网站!
Seafile团队

View File

@@ -50,6 +50,7 @@
<label>邮箱:</label><br /> <label>邮箱:</label><br />
<textarea id="added-member-name" name="user_name"></textarea><br /> <textarea id="added-member-name" name="user_name"></textarea><br />
<input type="hidden" id="group_id" name="group_id" value="{{ group.id }}" /> <input type="hidden" id="group_id" name="group_id" value="{{ group.id }}" />
<p class="tip">可以是非网站注册用户,我们会以邮件通知对方。</p>
<p class="error hide" id="member-add-error"></p> <p class="error hide" id="member-add-error"></p>
<input type="submit" value="提交" id="member-add-submit" /> <input type="submit" value="提交" id="member-add-submit" />
</form> </form>
@@ -89,16 +90,12 @@ $('#member-add-submit').click(function() {
'user_name': $('#added-member-name').val() 'user_name': $('#added-member-name').val()
}, },
success: function(data) { success: function(data) {
if (data['success']) { location.reload(true);
location.reload(true);
} else {
apply_form_error('member-add-form', data['error']);
}
}, },
error: function(data, textStatus, jqXHR) { error: function(data, textStatus, jqXHR) {
var errors = $.parseJSON(data.responseText); var errors = $.parseJSON(data.responseText);
$.each(errors, function(index, value) { $.each(errors, function(index, value) {
apply_form_error('member-add-form', value[0]); apply_form_error('member-add-form', value);
}); });
} }
}); });

View File

@@ -1,12 +1,14 @@
# encoding: utf-8 # encoding: utf-8
import os import os
import simplejson as json import simplejson as json
from django.core.mail import send_mail
from django.core.urlresolvers import reverse from django.core.urlresolvers import reverse
from django.contrib import messages from django.contrib import messages
from django.contrib.sites.models import RequestSite
from django.http import HttpResponse, HttpResponseRedirect, Http404, \ from django.http import HttpResponse, HttpResponseRedirect, Http404, \
HttpResponseBadRequest HttpResponseBadRequest
from django.shortcuts import render_to_response, redirect from django.shortcuts import render_to_response, redirect
from django.template import RequestContext from django.template import Context, loader, RequestContext
from django.template.loader import render_to_string from django.template.loader import render_to_string
from django.utils.http import urlquote from django.utils.http import urlquote
from django.utils.translation import ugettext as _ from django.utils.translation import ugettext as _
@@ -501,14 +503,16 @@ def group_members(request, group_id):
if request.user.org: if request.user.org:
for member_name in member_list: for member_name in member_list:
# Add email to contacts # Add user to contacts.
mail_sended.send(sender=None, user=request.user.username, mail_sended.send(sender=None, user=request.user.username,
email=member_name) email=member_name)
# Can not add unregistered user to group in org context.
if not ccnet_threaded_rpc.org_user_exists(request.user.org['org_id'], if not ccnet_threaded_rpc.org_user_exists(request.user.org['org_id'],
member_name): member_name):
err_msg = u'无法添加成员,当前企业不存在 %s 用户' % member_name err_msg = u'无法添加成员,当前企业不存在 %s 用户' % member_name
result['error'] = err_msg result['error'] = err_msg
return HttpResponse(json.dumps(result), return HttpResponse(json.dumps(result), status=400,
content_type=content_type) content_type=content_type)
else: else:
try: try:
@@ -517,29 +521,47 @@ def group_members(request, group_id):
member_name) member_name)
except SearpcError, e: except SearpcError, e:
result['error'] = _(e.msg) result['error'] = _(e.msg)
return HttpResponse(json.dumps(result), return HttpResponse(json.dumps(result), status=500,
content_type=content_type) content_type=content_type)
else: else:
for member_name in member_list: for member_name in member_list:
# Add email to contacts # Add user to contacts.
mail_sended.send(sender=None, user=request.user.username, mail_sended.send(sender=None, user=request.user.username,
email=member_name) email=member_name)
# Send email to unregistered user.
if not is_registered_user(member_name): if not is_registered_user(member_name):
err_msg = u'无法添加成员,用户 %s 不存在' % member_name use_https = request.is_secure()
result['error'] = err_msg domain = RequestSite(request).domain
return HttpResponse(json.dumps(result),
content_type=content_type) t = loader.get_template('group/add_member_email.html')
else: c = {
'email': request.user.username,
'to_email': member_name,
'group': group,
'domain': domain,
'protocol': use_https and 'https' or 'http',
}
try: try:
ccnet_threaded_rpc.group_add_member(group_id_int, send_mail('您的好友在SeaCloud上将你加入到小组',
request.user.username, t.render(Context(c)), None, [member_name],
member_name) fail_silently=False)
except SearpcError, e: except:
result['error'] = _(e.msg) data = json.dumps({'error': u'发送失败'})
return HttpResponse(json.dumps(result), return HttpResponse(data, status=500,
content_type=content_type) content_type=content_type)
return HttpResponse(json.dumps({'success': True}), # Add user to group.
try:
ccnet_threaded_rpc.group_add_member(group_id_int,
request.user.username,
member_name)
except SearpcError, e:
result['error'] = _(e.msg)
return HttpResponse(json.dumps(result), status=500,
content_type=content_type)
messages.success(request, u'操作成功')
return HttpResponse(json.dumps('success'), status=200,
content_type=content_type) content_type=content_type)
### GET ### ### GET ###

View File

@@ -199,6 +199,10 @@ def register(request, backend, success_url=None, form_class=None,
for key, value in extra_context.items(): for key, value in extra_context.items():
context[key] = callable(value) and value() or value context[key] = callable(value) and value() or value
src = request.GET.get('src', '')
if src:
form = form_class(initial={'email': src})
return render_to_response(template_name, return render_to_response(template_name,
{ 'form': form }, { 'form': form },
context_instance=context) context_instance=context)