def paginate_web_users(request, domain): limit = int(request.GET.get('limit', 10)) page = int(request.GET.get('page', 1)) skip = limit * (page - 1) query = request.GET.get('query') result = ( UserES().domain(domain).web_users().sort('username.exact') .search_string_query(query, ["username", "last_name", "first_name"]) .start(skip).size(limit).run() ) web_users = [WebUser.wrap(w) for w in result.hits] web_users_fmt = [{ 'email': u.get_email(), 'domain': domain, 'name': u.full_name, 'role': u.role_label(domain), 'phoneNumbers': u.phone_numbers, 'id': u.get_id, 'editUrl': reverse('user_account', args=[domain, u.get_id]), 'removeUrl': ( reverse('remove_web_user', args=[domain, u.user_id]) if request.user.username != u.username else None ), } for u in web_users] return JsonResponse({ 'users': web_users_fmt, 'total': result.total, 'page': page, 'query': query, })
def get_users(self, in_data): if not isinstance(in_data, dict): return { 'success': False, 'error': _("Please provide pagination info."), } try: limit = in_data.get('limit', 10) page = in_data.get('page', 1) skip = limit * (page - 1) query = in_data.get('query') web_users_query = self.query_es(limit, skip, query=query) total = web_users_query.get('hits', {}).get('total', 0) results = web_users_query.get('hits', {}).get('hits', []) web_users = [WebUser.wrap(w['_source']) for w in results] self.apply_teams_to_users(web_users) # for roles def _fmt_result(domain, u): return { 'email': u.email, 'domain': domain, 'name': u.full_name, 'role': u.role_label(), 'phoneNumbers': u.phone_numbers, 'id': u.get_id, 'editUrl': reverse('user_account', args=[domain, u.get_id]), 'removeUrl': (reverse('remove_web_user', args=[domain, u.user_id]) if self.request.user.username != u.username else None), } web_users_fmt = [_fmt_result(self.domain, u) for u in web_users] return { 'response': { 'users': web_users_fmt, 'total': total, 'page': page, 'query': query, }, 'success': True, } except Exception as e: return { 'error': e.message, 'success': False, }
def update_subscription_properties_by_domain(domain): domain_obj = Domain.get_by_name(domain) if domain_obj: for row in get_all_user_rows(domain, include_web_users=True, include_mobile_users=False, include_docs=True): web_user = WebUser.wrap(row['doc']) properties = get_subscription_properties_by_user(web_user) update_subscription_properties_by_user.delay( web_user.get_id, properties)
def paginate_web_users(request, domain): def _query_es(limit, skip, query=None): web_user_filter = [ {"term": {"user.domain_memberships.domain": domain}}, ] web_user_filter.extend(ADD_TO_ES_FILTER['web_users']) q = { "filter": {"and": web_user_filter}, "sort": {'username.exact': 'asc'}, } default_fields = ["username", "last_name", "first_name"] q["query"] = search_string_query(query, default_fields) return es_query( params={}, q=q, es_index='users', size=limit, start_at=skip, ) limit = int(request.GET.get('limit', 10)) page = int(request.GET.get('page', 1)) skip = limit * (page - 1) query = request.GET.get('query') web_users_query = _query_es(limit, skip, query=query) total = web_users_query.get('hits', {}).get('total', 0) results = web_users_query.get('hits', {}).get('hits', []) web_users = [WebUser.wrap(w['_source']) for w in results] def _fmt_result(domain, u): return { 'email': u.get_email(), 'domain': domain, 'name': u.full_name, 'role': u.role_label(domain), 'phoneNumbers': u.phone_numbers, 'id': u.get_id, 'editUrl': reverse('user_account', args=[domain, u.get_id]), 'removeUrl': ( reverse('remove_web_user', args=[domain, u.user_id]) if request.user.username != u.username else None ), } web_users_fmt = [_fmt_result(domain, u) for u in web_users] return json_response({ 'users': web_users_fmt, 'total': total, 'page': page, 'query': query, })
def get_users(self, in_data): if not isinstance(in_data, dict): return { 'success': False, 'error': _("Please provide pagination info."), } try: limit = in_data.get('limit', 10) page = in_data.get('page', 1) skip = limit * (page - 1) query = in_data.get('query') web_users_query = self.query_es(limit, skip, query=query) total = web_users_query.get('hits', {}).get('total', 0) results = web_users_query.get('hits', {}).get('hits', []) web_users = [WebUser.wrap(w['_source']) for w in results] self.apply_teams_to_users(web_users) # for roles def _fmt_result(domain, u): return { 'email': u.email, 'domain': domain, 'name': u.full_name, 'role': u.role_label(), 'phoneNumbers': u.phone_numbers, 'id': u.get_id, 'editUrl': reverse('user_account', args=[domain, u.get_id]), 'removeUrl': ( reverse('remove_web_user', args=[domain, u.user_id]) if self.request.user.username != u.username else None ), } web_users_fmt = [_fmt_result(self.domain, u) for u in web_users] return { 'response': { 'users': web_users_fmt, 'total': total, 'page': page, 'query': query, }, 'success': True, } except Exception as e: return { 'error': e.message, 'success': False, }
def _web_user_rows(self, domain): rows = [] for user in get_all_user_rows(domain.name, include_web_users=True, include_mobile_users=False, include_inactive=False, include_docs=True): user = WebUser.wrap(user['doc']) rows.append([ user.full_name, user.username, user.role_label(domain.name), self._format_date(user.last_login), ] + self._domain_properties(domain)) return rows
def get_users(self, in_data): if not isinstance(in_data, dict): return {"success": False, "error": _("Please provide pagination info.")} try: limit = in_data.get("limit", 10) page = in_data.get("page", 1) skip = limit * (page - 1) query = in_data.get("query") web_users_query = self.query_es(limit, skip, query=query) total = web_users_query.get("hits", {}).get("total", 0) results = web_users_query.get("hits", {}).get("hits", []) web_users = [WebUser.wrap(w["_source"]) for w in results] self.apply_teams_to_users(web_users) # for roles def _fmt_result(domain, u): return { "email": u.email, "domain": domain, "name": u.full_name, "role": u.role_label(), "phoneNumbers": u.phone_numbers, "id": u.get_id, "editUrl": reverse("user_account", args=[domain, u.get_id]), "removeUrl": ( reverse("remove_web_user", args=[domain, u.user_id]) if self.request.user.username != u.username else None ), } web_users_fmt = [_fmt_result(self.domain, u) for u in web_users] return {"response": {"users": web_users_fmt, "total": total, "page": page, "query": query}, "success": True} except Exception as e: return {"error": e.message, "success": False}
def obj_get_list(self, bundle, **kwargs): if 'username' in bundle.request.GET: return [WebUser.get_by_username(bundle.request.GET['username'])] return [WebUser.wrap(u) for u in UserES().web_users().run().hits]
def get_active_users(cls): six_months_ago = date.today() - timedelta(days=180) users = UserES().web_users().last_logged_in(gte=six_months_ago).run().hits return [WebUser.wrap(u) for u in users]