commit: 98d9dcd509ab6823e38b3ddbce1f5fc4f3d5a82c
parent ae8a5942cf4da8a6046f5105ab9044f9faa164d6
Author: kaniini <nenolod@gmail.com>
Date: Thu, 17 Jan 2019 19:27:15 +0000
Merge branch '502_instance_stats_active_users_count_fix' into 'develop'
[#502] Fixed `user_count` in `/api/v1/instance` to include only active local users
Closes #502
See merge request pleroma/pleroma!678
Diffstat:
3 files changed, 15 insertions(+), 5 deletions(-)
diff --git a/lib/pleroma/stats.ex b/lib/pleroma/stats.ex
@@ -46,7 +46,7 @@ defmodule Pleroma.Stats do
from(u in User.local_user_query(), select: fragment("sum((?->>'note_count')::int)", u.info))
status_count = Repo.one(status_query)
- user_count = Repo.aggregate(User.local_user_query(), :count, :id)
+ user_count = Repo.aggregate(User.active_local_user_query(), :count, :id)
Agent.update(__MODULE__, fn _ ->
{peers, %{domain_count: domain_count, status_count: status_count, user_count: user_count}}
diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex
@@ -796,7 +796,7 @@ defmodule Pleroma.User do
update_and_set_cache(cng)
end
- def local_user_query() do
+ def local_user_query do
from(
u in User,
where: u.local == true,
@@ -804,7 +804,14 @@ defmodule Pleroma.User do
)
end
- def moderator_user_query() do
+ def active_local_user_query do
+ from(
+ u in local_user_query(),
+ where: fragment("?->'deactivated' @> 'false'", u.info)
+ )
+ end
+
+ def moderator_user_query do
from(
u in User,
where: u.local == true,
diff --git a/test/web/mastodon_api/mastodon_api_controller_test.exs b/test/web/mastodon_api/mastodon_api_controller_test.exs
@@ -1473,8 +1473,11 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do
end
test "get instance information", %{conn: conn} do
- insert(:user, %{local: true})
user = insert(:user, %{local: true})
+
+ user2 = insert(:user, %{local: true})
+ {:ok, _user2} = User.deactivate(user2, !user2.info.deactivated)
+
insert(:user, %{local: false, nickname: "u@peer1.com"})
insert(:user, %{local: false, nickname: "u@peer2.com"})
@@ -1489,7 +1492,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do
stats = result["stats"]
assert stats
- assert stats["user_count"] == 2
+ assert stats["user_count"] == 1
assert stats["status_count"] == 1
assert stats["domain_count"] == 2
end