def handle(self, *args, **options): db_users = seaserv.get_emailusers('DB', -1, -1) ldpa_imported_users = seaserv.get_emailusers('LDAPImport', -1, -1) admins = [] for user in db_users + ldpa_imported_users: if user.is_staff: admins.append(user) for u in admins: # save current language cur_language = translation.get_language() # get and active user language user_language = self.get_user_language(u.email) translation.activate(user_language) send_html_email_with_dj_template( u.email, dj_template='notifications/notify_virus.html', subject=_('Virus detected on %s') % settings.SITE_NAME, priority=MAIL_PRIORITY.now ) # restore current language translation.activate(cur_language)
def email_admins(self): db_users = seaserv.get_emailusers('DB', -1, -1) ldpa_imported_users = seaserv.get_emailusers('LDAPImport', -1, -1) admins = [] for user in db_users + ldpa_imported_users: if user.is_staff: admins.append(user) for u in admins: # save current language cur_language = translation.get_language() # get and active user language user_language = self.get_user_language(u.email) translation.activate(user_language) send_html_email_with_dj_template( u.email, dj_template='notifications/notify_virus.html', subject=_('Virus detected on %s') % settings.SITE_NAME, priority=MAIL_PRIORITY.now ) # restore current language translation.activate(cur_language)
def handle(self, *args, **options): db_users = seaserv.get_emailusers('DB', -1, -1) ldpa_imported_users = seaserv.get_emailusers('LDAPImport', -1, -1) admins = [] for user in db_users + ldpa_imported_users: if user.is_staff: admins.append(user) for u in admins: # save current language cur_language = translation.get_language() # get and active user language user_language = self.get_user_language(u.email) translation.activate(user_language) send_html_email_with_dj_template( u.email, dj_template='notifications/notify_virus.html', subject=_('Virus detected on %s') % settings.SITE_NAME, backend='post_office') # restore current language translation.activate(cur_language)
def get_system_admins(): db_users = seaserv.get_emailusers('DB', -1, -1) ldpa_imported_users = seaserv.get_emailusers('LDAPImport', -1, -1) admins = [] for user in db_users + ldpa_imported_users: if user.is_staff: admins.append(user) return admins
def sys_user_admin(request): """List all users from database. """ # Make sure page request is an int. If not, deliver first page. try: current_page = int(request.GET.get('page', '1')) per_page = int(request.GET.get('per_page', '25')) except ValueError: current_page = 1 per_page = 25 users_plus_one = get_emailusers('DB', per_page * (current_page - 1), per_page + 1) if len(users_plus_one) == per_page + 1: page_next = True else: page_next = False users = users_plus_one[:per_page] last_logins = UserLastLogin.objects.filter( username__in=[x.email for x in users]) for user in users: if user.props.id == request.user.id: user.is_self = True try: user.self_usage = seafile_api.get_user_self_usage(user.email) user.share_usage = seafile_api.get_user_share_usage(user.email) user.quota = seafile_api.get_user_quota(user.email) except: user.self_usage = -1 user.share_usage = -1 user.quota = -1 # 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 have_ldap = True if len(get_emailusers('LDAP', 0, 1)) > 0 else False platform = get_platform_name() server_id = get_server_id() return render_to_response('sysadmin/sys_useradmin.html', { 'users': users, 'current_page': current_page, 'prev_page': current_page - 1, 'next_page': current_page + 1, 'per_page': per_page, 'page_next': page_next, 'CALC_SHARE_USAGE': CALC_SHARE_USAGE, 'have_ldap': have_ldap, 'platform': platform, 'server_id': server_id[:8], }, context_instance=RequestContext(request))
def sys_user_admin(request): """List all users from database. """ # Make sure page request is an int. If not, deliver first page. try: current_page = int(request.GET.get('page', '1')) per_page = int(request.GET.get('per_page', '25')) except ValueError: current_page = 1 per_page = 25 users_plus_one = get_emailusers('DB', per_page * (current_page - 1), per_page + 1) if len(users_plus_one) == per_page + 1: page_next = True else: page_next = False users = users_plus_one[:per_page] last_logins = UserLastLogin.objects.filter(username__in=[x.email for x in users]) for user in users: if user.props.id == request.user.id: user.is_self = True try: user.self_usage = seafile_api.get_user_self_usage(user.email) user.share_usage = seafile_api.get_user_share_usage(user.email) user.quota = seafile_api.get_user_quota(user.email) except: user.self_usage = -1 user.share_usage = -1 user.quota = -1 # 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 have_ldap = True if len(get_emailusers('LDAP', 0, 1)) > 0 else False platform = get_platform_name() server_id = get_server_id() return render_to_response( 'sysadmin/sys_useradmin.html', { 'users': users, 'current_page': current_page, 'prev_page': current_page-1, 'next_page': current_page+1, 'per_page': per_page, 'page_next': page_next, 'CALC_SHARE_USAGE': CALC_SHARE_USAGE, 'have_ldap': have_ldap, 'platform': platform, 'server_id': server_id[:8], }, context_instance=RequestContext(request))
def sys_user_admin_admins(request): """List all admins from database. """ users = get_emailusers('DB', -1, -1) admin_users = [] not_admin_users = [] for user in users: if user.is_staff is True: admin_users.append(user) else: not_admin_users.append(user) last_logins = UserLastLogin.objects.filter( username__in=[x.email for x in admin_users]) for user in admin_users: if user.props.id == request.user.id: user.is_self = True try: user.self_usage = seafile_api.get_user_self_usage(user.email) user.share_usage = seafile_api.get_user_share_usage(user.email) user.quota = seafile_api.get_user_quota(user.email) except: user.self_usage = -1 user.share_usage = -1 user.quota = -1 # check user's role if user.role == GUEST_USER: 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 have_ldap = True if len(get_emailusers('LDAP', 0, 1)) > 0 else False return render_to_response('sysadmin/sys_useradmin_admins.html', { 'admin_users': admin_users, 'not_admin_users': not_admin_users, 'CALC_SHARE_USAGE': CALC_SHARE_USAGE, 'have_ldap': have_ldap, 'default_user': DEFAULT_USER, 'guest_user': GUEST_USER, }, context_instance=RequestContext(request))
def sys_user_admin_admins(request): """List all admins from database. """ users = get_emailusers('DB', -1, -1) admin_users = [] not_admin_users = [] for user in users: if user.is_staff is True: admin_users.append(user) else: not_admin_users.append(user) last_logins = UserLastLogin.objects.filter(username__in=[x.email for x in admin_users]) for user in admin_users: if user.props.id == request.user.id: user.is_self = True try: user.self_usage = seafile_api.get_user_self_usage(user.email) user.share_usage = seafile_api.get_user_share_usage(user.email) user.quota = seafile_api.get_user_quota(user.email) except: user.self_usage = -1 user.share_usage = -1 user.quota = -1 # check user's role if user.role == GUEST_USER: 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 have_ldap = True if len(get_emailusers('LDAP', 0, 1)) > 0 else False return render_to_response( 'sysadmin/sys_useradmin_admins.html', { 'admin_users': admin_users, 'not_admin_users': not_admin_users, 'CALC_SHARE_USAGE': CALC_SHARE_USAGE, 'have_ldap': have_ldap, 'default_user': DEFAULT_USER, 'guest_user': GUEST_USER, }, context_instance=RequestContext(request))
def innerpub_msg_added_cb(sender, instance, **kwargs): from_email = instance.from_email users = get_emailusers(-1, -1) for u in users: if u.email == from_email: continue try: UserNotification.objects.get(to_user=u.email, msg_type='innerpub_msg') except UserNotification.DoesNotExist: n = UserNotification(to_user=u.email, msg_type='innerpub_msg', detail='') n.save()
def sys_user_admin_ldap(request): """List all users from LDAP. """ # Make sure page request is an int. If not, deliver first page. try: current_page = int(request.GET.get('page', '1')) per_page = int(request.GET.get('per_page', '25')) except ValueError: current_page = 1 per_page = 25 users_plus_one = get_emailusers('LDAP', per_page * (current_page - 1), per_page + 1) if len(users_plus_one) == per_page + 1: page_next = True else: page_next = False users = users_plus_one[:per_page] last_logins = UserLastLogin.objects.filter( username__in=[x.email for x in users]) for user in users: if user.props.id == request.user.id: user.is_self = True _populate_user_quota_usage(user) # 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 return render_to_response('sysadmin/sys_useradmin_ldap.html', { 'users': users, 'current_page': current_page, 'prev_page': current_page - 1, 'next_page': current_page + 1, 'per_page': per_page, 'page_next': page_next, 'enable_guest': ENABLE_GUEST, 'CALC_SHARE_USAGE': CALC_SHARE_USAGE, }, context_instance=RequestContext(request))
def sys_user_admin_ldap(request): """List all users from LDAP. """ # Make sure page request is an int. If not, deliver first page. try: current_page = int(request.GET.get('page', '1')) per_page = int(request.GET.get('per_page', '25')) except ValueError: current_page = 1 per_page = 25 users_plus_one = get_emailusers('LDAP', per_page * (current_page - 1), per_page + 1) if len(users_plus_one) == per_page + 1: page_next = True else: page_next = False users = users_plus_one[:per_page] last_logins = UserLastLogin.objects.filter(username__in=[x.email for x in users]) for user in users: if user.props.id == request.user.id: user.is_self = True _populate_user_quota_usage(user) # 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 return render_to_response( 'sysadmin/sys_useradmin_ldap.html', { 'users': users, 'current_page': current_page, 'prev_page': current_page-1, 'next_page': current_page+1, 'per_page': per_page, 'page_next': page_next, 'enable_guest': ENABLE_GUEST, 'CALC_SHARE_USAGE': CALC_SHARE_USAGE, }, context_instance=RequestContext(request))
def batch_user_make_admin(request): """Batch make users as admins. """ if request.method != 'POST': raise Http404 result = {} content_type = 'application/json; charset=utf-8' set_admin_emails = request.POST.get('set_admin_emails') set_admin_emails = string2list(set_admin_emails) success = [] failed = [] already_admin = [] if len(get_emailusers('LDAP', 0, 1)) > 0: messages.error(request, _(u'Using LDAP now, can not add admin.')) result['success'] = True return HttpResponse(json.dumps(result), content_type=content_type) for email in set_admin_emails: try: user = User.objects.get(email=email) if user.is_staff is True: already_admin.append(email) else: user.is_staff = True user.save() success.append(email) except User.DoesNotExist: failed.append(email) for item in success + already_admin: messages.success(request, _(u'Successfully set %s as admin.') % item) for item in failed: messages.error( request, _(u'Failed to set %s as admin: user does not exist.') % item) result['success'] = True return HttpResponse(json.dumps(result), content_type=content_type)
def batch_user_make_admin(request): """Batch make users as admins. """ if not request.is_ajax() or request.method != 'POST': raise Http404 result = {} content_type = 'application/json; charset=utf-8' set_admin_emails = request.POST.get('set_admin_emails') set_admin_emails = string2list(set_admin_emails) success = [] failed = [] already_admin = [] if len(get_emailusers('LDAP', 0, 1)) > 0: messages.error(request, _(u'Using LDAP now, can not add admin.')) result['success'] = True return HttpResponse(json.dumps(result), content_type=content_type) for email in set_admin_emails: try: user = User.objects.get(email=email) if user.is_staff is True: already_admin.append(email) else: user.is_staff = True user.save() success.append(email) except User.DoesNotExist: failed.append(email) for item in success + already_admin: messages.success(request, _(u'Successfully set %s as admin.') % item) for item in failed: messages.error(request, _(u'Failed to set %s as admin: user does not exist.') % item) result['success'] = True return HttpResponse(json.dumps(result), content_type=content_type)
def msgreply_save_handler(sender, instance, **kwargs): """ Handle sending notification to '@<user>' when reply messages. """ from_email = instance.from_email reply_msg = instance.message innerpub_msg = instance.reply_to to_user = '' m = re.match(at_pattern, reply_msg) if m: nickname_or_emailprefix = m.group()[1:] for member in get_emailusers(-1, -1): # For every user, get his username and nickname if # it exists, check whether match. username = member.email if username == from_email: continue p = get_first_object_or_none( Profile.objects.filter(user=username)) nickname = p.nickname if p else '' if nickname == nickname_or_emailprefix or \ username.split('@')[0] == nickname_or_emailprefix: to_user = username break if to_user: # Send notification to the user if he replies someone else' # message. try: UserNotification.objects.get(to_user=to_user, msg_type='innerpubmsg_reply', detail=innerpub_msg.id) except UserNotification.DoesNotExist: n = UserNotification(to_user=to_user, msg_type='innerpubmsg_reply', detail=innerpub_msg.id) n.save()
def sys_user_admin(request): # Make sure page request is an int. If not, deliver first page. try: current_page = int(request.GET.get('page', '1')) per_page= int(request.GET.get('per_page', '25')) except ValueError: current_page = 1 per_page = 25 users_plus_one = get_emailusers(per_page * (current_page - 1), per_page + 1) if len(users_plus_one) == per_page + 1: page_next = True else: page_next = False users = users_plus_one[:per_page] for user in users: if user.props.id == request.user.id: user.is_self = True try: user.self_usage = seafile_api.get_user_self_usage(user.email) user.share_usage = seafile_api.get_user_share_usage(user.email) user.quota = seafile_api.get_user_quota(user.email) except: user.self_usage = -1 user.share_usage = -1 user.quota = -1 return render_to_response( 'sysadmin/sys_useradmin.html', { 'users': users, 'current_page': current_page, 'prev_page': current_page-1, 'next_page': current_page+1, 'per_page': per_page, 'page_next': page_next, 'CALC_SHARE_USAGE': CALC_SHARE_USAGE, }, context_instance=RequestContext(request))
def sys_user_admin(request): # Make sure page request is an int. If not, deliver first page. try: current_page = int(request.GET.get('page', '1')) per_page = int(request.GET.get('per_page', '25')) except ValueError: current_page = 1 per_page = 25 users_plus_one = get_emailusers(per_page * (current_page - 1), per_page + 1) if len(users_plus_one) == per_page + 1: page_next = True else: page_next = False users = users_plus_one[:per_page] for user in users: if user.props.id == request.user.id: user.is_self = True try: user.self_usage = seafile_api.get_user_self_usage(user.email) user.share_usage = seafile_api.get_user_share_usage(user.email) user.quota = seafile_api.get_user_quota(user.email) except: user.self_usage = -1 user.share_usage = -1 user.quota = -1 return render_to_response('sysadmin/sys_useradmin.html', { 'users': users, 'current_page': current_page, 'prev_page': current_page - 1, 'next_page': current_page + 1, 'per_page': per_page, 'page_next': page_next, 'CALC_SHARE_USAGE': CALC_SHARE_USAGE, }, context_instance=RequestContext(request))
def sys_user_admin(request): """List all users from database. """ # Make sure page request is an int. If not, deliver first page. try: current_page = int(request.GET.get('page', '1')) per_page = int(request.GET.get('per_page', '25')) except ValueError: current_page = 1 per_page = 25 users_plus_one = get_emailusers('DB', per_page * (current_page - 1), per_page + 1) if len(users_plus_one) == per_page + 1: page_next = True else: page_next = False users = users_plus_one[:per_page] last_logins = UserLastLogin.objects.filter( username__in=[x.email for x in users]) if ENABLE_TRIAL_ACCOUNT: trial_users = TrialAccount.objects.filter( user_or_org__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 _populate_user_quota_usage(user) # check user's role if user.role == GUEST_USER: 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.user_or_org == 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() server_id = get_server_id() pro_server = 1 if is_pro_version() else 0 return render_to_response('sysadmin/sys_useradmin.html', { 'users': users, 'current_page': current_page, 'prev_page': current_page - 1, 'next_page': current_page + 1, 'per_page': per_page, 'page_next': page_next, 'CALC_SHARE_USAGE': CALC_SHARE_USAGE, 'have_ldap': have_ldap, 'platform': platform, 'server_id': server_id[:8], 'default_user': DEFAULT_USER, 'guest_user': GUEST_USER, 'enable_guest': ENABLE_GUEST, 'pro_server': pro_server, }, context_instance=RequestContext(request))
def do_emails(self, args_str): args = args_str.split('|', 6) if args[0] == 'ERROR': # notify admins db_users = seaserv.get_emailusers('DB', -1, -1) admins = [] for user in db_users: if user.is_staff: admins.append(user) for u in admins: send_html_email_with_dj_template( u.email, dj_template='notifications/notify_admins_on_archiving_error.html', context = { 'archive_id': args[2], 'error_msg': args[5], }, subject="Error on keeper archiving, archive id: {}".format(args[2]), priority=MAIL_PRIORITY.now ) # notify owner cur_language = translation.get_language() user_language = get_user_language(args[1]) translation.activate(user_language) send_html_email_with_dj_template( args[1], dj_template='notifications/notify_user_on_archiving_error.html', context = { 'email': get_user_name(args[1]), 'repo_id': args[3], 'repo_name': args[4], }, subject="Error on keeper archiving, library id: {}".format(args[3]), priority=MAIL_PRIORITY.now ) translation.activate(cur_language) elif args[0] == 'DONE': # notify owner cur_language = translation.get_language() user_language = get_user_language(args[1]) translation.activate(user_language) md = json.loads(base64.b64decode(args[6])) send_html_email_with_dj_template( args[1], dj_template='notifications/notify_user_on_successfull_archiving.html', context = { 'email': get_user_name(args[1]), 'repo_id': args[2], 'repo_name': args[3], 'version': args[4], 'archive_id': args[5], 'md': md, }, subject="Your library has been successfully archived", priority=MAIL_PRIORITY.now ) translation.activate(cur_language) else: logger.warning("Cannot send email on archiving: unknown status: {}".format(args[0]))
def sys_user_admin(request): """List all users from database. """ # Make sure page request is an int. If not, deliver first page. try: current_page = int(request.GET.get('page', '1')) per_page = int(request.GET.get('per_page', '25')) except ValueError: current_page = 1 per_page = 25 users_plus_one = get_emailusers('DB', per_page * (current_page - 1), per_page + 1) if len(users_plus_one) == per_page + 1: page_next = True else: page_next = False users = users_plus_one[:per_page] last_logins = UserLastLogin.objects.filter(username__in=[x.email for x in users]) if enable_trial_account: trial_users = TrialAccount.objects.filter(user_or_org__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 _populate_user_quota_usage(user) # check user's role if user.role == GUEST_USER: 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.user_or_org == 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() server_id = get_server_id() pro_server = 1 if is_pro_version() else 0 return render_to_response( 'sysadmin/sys_useradmin.html', { 'users': users, 'current_page': current_page, 'prev_page': current_page-1, 'next_page': current_page+1, 'per_page': per_page, 'page_next': page_next, 'CALC_SHARE_USAGE': CALC_SHARE_USAGE, 'have_ldap': have_ldap, 'platform': platform, 'server_id': server_id[:8], 'default_user': DEFAULT_USER, 'guest_user': GUEST_USER, 'enable_guest': ENABLE_GUEST, 'pro_server': pro_server, }, context_instance=RequestContext(request))