diff --git a/seahub/templates/snippets/space_and_traffic.html b/seahub/templates/snippets/space_and_traffic.html index f486e910ac..297473728d 100644 --- a/seahub/templates/snippets/space_and_traffic.html +++ b/seahub/templates/snippets/space_and_traffic.html @@ -19,6 +19,10 @@ {% endif %} {% endif %} + + {% if user.trialing %} +

Trial expires at {{user.trial_expire_date|date:"Y-m-d"}}

+ {% endif %} {% if TRAFFIC_STATS_ENABLED %} diff --git a/seahub/templates/sysadmin/useradmin_js.html b/seahub/templates/sysadmin/useradmin_js.html index 456e3a3db7..e7f86d0a7f 100644 --- a/seahub/templates/sysadmin/useradmin_js.html +++ b/seahub/templates/sysadmin/useradmin_js.html @@ -15,6 +15,10 @@ addConfirmTo($('.set-admin-btn'), { 'title':"{% trans "Set 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-form').modal(); diff --git a/seahub/templates/sysadmin/useradmin_table.html b/seahub/templates/sysadmin/useradmin_table.html index 99656623e8..0610c354e0 100644 --- a/seahub/templates/sysadmin/useradmin_table.html +++ b/seahub/templates/sysadmin/useradmin_table.html @@ -15,6 +15,9 @@ {% if user.org %}

({{user.org.org_name}})

{% endif %} + {% if user.trial_info %} +

(Trial  X)

+ {% endif %} {% if user.source != 'LDAP' %} diff --git a/seahub/urls.py b/seahub/urls.py index f5b1f1137e..2ec4a4e457 100644 --- a/seahub/urls.py +++ b/seahub/urls.py @@ -199,6 +199,7 @@ urlpatterns = patterns('', url(r'^sys/notificationadmin/', notification_list, name='notification_list'), url(r'^useradmin/add/$', user_add, name="user_add"), url(r'^useradmin/remove/(?P[^/]+)/$', user_remove, name="user_remove"), + url(r'^useradmin/removetrial/(?P[^/]+)/$', user_remove_trial, name="user_remove_trial"), url(r'^useradmin/search/$', user_search, name="user_search"), url(r'^useradmin/makeadmin/(?P[^/]+)/$', user_make_admin, name='user_make_admin'), url(r'^useradmin/removeadmin/(?P[^/]+)/$', user_remove_admin, name='user_remove_admin'), diff --git a/seahub/views/sysadmin.py b/seahub/views/sysadmin.py index e38cfe6d95..3531390e98 100644 --- a/seahub/views/sysadmin.py +++ b/seahub/views/sysadmin.py @@ -30,13 +30,17 @@ from seahub.views import get_system_default_repo_id from seahub.forms import SetUserQuotaForm, AddUserForm, BatchAddUserForm from seahub.profile.models import Profile, DetailedProfile from seahub.share.models import FileShare, UploadLinkShare - import seahub.settings as settings from seahub.settings import INIT_PASSWD, SITE_NAME, \ SEND_EMAIL_ON_ADDING_SYSTEM_MEMBER, SEND_EMAIL_ON_RESETTING_USER_PASSWD, \ ENABLE_GUEST from seahub.utils import send_html_email, get_user_traffic_list, get_server_id 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__) @@ -198,6 +202,10 @@ def sys_user_admin(request): users = users_plus_one[:per_page] 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: if user.props.id == request.user.id: user.is_self = True @@ -209,12 +217,18 @@ def sys_user_admin(request): user.is_guest = True else: user.is_guest = False + # populate user last login time user.last_login = None for last_login in last_logins: if last_login.username == user.email: 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 platform = get_platform_name() @@ -529,6 +543,22 @@ def user_remove(request, user_id): 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 @sys_staff_required def user_make_admin(request, user_id): @@ -1060,6 +1090,10 @@ def user_search(request): users = ccnet_threaded_rpc.search_emailusers(email, -1, -1) 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: _populate_user_quota_usage(user) @@ -1075,6 +1109,11 @@ def user_search(request): if last_login.username == user.email: 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', { 'users': users, 'email': email,