1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-09-22 03:47:09 +00:00

Add trialuser

This commit is contained in:
zhengxie
2015-01-08 16:23:18 +08:00
parent 9139b71e36
commit 8ec8d7d424
5 changed files with 52 additions and 1 deletions

View File

@@ -19,6 +19,10 @@
{% endif %} {% endif %}
</div> </div>
{% endif %} {% endif %}
{% if user.trialing %}
<p><a href="#">Trial expires at {{user.trial_expire_date|date:"Y-m-d"}}</a></p>
{% endif %}
</div> </div>
{% if TRAFFIC_STATS_ENABLED %} {% if TRAFFIC_STATS_ENABLED %}

View File

@@ -15,6 +15,10 @@ addConfirmTo($('.set-admin-btn'), {
'title':"{% trans "Set Admin" %}", 'title':"{% trans "Set Admin" %}",
'con':"{% trans "Are you sure you want to set %s as admin?" %}" 'con':"{% trans "Are you sure you want to set %s as admin?" %}"
}); });
addConfirmTo($('.unset-trial'), {
'title':"{% trans "Remove Trial" %}",
'con':"{% trans "Are you sure you want to remove trial for %s ?" %}"
});
$('#add-user-btn').click(function() { $('#add-user-btn').click(function() {
$('#add-user-form').modal(); $('#add-user-form').modal();

View File

@@ -15,6 +15,9 @@
{% if user.org %} {% if user.org %}
<p style="font-size:11px;"><a href="{% url 'sys_org_info_user' user.org.org_id %}">({{user.org.org_name}})</a></p> <p style="font-size:11px;"><a href="{% url 'sys_org_info_user' user.org.org_id %}">({{user.org.org_name}})</a></p>
{% endif %} {% endif %}
{% if user.trial_info %}
<p style="font-size:11px;">(Trial &nbsp;<a href="#" class="unset-trial" data-target="{{ user.email }}" data-url="{% url 'user_remove_trial' user.email %}">X</a>)</p>
{% endif %}
</td> </td>
<td> <td>
{% if user.source != 'LDAP' %} {% if user.source != 'LDAP' %}

View File

@@ -199,6 +199,7 @@ urlpatterns = patterns('',
url(r'^sys/notificationadmin/', notification_list, name='notification_list'), url(r'^sys/notificationadmin/', notification_list, name='notification_list'),
url(r'^useradmin/add/$', user_add, name="user_add"), url(r'^useradmin/add/$', user_add, name="user_add"),
url(r'^useradmin/remove/(?P<user_id>[^/]+)/$', user_remove, name="user_remove"), url(r'^useradmin/remove/(?P<user_id>[^/]+)/$', user_remove, name="user_remove"),
url(r'^useradmin/removetrial/(?P<username>[^/]+)/$', user_remove_trial, name="user_remove_trial"),
url(r'^useradmin/search/$', user_search, name="user_search"), url(r'^useradmin/search/$', user_search, name="user_search"),
url(r'^useradmin/makeadmin/(?P<user_id>[^/]+)/$', user_make_admin, name='user_make_admin'), url(r'^useradmin/makeadmin/(?P<user_id>[^/]+)/$', user_make_admin, name='user_make_admin'),
url(r'^useradmin/removeadmin/(?P<user_id>[^/]+)/$', user_remove_admin, name='user_remove_admin'), url(r'^useradmin/removeadmin/(?P<user_id>[^/]+)/$', user_remove_admin, name='user_remove_admin'),

View File

@@ -30,13 +30,17 @@ from seahub.views import get_system_default_repo_id
from seahub.forms import SetUserQuotaForm, AddUserForm, BatchAddUserForm from seahub.forms import SetUserQuotaForm, AddUserForm, BatchAddUserForm
from seahub.profile.models import Profile, DetailedProfile from seahub.profile.models import Profile, DetailedProfile
from seahub.share.models import FileShare, UploadLinkShare from seahub.share.models import FileShare, UploadLinkShare
import seahub.settings as settings import seahub.settings as settings
from seahub.settings import INIT_PASSWD, SITE_NAME, \ from seahub.settings import INIT_PASSWD, SITE_NAME, \
SEND_EMAIL_ON_ADDING_SYSTEM_MEMBER, SEND_EMAIL_ON_RESETTING_USER_PASSWD, \ SEND_EMAIL_ON_ADDING_SYSTEM_MEMBER, SEND_EMAIL_ON_RESETTING_USER_PASSWD, \
ENABLE_GUEST ENABLE_GUEST
from seahub.utils import send_html_email, get_user_traffic_list, get_server_id from seahub.utils import send_html_email, get_user_traffic_list, get_server_id
from seahub.utils.sysinfo import get_platform_name from seahub.utils.sysinfo import get_platform_name
try:
from seahub_extra.trialuser.models import TrialUser
enable_trial_user = True
except:
enable_trial_user = False
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
@@ -198,6 +202,10 @@ def sys_user_admin(request):
users = users_plus_one[:per_page] users = users_plus_one[:per_page]
last_logins = UserLastLogin.objects.filter(username__in=[x.email for x in users]) last_logins = UserLastLogin.objects.filter(username__in=[x.email for x in users])
if enable_trial_user:
trial_users = TrialUser.objects.filter(username__in=[x.email for x in users])
else:
trial_users = []
for user in users: for user in users:
if user.props.id == request.user.id: if user.props.id == request.user.id:
user.is_self = True user.is_self = True
@@ -209,12 +217,18 @@ def sys_user_admin(request):
user.is_guest = True user.is_guest = True
else: else:
user.is_guest = False user.is_guest = False
# populate user last login time # populate user last login time
user.last_login = None user.last_login = None
for last_login in last_logins: for last_login in last_logins:
if last_login.username == user.email: if last_login.username == user.email:
user.last_login = last_login.last_login user.last_login = last_login.last_login
user.trial_info = None
for trial_user in trial_users:
if trial_user.username == user.email:
user.trial_info = {'expire_date': trial_user.expire_date}
have_ldap = True if len(get_emailusers('LDAP', 0, 1)) > 0 else False have_ldap = True if len(get_emailusers('LDAP', 0, 1)) > 0 else False
platform = get_platform_name() platform = get_platform_name()
@@ -529,6 +543,22 @@ def user_remove(request, user_id):
return HttpResponseRedirect(next) return HttpResponseRedirect(next)
@login_required
@sys_staff_required
def user_remove_trial(request, username):
"""
Arguments:
- `request`:
"""
referer = request.META.get('HTTP_REFERER', None)
next = reverse('sys_useradmin') if referer is None else referer
TrialUser.objects.filter(username=username).delete()
messages.success(request, _('Successfully remove trial for user: %s') % username)
return HttpResponseRedirect(next)
@login_required @login_required
@sys_staff_required @sys_staff_required
def user_make_admin(request, user_id): def user_make_admin(request, user_id):
@@ -1060,6 +1090,10 @@ def user_search(request):
users = ccnet_threaded_rpc.search_emailusers(email, -1, -1) users = ccnet_threaded_rpc.search_emailusers(email, -1, -1)
last_logins = UserLastLogin.objects.filter(username__in=[x.email for x in users]) last_logins = UserLastLogin.objects.filter(username__in=[x.email for x in users])
if enable_trial_user:
trial_users = TrialUser.objects.filter(username__in=[x.email for x in users])
else:
trial_users = []
for user in users: for user in users:
_populate_user_quota_usage(user) _populate_user_quota_usage(user)
@@ -1075,6 +1109,11 @@ def user_search(request):
if last_login.username == user.email: if last_login.username == user.email:
user.last_login = last_login.last_login user.last_login = last_login.last_login
user.trial_info = None
for trial_user in trial_users:
if trial_user.username == user.email:
user.trial_info = {'expire_date': trial_user.expire_date}
return render_to_response('sysadmin/user_search.html', { return render_to_response('sysadmin/user_search.html', {
'users': users, 'users': users,
'email': email, 'email': email,